danbibibi
article thumbnail

UML (Unified Modeling Language)

시스템을 모델로 표현해주는 대표적인 모델링 언어

 

UML 목적

  • 전체 시스템의 구조 및 클래스의 의존성 파악
  • 유지보수를 위한 설계의 back-end 분석 제작
  • 원활한 의사소통 및 설계 논의
  • 시각화, 명세화, 문서화

 

UML 다이어그램 종류

1. 구조 다이어그램 (Structure Diagram)

  • 클래스 다이어그램 (시스템을 구성하는 클래스들 사이의 관계 표현)
  • 객체 다이어 그램 (객체 정보를 보여줌)
  • 복합체 구조 다이어그램 (복합 구조의 클래스와 컴포넌트 내부 구조 표현)
  • 등등

2. 행위 다이어그램 (Behavior Diagram)

  • 활동 다이어그램 (업무 처리 과정, 연산 수행 과정 표현)
  • 상태 머신 다이어그램 (객체의 생명주기 표현)
  • 유즈케이스 다이어그램 (사용자 관점에서 시스템 행위 표현)
  • 등등

UML 종류

 

클래스 다이어그램

- 시스템을 구성하는 클래스들 사이의 관계를 표현 (클래스+관계로 표현)
- 시간에 따라 변하지 않는 시스템의 정적인 면을 보여줌

 

클래스 (Class)

  • 동일한 속성과 행위를 수행하는 객체의 집합 (객체를 생성하는 설계도)
  • 변화의 기본 단위
  • 클래스 표현 방법 = [클래스이름, 필드변수, 메소드]

클래스 표현 방법
접근 제어자

관계

1. 연관 관계 (Association)

  • 각 클래스의 객체는 해당 연관 관계에서 어떤 역할을 수행
  • 보통 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황
  • 단방향(화살표) - 한 쪽은 알지만, 다른 쪽은 상대방의 존재를 모름
  • 양방향(실선) - 두 클래스의 객체들이 서로의 존재를 인식

💡 연관 클래스
- 연관 관계에 추가할 속성이나 행위가 있는 경우
- 연관 클래스를 일반 클래스로 변환
- 양방향 연관 관계는 구현이 복잡, 보통 다대다 연관 관계를 일대다 단방향 연관 관계로 변환해 구현

다중성 표시 방법 (표시 안한 경우 일대일 관계)

2.  일반화 관계 (Generalization)

  • 한 클래스가 다른 클래스를 포함하는 상위 개념인 경우
  • 상속 관계 ("is a kind of")
  • UML에서의 추상 클래스와 추상 메소드 표현 = 이탤릭체, << abstract>>

3. 집합 관계 (Aggregation, Composition)

  • UML 연관 관계의 특별 경우
  • 전체와 부분의 관계를 명확히 명시할 때 사용

1. 집약 관계 (Aggregation)
- 한 객체가 다른 객체를 포함하는 관계
- '부분'을 나타내는 객체를 다른 객체와 공유 가능
- 생성자에서 참조값을 인자로 받아 필드를 세팅
   = 전체 클래스가 부분 클래스를 new로 생성하지 않고외부에서 주입 받음
- 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 독립적

public class Computer {
    
    private MainBoard mb;
    private CPU c;
    
    public Computer(MainBoard mb, CPU c) {  // 생성자
        this.mb = mb;
        this.c = c;
    }
}


2. 합성 관계 (Composition)
- 부분 객체가 전체 객체에 속하는 관계
- '부분'을 나타내는 객체를 다른 객체와 공유 불가능
- 생성자에서 필드에 대한 객체를 생성
   = 클래스에서 직접 new로 생성
- 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 의존적
public class Computer {
    
    private MainBoard mb;
    private CPU c;
    
    public Computer() {  // 생성자
        this.mb = new MainBoard();
        this.c = new CPU();
    }
}​

4. 의존 관계 (Dependency)

  • 일반적으로 클래스가 다른 클래스를 사용하는 경우 
💡연관관계와 의존관계의 공통점
 = 한 클래스가 다른 클래스의 기능을 사용

💡 연관관계와 의존관계의 차이
= 유지기간

연관 관계
- 오랜 시간 동안 같이할 객체와의 관계 ex) 사람 - 자동차
- 클래스의 속성에서 참조

의존 관계
- 짧은 시간 동안 이용하는 관계 ex) 자동차 - 주유기
- 연산의 인자로 사용 (메소드의 호출이 끝나면 연관된 클래스와의 관계가 마무리)

5. 실체화 관계 (Realization)

  • 책임들의 집합인 인터페이스와 이 책임들을 실제로 구현한 클래스들 사이의 관계
  • UML에서의 인터페이스 표현 = <<interface>>

'프로그래밍 > 기타' 카테고리의 다른 글

컴파일 과정, 컴파일러  (0) 2024.08.02
TOTP(Time Based One Time Password)  (0) 2024.04.15
협업을 위한 컨벤션, Gitmoji  (0) 2023.09.04
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로