[디자인패턴] 1. 객체지향 모델링 ( OOP Modeling )
1. 모델링(Modeling)
1.1 모델의 역할
- 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토한다.
- 현재의 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화한다.
- 시스템의 구조와 행위를 명세할 수 있으며 시스템을 구축하는 틀을 제공한다.
1.2 모델링을 하기 위한 추상화
- 모델은 추상화에 바탕을 두고 만들어져야한다.
- 추상화는 대상을 표현할 때 대상의 상세한 면을 있는 그대로 다 표현하지 않는다.
- 특정 관점에서 관련이 있는 점은 부각시키고 관련 없는 면은 무시하는 것이 필요하다.
- 예를 들어 대학교 학사지원 업무에서 학생을 모델링한다고 가정해보자.
- 학생의 머리카락 수나 색깔은 학사지원과 무관하기 때문에 추상화에서 제외
- 학생의 학번, 이름, 수강과목은 학사지원 업무에 필수적인 것이기 때문에 무시해서는 안된다.
2. UML
2.1 UML(Unified Modeling Language)
- 모델링을 하려면 모델을 표현해주는 언어가 필요하다.
- 대표적인 모델링 언어로 UML이 있다.
- UML은 요구분석, 시스템 설계, 구현 등의 시스템 개발 과정에서 개발자 사이의 의사소통이 원활하게 이루어지도록 표준화하느 통합 모델링 언어이다.
2.2 UML의 종류
- 구조 다이어그램
- 클래스 다이어그램 : 시스템을 구성하는 클래스들 사이의 관계를 표현
- 객체 다이어그램 : 객체 정보를 표현
- 복합체 구조 다이어그램 : 복합 구조의 클래스와 컴포넌트 내부 구조를 표현
- 배치 다이어그램 : 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현
- 컴포넌트 다이어그램 : 컴포넌트 구조 사이의 관계를 표현
- 패키지 다이어그램 : 클래스나 유즈 케이스 등을 포함한 여러 모델 요소들을 그룹화해 패키지를 구성하고 패키지들 사이의 관계를 표현
- 행위 다이어그램
- 활동 다이어그램 : 업무 처리 과정이나 연산이 수행되는 과정을 표현
- 상태 머신 다이어그램 : 객체 생명주기를 표현
- 유즈 케이스 다이어그램 : 사용자 관점에서 시스템 행위를 표현
- 상호작용 다이어그램
- 순차 다이어그램 : 시간 흐름에 따른 객체 사이의 상호작용을 표현
- 상호작용 다이어그램 : 여러 상호작용 다이어그램 사이의 제어 흐름을 표현
- 통신 다이어그램 : 객체 사이의 관계를 중심으로 상호작용을 표현
- 타이밍 다이어그램 : 객체 상태 변화와 시간 제약을 명시적으로 표현
3. 클래스 다이어그램
3.1 클래스
클래스란 동일한 속성과 행위를 수행하는 객체의 집합이다.
3.2 관계
- 연관 관계(Association)
- 클래스들이 개념상 서로 연결되었음을 나타냄
- 실선이나 화살표로 표시하며 보통은 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일 때 표시
- 일반화 관계(Generalization)
- 객체지향 개념에서는 상속관계라 함
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 이를 IS-A 관계라고 함
- UML에서는 일반화 관계로 모델링
- 속이 빈 화살표를 사용해 표시
- 집합 관계(Composition, Aggregation)
- 클래스들 사이의 전체 또는 부분 같은 관계를 나타냄
- 집약 관계와 합성 관계가 존재
- 의존 관계(Dependency)
- 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 나타냄
- 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같은 매우 짧은 시간만 유지됨
- 점선 화살표를 사용해 표시
- 실체화 관계(realization)
- 책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들의 사이의 관계를 나타냄
- 상속과 유사하게 빈 삼각형을 사용하며 머리에 있는 실선 대신 점선을 사용해 표시