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