728x90
객체지향의 4대 특성에는 아래가 있습니다.
- 캡슐화: 정보 은닉
- 상속: 재사용
- 추상화: 모델링
- 다형성: 사용 편의
각각의 특성에 대해서 살펴보겠습니다.
추상화 - 모델링
- OOP의 추상화는 모델링이라고 할 수 있습니다.
- 클래스 설계에서 추상화가 사용됩니다.
- 클래스 설계를 위해서는 애플리케이션 경계부터 정해야 합니다.
- 객체 지향에서 추상화의 결과는 클래스입니다.
추상화 = 모델링 = 자바의 class 키워드
상속 - 재사용
- 객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것입니다. (부모-자식 관계가 X)
- 객체 지향의 상속은 상위 클래스의 특성을 확장하는 것입니다.
- 객체 지향의 상속은 is kind of 관계를 만족해야 합니다. (즉, 하위 클래스 is kind of 상위 클래스): 하위 클래스는 상위 클래스의 한 분류다라는 의미를 가집니다.
다중 상속
다이아몬드 문제로 다중 상속을 포기하고 대신 인터페이스를 도입한 자바에서 인터페이스는 아래와 같은 관계를 나타냅니다.
- 구현 클래스 is able to 인터페이스 (=구현 클래스는 인터페이스할 수 있다.)
예시
- Serializable: 직렬화할 수 있는
- Cloneable: 복제할 수 있는
- Comparable: 비교할 수 있는
- Runnable: 실행할 수 있는
상위 클래스는 하위 클래스에게 물려줄 특성이 많으면 좋고, 인터페이스는 구현을 강제할 메서드가 적을수록 좋습니다.
(클린코드의 LSP-리스코프 치환 원칙, ISP-인터페이스 분할 원칙)
다형성 - 사용 편의
- 객체 지향에서의 다형성: 오버로딩과 오버라이딩 (오버로딩이 다형성이 아니라는 의견도 존재)
- Animal pingu = new Penguin() 은 상위 클래스 타입의 객체 참조 변수를 사용했지만, 하위 클래스에서 오버라이딩(재정의)한 메서드가 호출됩니다. (주의)
캡슐화 - 정보 은닉
- 정보 은닉: 접근 제어자(public, protected, private, default), 접근자/설정자 메서드
[참고자료]
김종민, [스프링 입문을 위한 자바 객체 지향의 원리와 이해], 위키북스, 2015
728x90
반응형
'클린한 코드 > OOP' 카테고리의 다른 글
객체 지향 설계 5원칙 - SOLID (2) | 2023.11.12 |
---|