sungwony

[디자인패턴] 디자인패턴 입문 - OOP&UML 본문

development/디자인패턴

[디자인패턴] 디자인패턴 입문 - OOP&UML

일상이상삼상 2018. 7. 11. 15:03

객체지향 모델링


- 객체지향에 기반한 소프트웨어의 모델을 객체지향 모델이라고 하고, 모델을 만드는 과정을 모델링이라고 한다

- 소프트웨어 시스템 또는 앞으로 개발할 소프트웨어의 원하는 모습을 가시화하는데 도움을 준다.

- 소프트웨어 개발시 모델을 통해 서로의 해석을 공유해 합의에 이루거나 해석의 타당성을 검토할 수 있다.

- 모델링은 추상화에 바탕을 두어야 한다.(필요한 부분과 불필요한 부분을 관점에 따라 구분)


객체지향 원리


- 추상화 : 사물의 공통된 특징, 추상적 특징을 파악해 인식의 대상으로 삼는 행위

- 캡슐화 : 정보은닉을 통해 높은 응집도와 낮은 결합도를 갖도록 하는 행위

- 일반화(generalization)

  : 객체지향 프로그래밍의 상속 관계(is a kind of)

   일반적으로 속성이나 기능의 재사용을 강조해서 사용하는 경우가 많지만 이는 극히 한정된 시각이다.

   일반화란 "여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정" (ex : 오렌지, 사과. 배 -> 과일)

   일반화와 반대가 되는 말로는 특수화(specialization)가 있다. (ex : 과일 -> 오렌지)

   일반화 관계는 자식 클래스를 외부로부터 은닉하는 캡슐화의 일종이다.

- 다형성(polymorphism)

  : '서로 다른 클래스의 객체가 같은 메시지를 받았을 대 각자의 방식으로 동작하는 능력'

- 피터 코드의 상속 규칙

  : 자식 클래스와 부모 클래스 사이는 '역할 수행(is role played by)' 관계가 아니어야 한다.

    한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 절대 없어야 한다.

    자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.

    자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 한다.

    자식 클래스가 '역할(role)', '트랜잭션(transaction)', '디바이스(device)' 등을 특수화(specialization) 해야 한다.


UML(Unified Modeling Language)


- 시스템을 시각화하거나 요구 사항 명세서(specification) 또는 설계(design)을 문서화하기 위한 언어이다.


분류 

다이어그램 유형 

목적 

 구조 다이어그램

(structure diagram)

 클래스 다이어그램(class diagram)

 시스템을 구성하는 클래스들 사이의 관계를 표현한다.

 객체 다이어그램(object diagram)

 객체 정보를 보여준다.

 복합체 구조 다이어그램(composite structure diagram)

 복합 구조의 클래스와 컴포넌트 내부구조를 표현한다.

 배치 다이어그램(deployment diagram)

 소프트웨어, 하드웨어, 네트워크를 포함한 

 실행 시스템의 물리 구조를 표현한다.

 컴포넌트 다이어그램(component diagram)

 컴포넌트 구조 사이의 관계를 표현한다.

 패키지 다이어그램(package diagram)

 클래스나 유즈 케이스 등을 포함한 여러 모델 

 요소들을 그룹화해 패키지를 구성하고 패키지

 사이의 관계를 표현한다.

 행위 다이어그램

(behavior diagram)

 활동 다이어그램(activity diagram)

 업무 처리 과정이나 연산이 수행되는 과정을 표현한다.

 상태 머신 다이어그램(state machine diagram)

 객체의 생명주기를 표현한다.

 유즈 케이스 다이어그램(use case diagram)

 사용자 관점에서 시스템 행위를 표현한다.

 상호작용 다이어그램

 (interaction diagram)

 순차 다이어그램(sequence diagram)

 시간 흐름에 따른 객체 사이의 상호작용을 표현한다.

 상호작용 개요 다이어그램

 (interaction overview diagram)

 여러 상호작용 다이어그램 사이의 제어 흐름을 표현한다.

 통신 다이어그램

 (communication diagram)

 객체 사이의 관계를 중심으로 상호작용을 표현한다.

 타이밍 다이어그램(timing diagram)

 객체 상태 변화와 시간 제약을 명시적으로 표현한다.


클래스 다이어그램