훈수/저작권 관련 지적 환영합니다 - 댓글 또는 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 오래 지속되거나 영구적인 관계. 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} 등 |
'소프트웨어 공학' 카테고리의 다른 글
(UML) Activity Diagram & State Machine Diagram (0) | 2021.04.09 |
---|---|
(UML) Sequence Diagram (0) | 2021.04.09 |
(요구사항 분석) Data Flow Diagram & Use Case Diagram (0) | 2021.03.19 |
Software Process model (0) | 2021.03.12 |
소프트웨어 공학 (0) | 2021.03.05 |