|테드| 2021. 8. 6. 22:13

1. 객체지향 프로그래밍

  • Java는 객체지향 언어
  • 등장 배경 : 프로그램의 규모가 커지면서 필요성이 대두됨
  • 프로그램의 동작을 쪼개서 객체들이 나눠서 수행함

2.  객체지향의 특성

  • 캡슐화
    • 기능을 수행하는 단위로 완전함을 갖는다.
    • 정보의 은닉이 가능하다. 객체의 정보를 객체 외부에서 접근하지 못 하게 할 수 있다.
    • 접근 지정자
      • private : 객체 내부에서만 접근 가능
      • protected : 상속한 객체에서도 접근 가능
      • (friendly) : 같은 패키지 내에서 접근 가능 (기본 지정자이다)
      • public : 모두 다 접근 가능

 

  • 상속
    • 부모 객체 -> super  [추상]
    • 자식 객체 -> this    [구체]
    • 상속은 공통된 기능을 여러 객체에 전달하고 싶을 때 사용하는 것이 아니라, 추상과 구체로 분리하기 위해 사용한다.

 

  • 추상화
// 의미적 추상체
class Login {
    void login() {}
}

class KakaoLogin extends Login {
    void login() {}
}
// 추상기능을 가진 객체
abstract class Login {
    abstract void login();
}

class KakaoLogin extends Login {
    void kakao() {}
    @Override void login() {}
}
// 객체 자체가 추상적 = interface = 모든 메서드가 추상 메서드이다
interface Login {
    void login();
}

class KakaoLogin implements Login {
    void kakao() {}
    @Override void login() {}
}
  • 다형성
    • 여러가지의 타입으로 표현할 수 있다.
class KakaoLogin implements Login {
    void kakao() {}
    @Override void login() {}
}

interface Portal {
    void portal();
}

class NaverLogin implements Login, Portal {
    void naver() {}
    @Override void login() {}
    @Override void portal() {}
}

//부모 객체는 자식 객체를 담을 수 있다.
//자식 객체는 부모 객체를 담을 수 없다.
KakaoLogin k = new KakaoLogin();
Login k = new KakaoLogin();

//-----------------------------------

Login login = new Login();
Login login = new KakaoLogin();
Login login = new NaverLogin();
login.login();

Portal potal = new NaverLogin();
potal.portal();

3. 객체를 잘 나누고 연관시키는 방법

  • 객체지향 설계를 하는 5가지 원칙
    • SOLID
    • SRP(Single Responsibility Principle) 단일책임 원칙 : 객체는 하나의 책임만을 가져야 한다.
    • OCP(Open Closed Principle) 개방 폐쇄 원칙 : 수정에는 닫히고 확장에는 열어라. 즉 객체를 수정하기 보다는 상속등을 이용하여 기능 추가 등 확장해야 한다.
    • LSP(Liskov Substitution Principle) 리스코프 치환 원칙 : 추상성이 높은 객체에 추상성이 낮은 객체를 이용해도 아무 문제가 없어야 한다.
    • ISP(Interface Segregation Principle) 인터페이스 분리 원칙 : 객체는 자신이 이용하는 메서드에 의존하지 않아야 한다.
    • DIP(Dependency Inversion Principle) 의존 역전 원칙 : 의존 관계를 맺을 때 변하기 쉬운 것 보다 변하기 어려운 것에 의존을 해야한다.
  • 디자인 패턴 23가지 : SOLID를 적용하여 자주 쓰이는 패턴들을 정리한 것
 

[과제] 디자인 패턴

 

taengsw.tistory.com

 

728x90
반응형