최근 Clean Code와 함께 SOLID 원칙에 대해서 공부하다가 보니 Class Diagram으로 모델링을 해놓은 자료를 많이 봤는데, 학부때 배우던 부분이다 보니, 너무 많이 있어서 다시 공부도 할겸 정리해봅니다

UML(Unified Modeling Language)로 표준 통합 모델링 언어입니다, 그 중 Class Diagram

  1. Class

클래스 이름과 속성 기능을 표기합니다.

public class User {
    private String name;
    
    String getName() {
        return name;
    } 
    
    void setName(String name) {
        this.name = name;
    }
  • + : public
  • - : private
  • 변수명 : 자료형 : 멤버변수 선언
  • 메소드명(파라미터) : 반환타입 : 메소드 선언
  1. Stereo Type

<< >> 사이에 Interface를 넣어서 Interface 라는 걸 알려줍니다

public interface User {
    
}

  1. 관계 (Relation)

클래스간의 관계를 나타내는 다이어그램

이미지 출처 : Nextree

3-1. 일반화 (Generalization)

상속 관계를 나타냅니다


public class User {

    private String email;
    private String passwd;
    
    public void login() {
        ...
    }
}

public Customer extends User {

    @override
    public void login() {
        
    }
}

public Administrator extends User {

    @override
    public void login() {
        
    }
}

3-2. 실체화 (Realization)

interface로부터 implements 하여 구현하는 것을 의미합니다


public interface User {
    
    void login();
}

public Consumer implements User {
    
    @Override
    void login() {
        // implements
    }
}

3-3. 의존 (Dependency)

한 클래스가 다른 클래스를 참조하는 것을 의미합니다

public class User {
    
    public PurchaseList createPurchaseList() {
        return new PurchaseList();
    }
}

3-4. 연관 (Association)

다른 클래스의 객체를 참조할는 것을 의미합니다

public class User {
    private List<Item> items;
}

3-5. 집합 (Aggregation)

전체부분으로 나타내고, 전체에 마름모로 표시합니다

public class User {
    private List<Item> items;
}

3-6. 합성 (Composition)

집합보다 좀 더 강한 의미로 보통 전체부분의 수명까지 책임 지는 경우를 의미합니다

public class User {
    private List<Item> items;
}