X

객체지향 설계원칙 (Object Oriented Model)

1. Object Oriented Paradigm, 객체지향 설계원칙

(1) 객체지향 설계원칙 개념

  • 객체, 클래스 간 높은 응집도, 낮은 결합도 기반 모델 구축 소프트웨어 설계원칙

(2) 객체지향 설계원칙 특징

특징 세부 설명
캡슐화
(Encapsulation)
– 관련 Data, Operation을 부분적 공개
– 접근 제한 및 시스템 영향 최소화
추상화
(Abstraction)
– 공통 속성이나 기능을 묶어 명명
– 클래스를 이용하여 추상 모델 생성
다형성
(Polymorphism)
– 동일한 외부 명령을 다른 방식으로 수행
– Method Overriding, Overloading
정보 은닉
(Info. Hiding)
– 객체의 세부 내용을 외부에 숨김
– 메시지만으로 객체와의 상호작용
상속
(Inheritance)
– 상위 수준의 특성을 하위 수준 이어받음
– 기 정의 클래스 재사용, 확장 지원

2. 객체지향설계 5대 원칙

(1) SRP (Single Responsibility Principle, 단일 책임 원칙)

구분 세부내용
개념 – 하나의 모듈, 메서드는 하나의 역할만 수행
기존
설계
원칙
적용

(2) OCP (Open Close Principle, 개방 폐쇄 원칙)

구분 세부내용
개념 – 변화 부분은 확장에 맡기고 불변 부분만 제공
– 공통속성 추출, 추상 클래스 디자인, 상속 후 구현
– 클래스 변경에 따른 코드 변경/영향 최소화
기존
설계
원칙
적용

(3) LSP (Liskov Substitution Principle, 리스코프 치환 원칙)

구분 세부내용
개념 – 자식들은 부모 타입 사용하는 곳에 대체 가능
– Overriding, Overloading, 부모클래스와 동일이름
설계
원칙
적용

(4) ISP (Interface Segregation Principle, 인터페이스 분리)

구분 세부내용
개념 – 하나의 인터페이스는 하나의 기능
– 공유 인터페이스 재사용 극대화
기존
설계
원칙
적용

(5) DIP (Dependency Inversion Principle, 의존관계 역전 원칙)

구분 세부내용
개념 – 의존 대상은 파생클래스가 아닌 추상 클래스
– Interface에 의한 프로그래밍, 객체 간 연동
기존
설계
원칙
적용

3. 객체지향 설계 5대 원칙 활용 및 역할

  • 개발 위한 원칙이 아닌 설계 원칙
  • 클래스 간 낮은 의존성, 파생 클래스 활용도 극대화
  • 부모 클래스를 상속받아 최대한 활용하도록 설계
  • 객체지향 특징, 장단점 파악, 적절히 Trade-off

 

[참고]

도리: