클래스의 구성요소 및 클래스간의 관계를 표한하는 대표적인 UML
도메인을 모델로 표현해주는 대표적인 모델링 언어
의사소통, 설계, 전체 시스템의 구조 및 클래스의 의존성 파악 등을 위해 사용됨
+ : public
- : private
# : protected
접근제어자 이름:타입 = 기본값
ex) private String name = "";
--> - name : String = ""
접근제어자 이름(파라미터 속성): 리턴값 {abstract : 추상메소드일 경우만}
ex) public String getName(String name)
-> + getName(String) : String
ex) public abstract String getName(String name)
-> + getName(String) : String {abstract}
UML에서 제공하는 기본요소 외의 추가적인 확장요소
<< interface >>
<< abstract >>
<< component >>
(출처 : https://www.nextree.co.kr/p6753/)
public class Subject {
private String code;
private String name;
public void study() {
System.out.println("공부");
}
}
public class English extends Subject {
@Override
public void study() {
System.out.println("영어공부");
}
}
public interface Subject {
public void study();
}
public class English implements Subject {
@Override
public void study() {
System.out.println("영어공부");
}
}
public class English {
public Schedule createSchedule() {
return new Schedule(); //create << create >> 으로 표현
}
// 그외에도 <<local>>, <<parameter>> 로도 사용 가능함
}
Aggregation ( 집합 ) : 연관의 집합관계를 나타내는 것. Collection이나 Array를 이용하는 관계. 코드상으로 분리하기 애매하므로 생략함 (실선, 빈다이아몬드)
1 : 1개의 표현
* : 0 ~ n 개의 표현
n...m : n 부터 m까지 연관관계를 맺음
public class English {
public List<Schedule> scheduleList;
}
English 클래스가 사용하지 않는 경우가 발생했을때 Schedule도 참조가 불가능한 상태가 됨
https://sabarada.tistory.com/72
https://www.nextree.co.kr/p6753/