본문 바로가기

소프트웨어 공학

(UML) Class Diagram

훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com

 

Class Diagram


Class Diagram
소프트웨어 공학에서 클래스 다이어그램은
시스템의 클래스, 클래스의 속성, 동작 방식, 객체 간 관계를 표시함으로써
시스템의 구조를 기술하는 정적 구조 다이어그램의 일종이다
-위키백과-

간단히 말해서, 소프트웨어의 객체지향적 설계 틀을 클래스로서 표현하는 것입니다.

 

클래스 다이어그램은 소프트웨어를 디자인할 때 사용합니다.



Class


Class
클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다.
객체를 정의 하기 위한 상태와 메서드로 구성된다. 
-위키백과-

클래스는 속성과 기능으로 구성됩니다.

 

 

 

간단 예시

접근자

1. + public

2. - private

3. # protected

4. ~ package

 

1. 이름 : 명사

 

2/ 속성: 명사

- 클래스의 기본 속성

- 객체도 가능

- 소유격 ex) 자동차'의' 색, 사람'의' 이름 등

- 기술 방법 

접근 단계 이름 : 타입 [= 초기값]의 형태

 

 

3. 기능: 동사

- 해당 클래스의 기능은 해당 클래스의 필드에 접근할 수 있도록 해야 한다 (객체 지향적 설계)

- 기술 방법

접근 단계 이름 (매개변수) : return형



 

클래스 추출하기


소프트웨어를 설계하기 전에 우리는 SRS를 기술하게 됩니다.

이 SRS를 기반으로 소프트웨어를 설계할 때 클래스를 추출하는 방법은 다음과 같습니다.

 

SRS에서 클래스 추출하기
1. SRS를 읽고 정확히 이해하기
2. SRS의 명사에 밑줄 긋기
 모든 명사를 클래스 후보에 추가한다.

3. 불필요한 것 걸러내기

- 두 클래스가 같은 정보를 나타내는 경우

- 관계가 없는 클래스 걸러내기 (실제로 프로그램에서 필요한 것이 아닌 경우)

- 너무 범위가 넓어서 정확한 의도가 보이지 않을 정도인 경우

- 다른 클래스의 속성으로 들어가야 하는 경우

- 기능을 의미하는 경우

- 책임을 의미하는 경우 (학생, 사람 둘 다 있는 경우 학생은? 클래스가 아니라 책임 - 설계에 따라 달라질 수 있음)

- 특정한 값만을 의미하는 경우

- 결괏값인 경우 (다른 클래스들에 의해 생기는 결과인 경우)



 

Class Diagram 만들기


이미지 출처 : sparxsystems.com/resources/tutorials/uml2/class-diagram.html

클래스 다이어그램 예시

 

클래스 다이어그램은 클래스 간 어떤 관계를 맺고 있는지 명시한 것입니다.


Relationship

기본 연결선

 

위(의존성 작음) -> 아래(의존성 큼)

1. dependency

방향이 없으면 서로 dependency

서로 자료를 주고받는 사이 (메서드 호출하고)

서로 그 객체가 특정 어떤 객체인지 중요치 않음
(기능이 작동하고 데이터를 주고받는 것만 중요)

생략하기도 한다.

2. association 

오래 지속되거나 영구적인 관계.
함께 DB에 저장되어야 하는 등의 경우

dependency와 달리 특정 객체인지 신경 써야 한다.

특정 객체끼리 관계를 맺는 경우

예) 고객과 은행 계좌, 승객과 비행기 티켓
(특정 고객과 특정 은행계좌)

3. aggregation

일부분인 경우, 구성 요소인 경우의 관계
예) 점 -> 도형

association vs. aggregation
연관 객체 없이 존재할 수 없다면 aggregation이 맞다.
4. composition

aggregation보다 강한 연관관계인 경우
매우 종속적이어서 연결한 객체가 없어질 경우 함께 사라지는 경우
예) 채우기 패턴 -> 도형
JPA의 cascadeType.REMOVE와 비슷한 경우

aggregation vs. composition
점은 도형이 없어져도 존재가 가능하지만, 채우기 패턴은 불가능
5. inheritance

상속 관계
매우 강한 연관관계

 

복수성 표현

 

클래스가 연결된 선 양쪽 끝에 서로 기술해줍니다.
1 - 하나

0..* 없거나 많음

0.. 1 없거나 있거나

m.. n m부터 n개까지 가능

 

제약

 

제약이 있는 쪽에 표시해줍니다.
{ordered} 정렬 여부
{xor} 상호 배타적
{group by}
{order by}
{contain}
{contained} 등