UML
Unified Modeling Language
oop
대부분의 경우, UML을 너무 적게 사용하는 편이 너무 많이 사용하는 것보다 낫다.1
Examples
다음은 "UML, 실전에서는 이것만 쓴다!"에 나오는 코드와 UML을 참고하여 일부 수정한 것이다.2
public class TreeMap implements Map {
public void add(Comparable key, Object value) { /* ... */ }
public Object get(Comparable key) { /* ... */ }
private void walk() { /* ... */ }
private TreeMapNode topNode;
}
static class TreeMapNode {
private TreeMapNode[] nodes = new TreeMapNode[2];
private Comparable itsKey;
private Object itsValue;
public void add(Comparable key, Object value) { /* ... */ }
public Object find(Comparable key) { /* ... */ }
}
+
:public
-
:private
#
:protected
~
:default
:
- 변수 이름 뒤에
:
을 찍고 타입을 적는다. - 메소드(함수) 이름 뒤에
:
을 찍고 리턴 타입을 적는다.
- 변수 이름 뒤에
화살표
: 연관 관계.숫자
: 화살표에 붙어 있는 숫자는 참조를 몇 개 갖는지를 표시한다.*
: 여러 개. 갯수에 제한이 없는 경우엔 숫자 대신*
을 쓴다.
엉클 밥의 화살표 팁
화살촉을 조심해서 그리지 않으면 그 화살촉이 상속을 표현하는지 연관을 표현하는지 구분하기 힘들 수도 있다. 이 둘을 더 명확하게 구분하려고 나는 종종 상속 관계는 세로로, 연관 관계는 가로로 그린다. UML에서 화살촉의 방향은 모두 소스 코드 의존성의 방향이다.1
UML에 대한 엉클 밥의 조언들
다이어그램을 그려야 할 경우
누군가에게, 또는 여러분 자신에게 코드 일부분의 구조를 설명할 때 다이어그램을 그려라. 이제는 코드를 직접 보는 편이 설명이 더 잘 이해된다고 느끼는 시점에서 다이어그램을 그리는 작업을 멈춘다. 3
다이어그램을 그리지 말아야 할 경우
- 다이어그램을 안 그리면 죄책감을 느끼거나, 훌륭한 설계자는 누구나 다이어그램을 그린다는 생각이 든다고 다이어그램을 그리지 마라. 훌륭한 설계자는 코드를 작성하며 다이어그램을 꼭 필요할 때만 그린다.
- 코딩을 시작하기에 앞서 설계 단계의 포괄적인 문서를 만들기 위해서 다이어그램을 그리지 마라. 이런 문서는 거의 언제나 하등 쓸모가 없으며 시간만 엄청나게 잡아먹는다. 3
guillemet에 대하여
«interface»
- 인터페이스 표시 양쪽에 있는
«
과»
기호를 길러멧(guillemet)이라 부른다고 한다.- 프랑스어, 러시아어에서 인용 부호로 사용한다고 한다.
- 이게 키보드에 있는
<
,>
를 두 개 이어 붙여서 만드는<<
,>>
와 다른 기호라고 한다.- 하지만 굳이 이걸 알 필요도 없고
<<
,>>
를 쓰는 게 더 편리하니 무시하자.
- 하지만 굳이 이걸 알 필요도 없고
참고문헌
- UML, 실전에서는 이것만 쓴다 / 로버트 C. 마틴 (지은이), 이용원, 정지호 (옮긴이) / 인사이트 / 초판 2쇄 2004년 10월 5일 / 원제: UML for Java Programmers