Class Diagram
Terminology
- Object: 시스템 개별 객체들, 구현할 대상을 지칭한다.
- Class: Obejct를 만들어 내기 위한 틀
- Attribute(내부 변수)과 Operation(함수)으로 구성되어 있다.
Writing Convention
- Object의 이름은 소문자로 시작하고, camelCase 로 작성한다.
- Class의 이름은 대문자로 시작하고, CamelCase 로 작성한다.
예시
boyWithLuv: BtsSong
${objectName}: ${ClassName}
anonymous object
: BtsSong
UML Class Diagrams
같은 UML Class 다이어그램이어도 다양한 관점에서 사용할 수 있다.
- Domain model
- DCD (Desgin Class Diagram)
Song | Class Name |
name: String artist: String genre: Genre |
Attributes |
getName(): String getArtist(): String getGenre(): Genre |
Operations |
Attribute Syntax
- Visibility
- + : public(operations default)
- - : private(attributes default)
- # : protected
- ~ : package
- / : derived, 다른 속성값 또는 외부로 부터 정보를 가져오거나 계산되어지는 값
- Multiplicity 예) [1..*]
- Default value 예) = "default password"
- Properties 예) {readOnly, unique, ordred}
Operation Syntax
- Parameters
- in : input parameter(default)
- out: output parameter 잘 안 씀
- inout: in-out parameter 잘 안 씀
Operations and Methods
Operation은 Interface 이고, Method 는 Implement 이다.
Operation은 함수이름과 변수들, 리턴값을 정의한 함수 "형태"이다.
Method는 Operation을 구체적으로 함수 코드로 "구현"한 것이다.
Class Variable and Operation
밑줄그은 것, static 을 붙여야 함, 클래스에만 구현되고 모델에는 작성하지 않는다.
5 Types of Class Relationship
Dependency
정말 간단하게 다른 클래스에서 작업을 하는 경우.
주로 Component Diagram 을 그릴 때 사용한다. association으로 변경이 가능 함.
Association(default)
기본적인 것. 불확실하면 일단 실선으로 그리자.
non-navigability: ( mark: (X)---> ) X는 있을 수도 없을 수도 있다. 이는 역방향으로는 퍼블릭에 대한 정보도 접근할 수 없다는 것
Association Classes(어디에도 속하기 애매할 때 중간에 따로 점선으로 그어서 사용)
Aggregation (Shared Aggregation)
약한 포함관계이다. 값을 공유하는 것 (상위가 삭제되어도 같이 삭제되어지지 않음)
화살표 쪽이 반대편을 가진다는 의미
Composition
강한 포함관계이다. (상위가 삭제되면, 같이 삭제 됨)
Inheritance (Generalization)
하위 오브젝트는 상위의 오브젝트이다로 정의 될 수 있는 것 (ex. 직장인(하위오브젝트)은 사람(상위오브젝트)이다.)
상위 오브젝트의 내용은 하위 오브젝트는 모두 가져야 한다.
There is no silver bullet in software development
참고)
5 types of class relationship image: https://flylib.com/books/en/2.926.1.43/1
': Architecture' 카테고리의 다른 글
[OOAD] SOLID (0) | 2022.06.23 |
---|---|
[OOAD] GRASP (0) | 2022.06.22 |
[UML] Sequence Diagrams (0) | 2022.06.17 |
[UML] Use Case Diagram (0) | 2022.06.17 |