[소프트웨어공학]관계 개념 정리

류명운

·

2015. 4. 17. 03:47

반응형

* 키워드 : 클래스 사이의 연관 / 서브클래스 관계 / 클래스 사이의 의존 관계


연관(Association)

->클래스가 개념적으로 서로 연결되어 있을 때, 이 관계를 연관이라고 부른다.

 ex) 농구팀과 선수, "한 선수가 한 팀에서 뛴다(plays on)

 ex) 연관 관계 내에서의 역할을 표시(고용자와 피고용자의 관계)

->같은 다이어그램 클래스 사이에 두 개의 연관

->여러 개의 클래스가 하나의 클래스와 연관


연관에 대한 제약

->두 클래스 사이에 연관관계가 어떠한 규칙을 따라야 할 경우

 ex) 은행원과 고객, 은행원은 고객이 창구에 나온 순서(order)대로 은행 업무를 도와준다.

->두 개의 연관선 사이를 점선으로 잇고 이 위에 {or}로 표기하는 Or 관계

 ex) 고등학생들이 진로를 정하는데(choose) 있어서 학문적인(academic) 코스 또는 상업적인(commercial) 길을 선택할 수 있다는 상황


연과 클래스

->연관은 클래스와 같이 속성과 오퍼레이션을 가질 수 있다.

->속성과 오퍼레이션을 가진 연관연관 클래스(association class)라는 이름으로 따로 구분한다.

->클래스와 동일하게 네모칸으로 그리며 연관선과 이으려면 점선을 사용한다.

->연관 클래스도 다른 클래스에 대하여 연관을 가질 수 있다.

 ex) Player와 Team 사이의 Plays on 연관에 대한 연관 클래스를 보이고 있다. 여기서 연관 클래스는 contract(계약)이며, 이 연관 클래스는 GeneralManager(구단주) 클래스와도 연관되어 있다.


링크

->객체가 클래스의 인스턴스인 것처럼 연관은 링크라는 인스턴스를 갖고 있다.

->클래스가 아닌, 객체 사이를 연결한 것을 말한다

->객체 이름과 마찬가지로 링크 이름에도 밑줄을 긎는다


다중성

->연관 관계에 있는 두 클래스 사이에서 한 클래스의 객체와 관계를 가질 수 있는 다른 클래스의 객체 개수

->표기법 :해당 클래스 가까이(연관선 위)에 객체의 수를 써준다.

->다중성의 종류별 표기법


수식 연관

->일 대 다(one-to-many)의 다중성을 가진 연관 관계에서는 한 객체가 특정한 객체를 가려내야 하는 상황(lookup)이 발생한다. 

->식별 정보가 필요한데 이것을 수식자(qualifier)라고 하여 작은 사각형으로 나타내고, "1"을 의미하는 클래스 옆에 붙게 된다. 이렇게 수식자가 추가가되면 수식자와 다의 객체는 1대 1의 관계가 성립한다.


반사 연관

->클래스가 자기 자신과 연관 관계를 가지는 것을 뜻한다.

->여러 가지 역할을 맡을 수 있는 객체를 가지고 있을 때 발생한다.

 ex) 탑승자(CarOccupant)는 운전자(Driver)도 될 수 있고, 승객(passenger)도 될 수 있다.


상속(Inheritance)과 일반화(Generalization)

->객체지향에서의 상속의 개념을 UML에서는 일반화라고 한다. 상속=일반화

->표기법: 슈퍼클래스(부모)를 향하는 빈 화살표로 이어준다. 

->상속받은 속성과 오퍼레이션은 서브클래스의 사각형에 써주지 않는다.

->단 하나의 슈퍼클래스를 가지는 상속을 단일 상속(single inheritance)이라고 부르며, 두 개 이상의 슈퍼클래스를 가지는 상속은 다중 상속(multiple inheritance)이라고 부른다.

* 슈퍼클래스를 가지지 않는 클래스는 기본 클래스(base class) 또는 루트 클래스(root class)라고 하며, 서브클래스를 가지지 않는 클래스는 리프 클래스(leaf class)라고 한다.


상속 관계를 정하는 방법

->속성과 오퍼레이션의 일반성을 찾아내어 다른 클래스에 적용할 수 있는지를 생각해본다.

->두 개 이상의 클래스가 속성과 오퍼레이션을 공통적으로 가질 수 있는 상황인지


추상 클래스(Abstract class)

->객체를 제공하지 않는 클래스(추상적인 클래스)

->이탤릭체로 쓴다(기울기)

 ex) Player와 ,Clock은 객체를 제공하지 않는(인스턴스를 만들기 위한게 아닌) 추상 클래스이다.


의존 관계

->한 클래스가 다른 클래스를 사용하는 관계 중 하나.

->다른 클래스를 사용하는 오퍼레이션의 시그너처를 보일 때

->표기법 : 의존 관계를 갖는 클래스를 향해 화살표가 달린 점선을 이어준다.


클래스 다이어그램과 객체 다이어그램

클래스 다이어그램: 클래스의 특성과 속성, 다른 클래스와의 연관같은 일반적인 정보를 알려준다.

객체 다이어그램: 클래스의 특정한 인스턴스 정보와 그 객체가 현재 어떠한 상황에 처해 있는지를 보여준다.

 ex) 체스 게임의 한 부분에서 "체스 말의 클래스 다이어그램"

 ex) 체스 게임의 한 부분에서 "체스 상황을 모델링한 객체 다이어그램"



요약 

관계: 클래스 사이의 의미가 어떻게 연결되는 지를 나타냄

연관: 클래스 사이의 기본적인 개념연결을 나타냄

역활: 연관관계에 있는 각 클래스가 갖는 역할

다중성: 한쪽 클래스의 객체가 다른 쪽 클래스의 객체와 어떤 수적 관계를 가지고 연관이 되는지 나타냄

연관 클래스: 어떤 연관에 대한 속성과 오퍼레이션을 갖는 클래스

상속: 속성과 오퍼레이션을 물려받음(일반화), 선과 빈 화살표로 표시

추상 클래스: 상속의 기본이 되는 클래스로만 사용(객체로 사용x)

의존 관계: 오퍼레이션이 다른 클래스와 의존관계를 맺는 것(점선과 화살표로 이음)


퀴즈

1. 다중성은 어떻게 나타낼까?

->각 클래스의 근처 선위에 숫자로 표기해줌, ex) 1 1, 1 *, 1 2..5, 


2. 상속 관계는 어떻게 정할까?

->부모클래스와 자식클래스로 정한다. 자식들의 공통된 속성과 오퍼레이션을 갖고있는 클래스가 부모클래스가 된다.


3. 추상 클래스란 무엇인가?

->상속의 용도로 사용되는 interface를 제공하는 클래스를 말한다. 인스턴스화 될 필요가 없는 클래스이다.


4. 수식자의 효과는 어떤 것일까?

->파티의 문지기는 손님으로부터 초대손님명단(수식자)을 확인할 수 있다.

반응형