일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데이터베이스
- 언어모델
- 자연어처리
- 운영체제
- 프로세스
- 파싱테이블
- 가상메모리
- 836
- 애자일
- React
- 컴파일러
- NLP
- 정보검색
- 파싱
- 데이터분석
- 컴파일
- Linear Algebra
- 객체지향설계
- DB
- 랩실일기
- OS
- 소프트웨어공학
- 스케줄러
- 오픈소스웹소프트웨어
- C언어
- 웹소프트웨어
- 클래스
- css
- 벡터
- Agile
- Today
- Total
observe_db
[객체지향설계] 6. Structure Modeling 본문
4/10, 4/14, 4/17
Structure Modeling 전에..
Use case diagram의 실현화
- 정교한 작업 수행
- 오브젝트와 use-case 연결
Sequence Diagram을 통해 실현화(Object간 메시지를 어떻게 주고받는지)
규칙과 스타일 가이드라인 이해
- CRC(Class-Responsibility-Collaboration) Cards
- Class Diagram
- Object Diagram
Introduction
Functional model(기능)
Structural model(구조)
이해를 위한 3가지 방법(CRC, Class diagram, Object diagram)
Structure Modeling의 목적
-실제와 소프트웨어 사이의 semantic gap의 감소
-분석가와 사용자에게 문법 제공
-중요한 사물, 생각, 주제를 적용영역에서 대표.
Class
- 인스턴스나 객체를 만드는 틀(템플릿)
- concrete/abstract
Attribute(속성)
- 클래스의 묘사와 관련된 정보의 유닛
- 이름/변수/함수의 3개 요소로 이루어짐.
Operations
- 인스턴스나 객체가 할수있는 행동
- 관려된 프로그램 특화 운영에 중점
Relationships
기본적인 관계 3가지: generalization, aggregation, association
- generalization: a-kind-of 관계
- aggregation: a-part-of 관계
- association: 다양하고 잡다한 관계
CRC 카드
- 멤버변수로 할 것이 뭔지 알려줌.
- class의 colaboration
- 클래스에 대해 알려주는 '클래스의 이력서'
- 처음부터 다 채울 필요는 없음.
Class Diagram
- 정적모델(static model)
- Class와 Relationship으로 이루어짐.
- 클래스는 이름/변수/함수의 3개 칸으로 이루어짐
- 클래스는 연결되어있음.(존재 자체는 자기 스스로도 가능)
- 속성은 보통 이름을 쓴다. 기본적으로 private level이다.
- /(slash) 되어있는 것은 derived 라고 하여, 유도되는 속성을 뜻한다.
- opeartion은 괄호(). 기본적으로 public level이다(이름 불려야 써먹을 수 있다)
- 관계는 양쪽에 가능한 범위(하나면 한개만, 0...n이나 m..n이나)
- 관계에서 + 표시를 두는 것은 이 객체의 역할을 의미.
관계
Aggregation(집합 관계): part of의 관계. 마름표 표시
Generalization(보편 관계): kind of의 관계. 화살표 표시
Dependency(의존관계): A->B면 A is dependent on B. 독립적인 쪽(B)의 변화가 의존적인 쪽(A)에게 영향을 미친다.
- <<use>>나 <<permit>>
Abstraction/Realization(추상화/실현화 관계): 같은것에 대해 다른 수준으로 표현한 것.(일종의 의존관계)
- <<refine>>, <<trace>>, <<derive>>
Navigable association: 방향이 가리키는 쪽으로만 유지될 수 있다.(역방향X)
Recursive association:
Roles in an association: 생성되는 모든 instance가 해당 역할을 가짐.
Qualified association: 해당 관계에서 이것을 가짐. (Activity Diagram의 pin과 유사)
XOR: 배타적 논리합. 둘 중 하나에만 관계를 가짐(동시 불가)
Ternary association(삼항관계): 관계를 3개와 맺음
Association transformation: 중간에 하나를 끼워서 한쪽 영향으로 데이터 삭제를 방지.(ex. DB의 normalization)
(Shared) Aggregation: 한쪽이 삭제되더라도 상관 없음.
Composition Aggregation: 구성원중 하나가 삭제되면 같이 삭제
Generalization Set: 공통의 superclass에서 상속된 다른 subclass의 집합을 생성.
-속성중 complete는 그 구분으로 전체집합 생성 가능/incomplete는 불가능. disjoint는 교집합 없음./Overlapping은 교집합 가능.
Powertype: subclass를 생성하는 매커니즘. 모든 powertype의 instance는 subclass.
그 외..
Constraint association: association간 의존성(dependency)
Package: 연관된 class 묶음(자세한건 package diagram에서..)
Interface: 그것이 해당 인터페이스를 통해 소통한다는 의미.
-Enumeration, 가질수 있는 값 제한.(관계X)
Port: 클래스에선 잘 안씀. 행위 content가 외부 영향을 받을 수 있을 때, 그 외부영향 표기.
Object Diagram
- 생명을 부여한다(give the life)
- class에 유용한 디테일 추가
- Class diagram만으로는 정보가 부족할 때 사용.
CRC Card와 Class Diagram 만들기
- 객체 식별을 위한 4가지 방법
- 구문분석
- use case 설명서 이용
- 이름, 속성, 연산, 관계 식별(명사는 클래스로, 동사는 함수로)
- 자세한건 길어짐. 보통 엑셀을 이용해서 품사 태깅 및 분류
- 브레인스토밍
- 발전할만한 클래스나 객체 리스트(후보 객체)
- 그들의 속성과 연산
- 공통 객체 목록
- 물리적이고 만질 수 있는 것
- 사건
- 역할
- 상호작용(다른 것에 영향을 주는 기능적 행위)
- 그 외(장소, 조직, 정책..)
- 패턴
- 특정 대상물(사물, 개념, 생각)이 반복적으로 발생하는 것
- 굉장히 다양하다.(이후 챕터로 등장)
- 구문분석
구조적 모델링의 과정
- CRC Card 생성: usecase description 참고
- CRC Card 리뷰
- CRC Cards 테스트(role-playing): 많이 남으면 쓸모 없는것이 있다. 적으면 식별되지 않은 것이 있다.
- Class Diagram 생성
- Class Diagram 리뷰: 불필요한/빠진 클래스 확인 devil's advocate(부정적으로 바라보기)
- 패턴 포함
- 모델 리뷰
Class Diagram 간략화
- 속성이 늘어나면서 긴 박스가 됨
- 이름만 쓰기
- package로 묶기
'학교 공부 > 객체지향설계(3-1)' 카테고리의 다른 글
[객체지향설계] 8. Verifying Models (0) | 2023.05.19 |
---|---|
[객체지향설계] 7. Behavioral Modeling (0) | 2023.05.17 |
[객체지향설계] 5. Use Case Diagram (0) | 2023.03.30 |
[객체지향설계] 4. Activity Diagram (0) | 2023.03.29 |
[객체지향설계] 3. Requirements Determination (0) | 2023.03.22 |