본문 바로가기

클린한 코드/OOP

객체지향 4대 특성

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