본문 바로가기
Java/디자인 패턴

[Java/디자인 패턴] 객체지향 원리

by 기록하는_사람 2022. 11. 2.

추상화(abstraction)

📌 추상화(abstraction)

: 공통된 속성을 지닌 것들을 하나로 모으는  것. 

 

캡슐화(encapsulation)

📌 캡슐화(encapsulation)

: 데이터와 데이터를 다루는 방법을 묶는 것.

  정보 은닉을 통해 높은 응집도와 낮은 결합도를 갖도록 함.

 

💡 응집도와 결합도

- 응집도 : 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냄.

- 결합도 : 어떤 기능을 실행하는 데 다른 클래스나 모듈들에 얼마나 의존적인지를 나타냄.

 

💡 정보 은닉

: 외부에서 접근하지 못하게 제한하는 것. 

 

일반화(generalization)

📌 일반화(generalization)

: 여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립하는 것. 

  객체지향 프로그래밍 관점에서 상속성(inheritance)이라고 함. 

  

📌 상속성(inheritance)

: 하나의 클래스가 가지고 있는 특징들을 그대로 다른 클래스가 물려 받는 것.

 

다형성(polymorphism)

📌 다형성(polymorphism)

: 서로 다른 클래스의 객체가 같은 메시지를 받았을 때, 각자 방식으로 동작하는 것. 

 

피터 코드의 상속 규칙

📌 피터 코드의 상속 규칙

: 상속 오용을 막기 위해 만든 규칙.

  5가지 규칙을 모두 만족할 때만 상속을 해야 함.

① 자식 클래스와 부모 클래스 사이는 '역할 수행' 관계가 아니어야 함.

② 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 없어야 함.

③ 자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고, 확장만 수행해야 함.

④ 자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 함.

⑤ 자식 클래스가 역할, 트랜잭션, 디바이스 등을 특수화해야 함. 

'Java > 디자인 패턴' 카테고리의 다른 글

[Java/디자인 패턴] 클래스 다이어그램  (0) 2022.10.31
[Java/디자인 패턴] UML  (0) 2022.10.31

댓글