[소프트웨어공학]집합연관, 복합현관 인터페이스 그리고 실체화 정리

류명운

·

2015. 4. 17. 15:54

반응형

집합연관(Aggregation)

->하나의 클래스가 여러 개의 컴포넌트 클래스로 구성되어 있는 경우를 뜻함

->전체 클래스와 컴포넌트 클래스로 나뉨

->표기법: 집합 연관은 컴포넌트 클래스와 전체 클래스를 선으로 잇고, (빈 마름모꼴)을 전체 클래스 쪽에 붙여서 나타낸다


집합연관에 대한 제약

->집합연관에 속해 있는 컴포넌트들이 (Or)관계에 놓일 때도 있다.

->두 컴포넌트 중 하나만이 전체를 구성하는 일부가 될 수 있다.

 ex) 어떤 식당의 경우, 한 끼 식사를 수프 혹은(or) 샐러드, 그리고 메인 코스와 디저트로 구성하여 내놓는다.


복합연관(Composition)

->복합체(Composite)는 (강한 집합연관에 의해 만들어진 클래스)이다.

->복합체에서 각 컴포넌트 클래스는 오직 하나의 전체 클래스에만 속할 수 있다.

->표기법: 집합연관과 같으나, (채워진 마름모꼴)을 쓰는 것만 다르다.

->복합연관에서는 각각의 컴포넌트가 클래스가 (직 하나의 전체 클래스만)을 구성하며, (안이 채워진 마음모꼴)을 사용하여 나타낸다.

 ex) 커피테이블(전체클래스), 컴포넌트:몸체(1), 다리(4)


복합체 구조 다이어그램(Composite Structure Diagram)

->클래스의 내부 구조를 보여주기 위해 사용

->표기법: 클래스의 컴포넌트를 나타낼 때 전체 클래스 사각형 안에 다이어그램을 그려 준다.

 ex) 의상실에서 셔츠를 만드는 과정

->셔츠(Shirt)는 전체 클래스를 나타내는 사각형으로 그려졌고, 이 내부에 다이어그램이 들어 있다. 내부의 다이어그램에는 셔츠의 각 컴포넌트끼리 어떤 관계를 가지고 있는지가 나타나 있다.


인터페이스와 실체화(Interface and Realization)

인터페이스

->클래스의 일정한 행동(behavior)을 나타내는 오퍼레이션의 집합으로써, 다른 클래스에서 사용될 수 있다.

->클래스는 두 개 이상의 인터페이스를 실체화할 수 있고, 인터페이스는 두 개 이상의 클래스로부터 실체화될 수 있다.

->표기법: 사각형안에 키워드로 인터페이스임을 알리고, 이름을 적는다. 그 후 클래스와 인터페이스를 실선으로 이어주면 된다.

ex) 세탁기가 세탁에 관련된 모든 오퍼레이션에 조절 손잡이의 오퍼레이션을 전달함으로써 실제(real) 행동이 발생하게 된다.

실체화

->UML에서는 세탁기의 행동 중 일부가 조절 손잡이의 행동을 "실체화(realize)"한 것이라고 말한다.

->클래스와 인터페이스가 가지는 이러한 관계를 실체화 관계라고 한다.

(인터페이스를 통한 클래스와의 상호 관계를 모델링하기 위해 의존 관계 기호를 사용

(UML 2.0에서 간단히 인터페이스 기호와의 관계를 나타내기 위한 공과 소켓 표기법)


인터페이스와 포트

->클래스와 인터페이스의 연결 단자

->클래스 아이콘의 가장자리에 (작은 사각형) 모양을 하고 있고, 인터페이스와 연결되어 있는 단자를 (포트)라고 한다.


가시성(Visibiity)

->속성과 오퍼레이션에 적용되는 것으로, 해당 클래스(혹은 인터페이스)의 속성과 오퍼레이션을 들여다 볼 수 있는 범위를 말한다.

->인터페이스를 실체화하기 위해서는 인터페이스 안에 설정된 오퍼레이션들이 모두 public 가시성을 가지고 있어야 한다.

->public(+) : 다른 클래스가 마음껏 사용할 수 있다.  ex)자동차:엑셀밟기,브레이크밟기 / 텔레비전:볼륨바꾸기,채널바꾸기

->protected(#) : 원래 클래스와 여기서 상속받은 클래스만이 사용할 수 있다.  ex)자동차:주행거리올리기 

->private(-) : 원래의 클래스만이 사용할 수 있다.  ex)텔레비전:화면에그림뿌리기


스코프(Scopte)[범위]

인스턴스 스코프(instance scope): 각각의 인스턴스에 속한 속성과 오퍼레이션들이 각자의 값을 가지도록 되어 있다

클래스 스코프(class scope): 해당 클래스에 대해 유일한 속성값과 오퍼레이션 값을 가진다


퀴즈

 1. 집합연관과 복합연관의 차이는 무엇일까?

 ->복합체에서 각 컴포넌트 클래스는 오직 하나의 전체 클래스에만 속할 수 있다. / 집합연관은 빈 마름모꼴, 복합연관은 진한 마름모꼴로 표기.


 2. 실체화란 무엇인가? 상속과 무엇이 비슷하고, 무엇이 다른가?

 ->클래스와 인터페이스가 가지는 관계 / 실체화는 물리적인 속성은 물려주지 않으나, 행동을 배운다.


 3. 인터페이스를 통한 상호 작용은 어떻게 표현할까?

 ->클래스: 점선으로 인터페이스와 이으고, 인터페이스 부분에 빈 화살표를 붙임 / 사용자: 의존 관계 기호를 사용하여 인터페이스에 이은다 / 그 외에도 공과 소켓의 표기법을 사용해도 된다.


 4. 가시성을 설정하는 세 가지를 들고, 각각에 대해 설명해 보자.

 ->public(+) 해당 클래스(또는 인터페이스)의 속성와 오퍼레이션에 접근이 가능하다.

 ->protected(#) 해당 클래스와 상속받은 자손만 속성과 오퍼레이션에 접근이 가능하다.

 ->private(-) 해당 클래스만 사용이 가능하다.

반응형