티스토리 뷰

Java

객체지향개발 관련 정리

까오기 까오기 2019. 5. 30. 12:41

객체(Object)란 무엇인가?
- 논리적 물리적 대상
- 현실 세계 물체 : 컴퓨터, 핸드폰, 고객, 관리자, 상품 등 
- 개념적/기능적 집합 : 주문, 결제, 매출 등    

객체 구성 요소 
- 속성/상태 
- 기능/행위  

객체지향개발(Object Oriented Programming)이란? 
기존 개발 방법
- 절차적/순차적 개발
- 기능 중심의 개발 
- 재사용, 테스트, 중복 제거 어렵다. 
객체지향개발 방법
- 객체 식별 : 속성/상태, 기능/행위에 대한 정의
- 객체를 중심으로 개발한다. 

객체지향개발(Object Oriented Programming)의 주요 특성
- 상속(Inheritance) : 부모의 속성 및 기능을 하위 객체가 사용할 수 있다. 재사용, 유지보수
- 다형성(Polymorphism) : 부모의 속성 및 기능을 하위 객체에서 다르게 사용할 수 있다. 재사용, 확장성
- 캡슐화(Encapsulation) : 접근 제한자를 통해 외부에서 내부의 속성 및 기능을 변경하지 못하게 한다. 

장점
- 재사용성, 유지보수성, 이식성, 확장성, 테스트 용이  

객체지향개발 5대원칙 : SOLID
1. SRP(단일책임의원칙 : Single Responsibility Principle) 
- 하나의 객체는 하나의 책임을 갖는다. 
- 변경에 따른 이유는 오직 하나뿐이어야 한다. 
2. OCP(개방폐쇄의 원칙 : Open Close Principle)
- 외부의 변경에는 닫혀있고 확장은 열려 있어야 한다. 
- 같은 것과 다른 것, 변하는 것과 변하지 않는 것에 대한 구분 필요. 
- 다른 부분, 변하는 부분에 대해서 인터페이스로 구현 필요 
- dependency로 injection 받아 처리하게 설계한다. 
3. LSP(리스코프 치환의 원칙 : The Liskov Substitution Principle)
- 서브 타입은 기반 타입으로 교체할 수 있어야 한다. 
- 동일 인터페이스를 구현하여 이용하게 한다.  
4. ISP(인터페이스 분리의 원칙 : Interface Segregation Principle)
- 하나의 일반적인 인터페이스보다는 여러 개의 구체적인 인터페이스 낫다.
5. DIP(의존성 역전의 원칙: Dependency Inversion Principle)
- 구현체에 의존하지 말고 abstraction에 의존하라.

댓글
댓글쓰기 폼