class diagram #
mermaid를 통해 class diagram을 그려보겠습니다.
보통 OOP를 표현하면서도 class diagram을 많이 사용합니다. 아래 class diagram을 보면 말하고자 하는 관계가 한눈에 파악되어 전달력이 뛰어난 것을 알 수 있습니다.
%%{init: {'theme':'dark'}}%%
classDiagram
동물 <-- 인간
동물 <-- 고릴라
동물 <-- 참새
동물 <-- 강아지
class에 대해 #
animal class를 만들며 class에 대해 알아보겠습니다. 우선 아래와 같이 animal class를 선언 할 수 있습니다.
%%{init: {'theme':'dark'}}%%
classDiagram
class Animal
class에 속성 부여하기 #
animal class에 여러 속성을 부여하겠습니다.
이름과 다리의 갯수, 바다에 사는지 육지에 사는지를 가리는 boolean 값을 추가 할 수 있습니다. property가 가지는 type을 정의해줄 수 있습니다.
%%{init: {'theme':'dark'}}%%
classDiagram
class Animal
Animal: +String name
Animal: +int feet
Animal: +Bool isLiveInOcean
class에 메서드 부여하기 #
class에는 method가 있을 수 있습니다. method는 인자와 반환값을 지정 할 수 있습니다. 반환값을 지정하지 않을 수도 있습니다.
%%{init: {'theme':'dark'}}%%
classDiagram
class Animal {
+String name
+int feet
+Bool isLiveInOcean
+breath(air)carbon dioxide
+run()
}
property와 method의 type에 대해 #
OOP를 배우다보면 캡슐화와 안전한 api를 만들기 위한 방법으로 제공되는 것이 접근 제어(visibility)입니다.
접근 제어자 | 설명 |
---|---|
+ Public (Public) | 어떤 클래스에서도 접근할 수 있음. 다른 클래스에서 해당 멤버(속성 또는 메서드)에 대한 접근이 허용됨. |
- Private (Private) | 선언된 클래스 내에서만 접근할 수 있음. 다른 클래스에서는 해당 멤버에 접근할 수 없음. |
# Protected (Protected) | 선언된 클래스와 그 하위 클래스에서 접근할 수 있음. 다른 클래스에서는 접근이 허용되지 않음. |
~ Package (Package) | 동일 패키지 내에서만 접근할 수 있음. 다른 패키지의 클래스에서는 접근이 불가능하며, 명시적인 접근 제어자를 지정하지 않았을 때의 기본값. |
지금까지 만든 class에 접근 제어자를 변경해보도록 하겠습니다.
단일 class만 가지고 있어서는 해당 기능은 의미가 없습니다만, 여러 클래스가 연관 관계를 가지게 되면서 접근을 제어하게되면 강력한 힘을 발휘하게 됩니다.
%%{init: {'theme':'dark'}}%%
classDiagram
class Animal {
+String name
-int feet
#Bool isLiveInOcean
~breath(air)carbon dioxide
+run()
}
class diagram의 class에 대해 알아봤습니다. 다음은 class가 서로 상호작용하는 class diagram에 대해 알아보겠습니다.