[소프트웨어공학]관계 개념 정리
류명운
·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. 수식자의 효과는 어떤 것일까?
->파티의 문지기는 손님으로부터 초대손님명단(수식자)을 확인할 수 있다.
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[소프트웨어공학]중간고사 시험 정리 (0) | 2015.04.17 |
---|---|
[소프트웨어공학]집합연관, 복합현관 인터페이스 그리고 실체화 정리 (0) | 2015.04.17 |
[소프트웨어공학]객체지향 개념 정리(2/2) (0) | 2015.04.17 |
[소프트웨어공학]객체지향 개념 정리(1/2) (0) | 2015.04.16 |
[소프트웨어공학]UML 다이어그램 종류 및 설명 (1) | 2015.04.16 |