목록Design Patterns (15)
mojo's Blog
GRASP ※ GRASP- General Responsibility Assignemnt Software Patterns- Craig Larman's 9 principles- OOAD를 사용하여 소프트웨어를 구성하는 일반적인 작업을 의미함도메인 모델을 만들다디자인 모델을 만든다소프트웨어 클래스에 attribute 및 method 를 추가한다객체들 간의 interaction 을 정의한다 ※ Modularity- 시스템을 모듈로 분할하고 컴포넌트 간에 책임을 할당함- 모듈화는 프로그래머가 한 번에 처리해야 하는 전체 복잡성을 줄여줌- 유사한 기능을 함께 그룹화하는 방식으로 모듈에 기능을 할당함 (Separation of Concerns)- 모듈 사이에 작고 단순하며 잘 정의된 인터페이스가 있음 (Informa..
Single Responsibility Principle (SR.P) 클래스는 변경해야 할 이유가 단 하나뿐이여야 한다. ※ Responsibility- 책임이 많아질수록 변화 가능성이 많아짐- 클래스 변경이 많아지면, 버그가 나타날 가능성이 높아짐- 결국 변화는 다른 사람들에게 영향을 줄 수 있음 ※ SR.P- 결합된 책임들을 별도의 클래스로 분리함 SR.P 위반 케이스로 Rectangle 클래스는 두 개의 책임을 가지고 있다. (낮은 응집력)(1) CGA 전용 area() (2) GA 전용 draw()일관된 개념 표현이 아닌, 응집력을 고려하지 않고 필요한 기능을 묶어버렸다.Geometry와 Graphical은 자연스럽게 함께 속하지 않는 것이 맞다. 결합된 책임들을 별도의 클래스로 분리하였다.(..
※ 추상적 데이터 유형 (Abstract Data Type)- 데이터 및 관련 작업을 하나의 구문 단위로 캡슐화- 단일 구문 단위 : 프로그램 구성, 수정 가능성(데이터 구조와 관련된 모든 것) 및 별도의 컴파일을 향상- 캡슐화 : 데이터 표현을 숨김으로써 사용자 코드가 유형 객체에 직접 접근하거나 표현에 의존할 수 없으므로 사용자 코드에 영향을 주지 않고 표현 변경 가능 ※ 상속 (Inheritance)클래스 Y가 클래스 X에 속하는 경우 (Y -> X)- Y는 X의 모든 메서드를 상속함- Y는 X로부터 모든 데이터를 상속받음- 타입 X의 인스턴스가 예상되는 곳 어디서나 Y의 인스턴스를 사용할 수 있음 ※ 다형성 (Polymorphism)작업이 다른 클래스에서 다른 방식으로 수행될 수 있는 객체 ..