728x90
반응형
1. UML 클래스 다이어그램이란?
객체지향 시스템에서 클래스와 객체 간의 구조를 시각적으로 표현한 도구입니다.
기본 구성 요소
- 클래스(Class): 속성(Attributes)과 메서드(Operations)를 가집니다.
- 클래스 간의 관계: 연관, 집합, 합성, 상속, 의존 관계 등
2. 클래스 다이어그램 작성 단계
2.1 클래스 정의 및 표기법
클래스를 정의할 때는 다음과 같은 표기법을 사용합니다
+-------------------+
| 클래스명 |
+-------------------+
| - 속성명: 데이터타입 |
+-------------------+
| + 생성자명() |
| + 메서드명(): 반환타입 |
+-------------------+
- 생성자 함수는 클래스와 동일한 이름으로 작성하며 반환 타입은 명시하지 않습니다. 이는 클래스 인스턴스를 생성하기 위한 초기화 과정으로, 리턴 타입이 없기 때문입니다.
접근 제어자 표기
- + (Public): 모든 클래스에서 접근 가능
- - (Private): 해당 클래스 내에서만 접근 가능
- # (Protected): 해당 클래스와 하위 클래스에서만 접근 가능
- ~ (Package): 동일 패키지 내에서 접근 가능
예시:
+----------------------+
| Customer |
+----------------------+
| - id: Int |
| - name: String |
| - email: String |
+----------------------+
| + Customer(id: Int, name: String, email: String) |
| + register(): Boolean |
+----------------------+
2.2 클래스 간의 관계 표현
- 연관(Association): 객체 간 일반적인 관계, 실선으로 표현
- 예:
Customer
클래스와Order
클래스 간의 관계에서,Customer
는 여러 개의Order
와 연관될 수 있습니다.
- 예:
- 집합(Aggregation): 전체/부분 관계, 빈 마름모로 표현
- 예:
Library
클래스와Book
클래스 간의 관계에서,Library
는 여러 권의Book
을 포함하지만,Book
은 독립적으로 존재할 수 있습니다.
- 예:
- 합성(Composition): 전체가 부분을 소유하는 관계, 채워진 마름모로 표현
- 예:
Car
클래스와Engine
클래스 간의 관계에서,Car
는Engine
을 반드시 포함하며,Car
가 소멸하면Engine
도 함께 소멸합니다.
- 예:
- 상속(Generalization): 부모/자식 클래스 관계, 빈 화살표로 표현
- 예:
Person
클래스와Employee
클래스 간의 관계에서,Employee
는Person
을 상속받습니다.
- 예:
- 의존(Dependency): 일시적인 의존성, 점선 화살표로 표현
- 예:
Service
클래스가Logger
클래스를 사용하여 로그를 남길 때,Service
는Logger
에 의존합니다.
- 예:
3. UML 클래스 다이어그램 예시
예시: 도서 관리 시스템
Library
클래스와 Book
클래스 간의 관계는 집합 관계(Aggregation)입니다. Library
는 여러 권의 Book
을 포함하지만, 각 Book
은 독립적으로 존재할 수 있습니다.
+----------------------+
| Book |
+----------------------+
| - title: String |
| - author: String |
| - price: Double |
+----------------------+
| + Book(title: String, author: String, price: Double) |
| + getDetails(): String |
+----------------------+
+----------------------+
| Library |
+----------------------+
| - name: String |
| - books: List<Book> |
+----------------------+
| + Library(name: String) |
| + addBook(book: Book): Boolean |
+----------------------+
Library *-- Book
예시의 Java 소스 코드 표현
Book 클래스
public class Book {
private String title;
private String author;
private double price;
// 생성자
public Book(String title, String author, double price) {
this.title = title;
this.author = author;
this.price = price;
}
// 메서드
public String getDetails() {
return "Title: " + title + ", Author: " + author + ", Price: " + price;
}
// Getter and Setter methods (선택사항)
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Library 클래스
import java.util.ArrayList;
import java.util.List;
public class Library {
private String name;
private List<Book> books;
// 생성자
public Library(String name) {
this.name = name;
this.books = new ArrayList<>();
}
// 메서드
public boolean addBook(Book book) {
return books.add(book);
}
public List<Book> listBooks() {
return books;
}
// Getter and Setter methods (선택사항)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4. 클래스 다이어그램 작성 시 유의사항
- 접근 제어자 사용: 각 속성과 메서드에 접근 제어자를 명확히 지정하여 클래스 간의 정보 은닉을 지킵니다.
- 생성자 표기: 생성자는 클래스명과 동일하게 작성하며, 반환 타입은 명시하지 않습니다.
- 일관된 표기법 사용: 전체 다이어그램에서 일관성 유지.
- 필수 요소만 포함: 핵심적인 클래스와 관계만 표현하여 가독성을 유지합니다.
5. UML 다이어그램 툴 추천
- Lucidchart: 웹 기반 협업 도구
- StarUML: 무료 오픈소스 UML 툴
- PlantUML: 텍스트 기반 UML 생성 도구
- Visual Paradigm: 다양한 UML 기능을 제공하는 상용 소프트웨어
UML 클래스 다이어그램은 시스템의 구조를 명확히 표현해 주며, 생성자와 접근 제어자를 포함해 클래스의 인스턴스 생성 및 정보 은닉 방식을 시각적으로 나타내는 데 유용합니다. 이 가이드를 통해 UML 다이어그램을 더 효율적으로 작성해 보세요.
참고사이트
https://brownbears.tistory.com/577
728x90
반응형
'Topcit' 카테고리의 다른 글
이진 트리 순회 방법 (예제) (0) | 2024.11.10 |
---|---|
이진 트리 순회 방식 (1) | 2024.11.10 |
Java PreparedStatement (0) | 2024.10.28 |
Java 객체지향 프로그래밍 특징 (0) | 2024.10.28 |
SQL DCL 요약 (0) | 2024.10.28 |