디자인 패턴 - 객체지향 모델링

JAVA 객체 지향 디자인 패턴 책을 정리.

모델링

  • 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토한다.
  • 현재 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화한다.
  • 시스템의 구조와 행위를 명세할 수 있으며 시스템을 구축하는 틀을 제공한다.

UML

모델링을 하기 위한 언어.

요구 분석, 시스템 설계, 시스템 구현 등의 시스템 개발 과정에서 개발자 사이의 의사 소통이 원활하게 이루어지도록 표준화한 통합 모델링 언어이다.

클래스 다이어그램

시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 대표적인 UML 구조 다이어그램.

시스템을 구성하는 클래스와 그들 사이의 관계를 보여준다.

클래스

동일한 속성과 행위를 수행하는 객체의 집합.

UML에서 클래스는 이렇게 표시한다.

-, + 같은 기호는 가시화(visibility)를 정의한 것이다. 외부에 속성과 연산을 어느 정도 공개하느냐에 따라 달라진다.

보통 접근 제어자로 나타낸다.

접근 제어자 표시 설명
public + 어떤 클래스의 객체에서든 접근 가능
private - 이 클래스에서 생성된 객체들만 접근 가능
protected # 이 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스의 객체들만 접근 가능
package ~ 동일 패키지에 있는 클래스의 객체들만 접근 가능

관계

객체지향 시스템도 여러 개의 클래스가 서로 긴밀한 관계를 맺어 기능을 수행한다.

UML에서 제공하는 클래스들 사이의 관계

관계 설명
연관 관계
(association)
클래스들이 개념상 서로 연결되었음을 나타낸다. 실선이나 화살표로 표시하며 보통은 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일 때 표시한다.
일반화 관계
(generalization)
객체지향 개념에서는 상속 관계라고 한다. 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 이를 IS-A 관계라고 하며 UML에서는 일반화 관계로 모델링한다. 속이 빈 화살표를 사용해 표시한다.
집합 관계
(composition, aggregation)
클래스들 사이의 전체 또는 부분 같은 관계를 나타낸다. 집약(aggregation) 관계와 합성(composition) 관계가 존재한다.
의존 관계
(dependency)
연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 나타낸다. 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같은, 매우 짧은 시간만 유지된다는 점이다. 점선 화살표를 사용해 표시한다.
실체화 관계
(realization)
책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계를 나타낸다. 상속과 유사하게 빈 삼각형을 사용하며 머리에 있는 실선 대신 점선을 사용해 표시한다.

인터페이스

인터페이스란 책임이다. 어떤 객체의 책임이란 객체가 해야하는 일로서 해석할 수 있고, 어떤 경우에는 객체가 할 수 있는 일로도 해석할 수 있다. 즉, 객체가 외부에 제공하는 서비스나 기능은 객체가 수행하는 책임으로 보는 것이다.

김땡땡's blog

김땡땡's blog

김땡땡