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

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

가. 객체지향 설계원칙 개념

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

나. 객체지향 설계원칙 특징

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

 

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

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

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

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

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

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

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

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

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

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

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

 

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

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

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^