디자인 패턴

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

728x90

1.1 모델링(Modeling)


소프트웨어 모델(Model) → 소프트웨어 시스템이 원하는 모습 가시화


모델의 역할

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



1.2 UML(Unified Modeling Language)


모델링(Modeling)을 하기 위한 시스템을 모델로 표현해주는 언어.


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

 분류

 다이어그램 유형 

 목적 

 구조 다이어그램

(structure diagram) 

 클래스 다이어그램

 (class diagram)

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

 객체 다이어그램

 (object diagram) 

객체 정보를 보여준다. 

 복합체 구조 다이어그램

 (composite structure diagram)

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

 배치 다이어그램

 (deployment diagram)

소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현한다. 

 컴포넌트 다이어그램

 (component diagram)

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

 패키지 다이어그램

 (package diagram)

클래스나 유즈케이스 등을 포함한 여러 모델 요소들을 그룹 화해 패키지를 구성하고 패키지들 사이의 관계를 표현한다. 

 행위 다이어그램

(behavior diagram)

 활동 다이어그램

 (activity diagram)

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

 상태 머신 다이어그램

 (state machine diagram)

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

 유즈 케이스 다이어그램

 (use case diagram)

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

 상호작용 다이어그램

 (interaction diagram) 

 순차 다이어그램

 (sequence diagram)

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

 상호작용 개요 다이어그램

 (interaction overview diagram)

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

 통신 다이어그램

 (communication diagram)

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

 타이밍 다이어그램

 (timing diagram)

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



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


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


1.3.1 클래스(Class)


클래스는 동일한 속성과 행위를 수행하는 객체의 집합.(객체를 생성하는 설계도.)


public class Cat {
 private String name;
 
 public void meow(){
  System.out.println(name + "~~~~"+"웁니다");
 }
 
 public Cat(String name){
  this.name = name;
 }
}


위 코드는 Cat 클래스를 고양이를 만들어내는 설계도라고 생각하자. 이 설계도로부터 실제 고양이를 만들려면 다음과 같이 New 연산자를 사용하면 된다.

Cat cat1 = new Cat("냥냥");
Cat cat2 = new Cat("냥냥");


고양이를 울게하려면 

cat1.meow();
cat2.meow();


UML에서는 그림과 같이 세 부분으로 나누어진 박스로 클래스를 표현한다.


가장 윗부분은 클래스 이름을, 중간 부분에는 클래스의 특징을 나타내는 속성을 마지막 부분에는 클래스가 수행하는 연산들을 기술한다.