UML Class Diagram

송윤서·2024년 11월 7일
1
post-thumbnail

UML이란?

Unified Modeling Language의 약자로, 통합 모델링 언어

왜 알아야할까?

  • 다른 사람들과의 협업
    UML 형식을 차용해 의사소통하면, 의미가 명확하고 설계에 대한 논의가 순조롭게 이루어질 수 있습니다.
  • 전체 시스템의 구조와 클래스의 의존성을 파악
    다이어그램을 분석하면, 시스템의 구조는 물론 클래스 간의 의존성도 파악하기 쉽습니다.
    그 후에 설계를 더 세분화할 수 있겠죠?
  • 유지보수를 위한 백엔드 문서로 사용
    위의 항목과 이어지는 방법입니다. 구조적으로 효율적이지 않거나, 모듈화 또는 구체화해야하는 작업이 필요하다고 생각한다면 UML을 먼저 작성해보고 구조를 수정하는 것이 좋겠습니다.

Class Diagram Element

정적 다이어그램으로 클래스의 구성요소 및 클래스간의 관계를 표한하는 대표적인 UML
-> 시스템의 일부 또는 전체의 구조를 나타낼 수 있음

class

클래스는 보통 3개 구역으로 나뉜 사각형으로 그립니다.
클래스의 이름, 속성, 기능을 표기할 수 있으며 이름만 필수로 명시!!
보통 속성과 기능을 생략해 다이어그램을 그리는 경우는 주로 클래스의 흐름 분석 위주의 작업

사용 용도

  1. 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해
  2. 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적

세부 사항

클래스에는 클래스의 이름, 속성, 그리고 메서드가 존재

접근 제한자 (Access modifier)

  • + : public
  • - : private
  • # : protected

속성 (Attribute)

  • 속성(Attribute)
  • 접근제어자 이름: 타입 = 기본값
  • ex) -title: String = ""

기능 (Method)

  • 접근제어자 이름(파라미터 속성): 리턴값
  • void 리턴값은 생략 가능
  • setTitle(String)
  • getTitle(): String

클래스 다이어그램을 이용한 관계 표현

1. Generalization ( 일반화 )

우리가 일반적으로 알고 있는 상속을 의미 : 실선에 비어있는 화살표로 표시

public class Board {
    private String title;
    private String contents;
    private List<Comment> comments;

    // 기본 getter / setter 메서드들
}

class SchedulerBoard extends Board {
    private LocalDate startDate;
    private LocalDate endDate;

    public void validateDateLine() {
        ...
    }
}

2. Realization ( 실체화 )

pec을 오버라이딩하여 실제로 구현하는 것 : 점선과 비어있는 화살표로 표현

public class Board {
    private String title;
    private String contents;
    private List<Comment> comments;

    // 기본 getter / setter 메서드들
}

class SchedulerBoard extends Board {
    private LocalDate startDate;
    private LocalDate endDate;

    public void validateDateLine() {
        ...
    }
}

3. Dependency ( 의존 )

클래스간의 참조가 일어나는 것 중 하나 : 점섬과 화살표 표시
메서드 내에서 대상 클래스의 객체를 생성하거나 사용, 리턴받아 사용하는 것
이 참조는 해당 클래스와의 관계를 계속 유지 X

public interface OpenCloseable {
    void open();
    void close();
}

public class Board implements OpenCloseable {
    public void open() {
        System.out.println("open method");
    }

    public void close() {
        System.out.println("close method");
    }
}

4. Association & Direct Association ( 연관 )

다른 객체의 참조를 가지는 필드를 의미 : 실선으로 표현되며 방향성이 존재하는 경우에는 화살표를 넣어 표시

  • 1 - 1개의 표현
  • *-0 ~ n 개의 표현
  • n...m : n 부터 m까지 연관관계를 맺음

public class Board {

    private String title;

    public String getTitleWithRanking(Ranking ranking) {
        return title + ranking.getRank();
    }
}

public class Ranking { 
    private int rank;

    public int getRank() {
        return rank;
    }
}

참고자료

https://velog.io/@khyunjiee/UML-Class-Diagram#%EC%8B%A4%EC%B2%B4%ED%99%94-realization

profile
Front-end Developer

0개의 댓글