구조적(정적) 모델링 - 클래스 다이어그램, CRC카드

2022. 10. 25. 08:12

정적 단계의 작업

내부 구조를 클래스 관점에서 표현

유스케이스에서 나타낸 인터랙션 밑에 깔린 자료들이 어떻게 구성되고 표현되는지 설명

 

● 클래스 찾기

도메인 안에 있는 개념적 엔티티를 파악

개념적 엔티티 : 시스템에서 정보를 처리해야 할 대상, 자료를 보관하고 처리하는 동작

클래스가 무엇이냐에 따라 시스템의 골격과 내부 인터랙션이 달라짐

 

● 속성 찾기

클래스로 추상화된 엔티티가 가지는 자료

 

● 관계와 연관찾기

클래스는 혼자서만 존재 할 수 X

다른 엔티티와 어떻게 연관되어 있으며 모델 안에서 기술된 관계로 반영

 

클래스 다이어그램

정적모델링의 결정체

클래스 + 클래스 안의 내용 + 클래스들 사이의 관계 나타냄

 

프로그램의 구조를 잘 나타내고 있어 코딩 작업 근간

  • 클래스 내부 정의
  • 오퍼레이션 정의
  • 클래스 사이의 인터렉션에 사용되는 인터페이스 정의
  • 클래스 사이의 관계를 나타낸 연관

 

클래스 : 시스템 안에 자료를 담고 있는 단위

 


구조적(정적) 모델

시스템 내부의 관점, 특히 구조라는 관점의 뷰

어떤 구성요소가 있고 이들이 어떤 관계를 맺고 있는지 표현시간이 흐르더라도 변하지 않는 정적 구조

새로운 문제 도메인의 중요한 클래스 발견

 

시스템을 구성하는 빌딩 블록 보여줌

객체 지향 시스템의 기본 빌딩 블록 = 클래스

 

구조적 모델의 층

구조적 모델은 시스템의 빌딩 블록을 찾아내고 이를 계층구조로 잘 정리하는 작업

구성요소인 클래스를 찾고, 이런 클래스들이 어떤 내부 부품이 있고 클래스간에 어떤 연관이 있는지 파악

 

클래스 다이어그램 작성 목적

  • 시스템 구성 요소 문서화
  • 클래스 사이의 연관, 일반화, 집합 관계 표시
  • 클래스의 기능, 특히 속성과 오퍼레이션 나타냄
  • 시스템 클래스 구조
  • 클래스들이 클래스 라이브러리와 어떻게 협력하는지
  • 클래스 인터페이스
  • 시스템 안에 어떤 객체 존재

 


클래스와 속성

> 클래스

시스템이 처리해야할 자료와 그 자료와 관련된 오퍼레이션을 정의한 작은 모듈

  • 사물 : 눈에 보이는 실세계의 개체
  • 역할 : 사람이나 기관의 역할
  • 사건 : 특정한 시각에 일어난 사건(이벤트)
  • 인터랙션 : 거래나 계약
  • 명세 : 구체적인 인스턴스의 공유하는 특성

 

> 속성

클래스로 추상화된 모든 개체들에 의하여 소유된 특성 하나하나

 

● 목적

완전성 - 클래스가 갖는 모든 정보 소유

완전 분할 - 각 속성이 클래스 각각의 측면을 나타냄

배타적 독립 - 속성들이 각각 독립적인 값을 보관

 

● 속성 찾기

서술적 속성 : 어떤 것의 고유 특성

명명 속성 : 개체를 부르는데 사용

참조 속성 : 관련된 클래스를 지칭하는 링크 제공

 

● 속성 타입

빌트인 자료형 : 불리언, 스트링, 정수, 실수...  문제 역역에 있는 자료형

도메인 특수 자료형 : currency, mailingaddress ... 프로그래밍 언어에 정의된 기본형

 

클래스와 속성의 검토

 대상 검토

도메인에서 마땅히 해야할 일 = 책임에 비추어 검토

 

 추상화

OR 검토 - 혼합되어 있는 개념은 별도의 클래스로 분리

