[UML] Class Diagram

현지·2022년 5월 4일
0

JAVA

목록 보기
1/1

UML

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

✅UML의 종류

  1. 구조 다이어그램
    (클래스 다이어그램, 객체 다이어그램, 복합체 구조 다이어그램, 배치 다이어그램 등)
  2. 행위 다이어그램
    (활동 다이어그램, 상태 머신 다이어그램 등)

✅UML 사용 이유

  1. 다른 사람들과 협업에 사용된다.
  2. 전체 시스템의 구조와 클래스의 의존성을 파악할 수 있다.
  3. 유지보수를 위한 백엔드 문서로 사용된다.

Class Diagram

✅Element

  • class의 이름, 속성, 메서드가 필요하다.
  • 속성과 메서드는 생략 가능하다.
  • (StarUML을 이용하여 class diagram을 표현했다.)

✅관계 표현

관계UML표기
Generalization(일반화)
Association(연관)
Directed Association(직접 연관)
Aggregation(집합)
Composition(합성)

Generalization(일반화)

  • 부모 클래스와 자식 클래스 간의 상속관계이다.
  • method overriding을 이용할 수 있다.
  • 실선에 비어있는 삼각형 모양으로 표현한다.

✔example

class Member {
	private String id;
	private String pwd;

	public void print() {
		System.out.println("Member");
	}
}

class Employee extends Member{

	private String employee_name;
	private String email;

	public void print() {
		System.out.println("Employee");
	}
}

class Admin extends Member{

	private String admin_name;
	private String email;

	public void print() {
		System.out.println("Admin");
	}
}

public class Generalization {

	public static void main(String[] args) {
		Member mem = new Member();
		Employee e = new Employee();
		Admin a = new Admin();

		mem.print();	//"Member"가 출력된다.
		e.print();		//overriding되어 "Employee"이 출력된다.
		a.print();		//overriding되어 "Admin"이 출력된다.
    }
}

Association(연관)

  • 다른 객체의 참조를 가지는 필드이다.
  • 일반적인 경우 실선으로 표현한다.
  • 화살표가 없으면 서로 참조할 수 있다.
  • 연관 관계를 숫자로 표현할 수 있다.
    • 1 : 1개
    • * : n개
    • n...m : n부터 m까지

✔example

import java.util.List;

class School{
	private List<Person> studentList;

	public void addStudent(Person person){
		studentList.add(person);
	}
}

class Person{
	private School school;

	public void setSchool(School school){
		this.school = school;
		school.addStudent(this);
	}
}

Directed Association(직접 연관)

  • 다른 객체의 참조를 가지는 필드이다.
  • 실선으로 연결한 후 끝에 화살표로 표현한다.
  • 화살표가 있으므로 방향성이 존재한다.

✔example

class Subject{
	private String name;
	private String grade;

	public void print() {
		System.out.println("Subject");
	}
}

class Student{
	private String name;
	private int age;
	private Subject subject;

	public void print() {
		subject = new Subject();
		subject.print();
	}
}

public class DirectedAssociation {
	public static void main(String[] args) {
		Student s = new Student();
		s.print();
    }
}

Aggregation(집합)

  • Association의 특수한 관계이다.
  • 한 객체가 다른 객체를 포함한다.
  • '부분'을 나타내는 객체를 다른 객체와 공유할 수 있다.
  • 전체 객체가 메모리에서 사라져도 부분 객체는 유지된다.
  • '전체'를 가리키는 부분에 빈 마름모로 표현한다.

✔example

class Toy{
	private String name;
	private Car car;
	private Block block;

	public Toy(Car c, Block b){
		this.car = c;
		this.block = b;
	}
}

class Car{
	private String type;
}

class Block{
	private String shape;
}

Composition(합성)

  • Association의 특수한 관계이다.
  • Aggregation과 비슷하지만 개념적으로 좀 더 강한 집합이다.
  • 부분 객체가 전체 객체에 속하는 관계이다.
  • '부분'을 나타내는 객체는 다른 객체와 공유 불가능하다.
  • 전체 객체가 없어지면 부분 객체도 없어진다.
  • '전체'를 가리키는 부분에 채워진 마름모로 표현한다.

✔example

class Toy{
	private String name;
	private Car car;
	private Block block;

	public Toy(){
		this.car = new Car();
		this.block = new Block();
	}
}

class Car{
	private String type;
}

class Block{
	private String shape;
}
참고 사이트

0개의 댓글