일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- generics
- javac
- JIT
- HeapArea
- jdk
- 상속관계
- 바이트코드
- StackArea
- Compiler
- 참조변수
- 42seoul
- 이노베이션아카데미
- MethodArea
- 도커네트워크
- JVM
- 운영체제
- abstract
- SRP
- Operating System
- 라피신
- classloader
- RDD
- 자바컴파일러
- 포함관계
- 제네릭스
- LSP
- la-piscine
- pg_hba.conf
- 42서울
- java
- Today
- Total
while(1) 작심삼일();
객체지향 설계 기법 본문
객체지향의 목적은 사용자의 요구를 만족시킬 수 있는 기능을 제공함과 동시에 이해하기 쉽고, 단순하며, 유연한 상호작용을 제공하는 객체들의 공동체를 구축하는 것이다.
이에 따라
객체지향의 설계는 애플리케이션의 기능을 구현하기 위한 협력 관계를 고안하고, 협력에 필요한 역할과 책임을 식별한 후 이를 수행할 수 있는 적절한 객체를 식별해 나가는 과정이다 => 올바른 책임을 올바른 객체에게 할당한다.
책임-주도 설계
시스템의 기능은 더 작은 규모의 책임으로 분할되고, 각 책임은 책임을 수행할 적절한 객체에게 할당된다. 객체가 책임을 수행하는 도중에 스스로 처리할 수 없는 정보나 기능이 필요한 경우 적절한 객체를 찾아 필요한 작업을 요청한다. 요청된 작업을 수행하는 일은 이제 작업을 위임받은 객체의 책임으로 변환된다. 이러한 행위가 결과적으로 객체들 간의 협력 관계가 된다.
결국, 개별적인 객체의 상태가 아닌, 객체의 책임과 상호작용에 집중을 하는 것이다. 시스템은 스스로 자신을 책임질 수 있을 정도로 충분히 자율적인 동시에 다른 객체와 협력할 수 있을 정도로 충분히 협조적인 객체들로 이뤄진 구조를 구성하게 된다.
디자인 패턴
반복적으로 발생하는 문제와 그에 해당하는 해결방안의 쌍으로 정의된다. 패턴은 문제가 무엇인지에 대해 명확하게 서술하고, 패턴을 적용할 수 있는 상황과 적용할 수 없는 상황을 함께 설명한다. 반복해서 일어나는 특정한 상황에서 어떤 설계가 왜 더 효과적인지에 대해 이유를 설명한다. 쉽게 정리하자면, 공통으로 사용할 수 있는 역할, 책임, 협력의 템플릿이기에 해당 상황에서 적용 가능한 디자인 패턴에 대해 잘 알고 있다면 책임-주도 설계의 절차를 따르지 않고도 빠르고 쉽게 관계들을 알아낼 수 있을 것이다. 디자인 패턴의 종류는 정말 많기에 추후에 개별적으로 학습해볼 예정이다.
테스트-주도 개발
실패하는 테스트를 작성하고, 해당 테스트를 통과하는 가장 간단한 코드를 작성한 후, 리팩토링을 통해 중복을 제거하는 방식이다. 책임을 수행할 객체 또는 클라이언트가 기대하는 객체의 역할이 메시지를 수신할 때 어떤 결과를 반환하고 그 과정에서 어떤 객체와 협력할 것인지에 대한 기대를 코드의 형태로 작성하는 것이기에, 책임-주도 설계의 기본 개념을 따른다. 그리하여 테스트-주도 개발은 책임-주도 설계의 기본 개념과 다양한 원칙과 프랙티스, 패턴들을 종합적으로 이해하고 좋은 설계에 대한 감각과 경험을 길러야 적용할 수 있는 설계기법이다.
'CS > java' 카테고리의 다른 글
JVM 메모리 구조 (0) | 2021.04.28 |
---|---|
JDK, JRE, JVM (0) | 2021.04.27 |
그 외 제어자(static, final, abstract) (0) | 2021.04.27 |
접근제어자 (public, protected, private)과 싱글톤 (1) | 2021.02.16 |
SOLID(객체 지향의 설계) 5가지 원칙 (0) | 2021.01.28 |