단순한 리스트인지 검토 - 여러 개의 객체를 의미없이 모아놓은 것 아닌지 (좋은 추상 X)

 

● 의미없는 속성, 통일되지 않은 클래스

 


관계

> UML 관계

  • 연관 : 객체 사이의 관계
  • 일반화 : 상속 관계
  • 의존 : 컴파일 의존 관계

 연관

연관에 참여하는 두 클래스의 추가 데이터를 갖는 클래스

연관에 참여하는 두 클래스 中 어느 곳에도 속하지 X 데이터 갖는 속성

 

선으로 표시 / 이름, 역할, 다중도 표시

 

- 다중도

연관에 참여하는 양 끝에 있는 클래스

1 기본값

1..* 하나 이상

0..1 없거나 1이상

* = 0..* 다수 

 

- 회귀연관

같은 클래스의 인스턴스 사이에 존재하는 연관

+) 집합연관, 복합연관

 집합연관 (하얀 다이아몬드)

하나의 객체가 독립적인 객체 여러 개로 구성되는 경우

다른 클래스의 인스턴스를 자신의 속성으로 가짐

부분 인스턴스 개수는 다중도로 표시

전체 개념 클래스 - 다이아몬드

반대쪽 - 부분개념, 전체의 구성요소

 

 복합(합성)연관 (검정 다이아몬드)

전체 개념의 클래스의 인스턴스가 삭제될 때 부분 개념도 삭제(공동운명체)

집합 관계보다 더 강한 관계

단독으로 사용 불가능하며 반드시 슈퍼클래스와 함께 사용


상속

프로그램을 쉽게 확장할 수 있도록 도와주는 수단

객체 지향 패러다임 구현

정보를 공개하고 재사용하는 개념

 

클래스의 속성과 동작을 공유하는 다른 점이 동시에 있을 때

a-kind-of로 해석

슈퍼클래스, 서브클래스

일반화 : 하위 클래스의 공통 특성을 추상화 하여 상위 클래스로 정의 

상세화 : 상위 클래스의 공통 특성을 추상화 하여 하위 클래스에서 실체화 하는 관계 


오퍼레이션 (함수)

객체를 생성하고 소멸시키고, 속성을 접근하고, 링크시키고, 조건에 의해 선택 반복 처리하고, 자료를 변환시킴

구조적 모델링에서는 일상적인 오퍼레이션 표현다른 객체와 협력하에 이루어지는 경우가 많음

 

기본적인 오퍼레이션

정보은닉 때문에 감추어진 것을 접근할 수 있도록 도와줌

 

조건 체크

객체가 가지는 속성값이 특정한 값인지 체크하는 작업

 

탐색과 조작

흔히 발생하는 작업 중에 원하는 인스턴스 찾아냄

 

 입출력

객체 안에 값을 외부에서 입력받아 저장

객체 안의 값을 화면이나 프린터에 보내야 하는 경우


클래스 다이어그램

 

클래스 다이어그램 작성법

● 반복적인 과정

개념적 모델링 - 간단히 중요한 클래스의 존재와 관계만 표현

명세적 모델링 - 구현에 필요한 자료구조, UI, 데이터베이스, 통신에 필요한 클래스 포함

 

 클래스 찾기

문제정의에서 사물의 이름은 (명사, 명사구) 클래스일 가능성 높음

 

 클래스로 적당하지 않은 것 배제

중복 클래스 - ex) 고객과 구매자, 구매이력과 구매기록

관계 없는 클래스 - 문제의 범위 벗어나는 클래스 ex) 시스템 구축 비용

불확실한 클래스 - 너무 광범위하고 불확실한 것 ex) 보안


CRC 카드

클래스가 어떤 책임을 가져야 하는가, 자료의 소유권과 자료를 처리하는 권한, 책임이 어떤 클래스에 있는가를 따져 봐야함

=> 이를 찾아내는 데 사용하는 카드 CRC

 

클래스의 이름, 클래스의 책임, 협력하는 클래스로 구성

 

> 장점

  • 개발자와 사용자와의 대화유도
  • 클래스 검토에 유용

 

> 적용대상

  • 개발초기

 

 

반응형

BELATED ARTICLES

more