12.1 UML작성자 : 진은영 ( 2004-08-18 )
목차
이 강좌에서 표현하는 UML의 깊이는 자바 기본을 표현하기 위한 방편으로 간단하게 설명하려 한다. 12.1.1 UML 이란프로그램을 만드는 사람은 프로그램의 내부 구조를 단순한 글로 이해하는 것보다 비주얼하게 이해하는 것이 더 쉽다.예를 들어 그림을 그리는 사람에게 "눈썹은 짙고, 코는 높고, 성질이 더러운 사람을 그려주세요" 라고 말로만 부탁하기 보다는 사진을 보여주며, "이렇게 그려주세요" 라고 말하는 것이 그리는 사람이 훨씬 잘 그릴 수 있다. 여기에서 그림을 그리다와 대상이 되는 사람의 용어를 아래와 같이 표현할 수 있다.
그림을 그리다. : 구현(implement)
그림의 대상이 되는 사람 : 모델(Model) 마찬가지로 프로그래밍을 할 때, 즉 구현할 때 프로그램의 목적이 되는 작업 산출을 Model 이라 한다.
UML : 프로그램의 "모델"을 만들 때 사용하는 비주얼한 언어
코딩하기 전에 구현할 프로그램의 모델이 신중하고 풍부하게 만들어져 있으면 프로그래머는 그것을 그대로 따라서 코딩하면 되기 때문에, 프로그램을 더 쉽게 구현할 수 있다. 12.1.2 클래스 형식객체를 생성해주는 클래스나 문제 영역의 개념적인 단위를 표현하는 UML 표기는 사각형 도형으로 이루어져 있다. 클래스의 속성과 메소드는 붙이지 않아도 상관 없지만 클래스의 이름은 반드시 포함해야 한다.① 속성
[+/-/#] 속성이름 [:타입] [=초기값]
② 메소드
[+/-/#] 메소드 이름 ([파라메터이름 : 타입]) : 반환값 타입
![]() 위와 같이 작성한 다이어그램은 아래와 같이 표현할 수 있다. class Order{ private Date data; private boolean flag; public Order(){} public void cancel(){} public void getDate(Date d){} } 그림만 잘 구현한다면 프로그램으로 코딩하는 것은 아주 쉬울 것이다. 12.1.3 관계 표현서로 의미 있는 클래스들의 관계(relationship)는 크게 4가지 종류가 있다.
요구 사항이나 현실에서 대상들의 논리적인 연결을 포착하기 위한 개념이다. 연관은 두 개(이상)의 클래스 사이에 존재하는 의미적인 관계를 의미한다. 관계되는 수가 어떻든 대부분의 관계들이 연관으로 파악될 수 있다는 점을 이해하는 것이 중요한다. ![]() 그림에서 제시된 연관의 의미는 어렵지 않다. 학생이 수업과목에 출석한다. 이 때 학생은 해당 과목에 대해 수강생이라고 할 수 있고, 수업 과목은 학생에 대해 수강과목의 역할을 한다. class 수업과목 {} class 학생{ private 수업과목 s ; } ② 포함(aggregation) 관계 연관은 클래스들의 관계를 표현하기 위한 가장 포괄적인 개념이다. 하지만 이런 포괄적인 설정은 종종 의미를 희석시켜 버리기 때문에, 보다 명확하게 관계를 지정해 두고 싶을 때가 생긴다. 이런 관점에서 포함관계는 매우 유용한 표현이다. ![]() 그림에서 (a)부분은 아무런 장식 없는 연관으로 관계를 표현했다. 컴퓨터와 전원장치 사이의 관계가 어떠한 것일지는 쉽게 짐작할 수 있지만, 이런 짐작을 하기 위해서는 두 클래스에 대해 잠시 생각해보아야 한다.
이에 반해 (b)는 직관적으로 그 내용을 알려준다. 다이아몬드가 달린 연관이 포함 관계를 나태내고 있다는 사실을 안다면, 두 클래스의 이름을 읽기 전에 이미 어느 정도 짐작을 할 수 있다. ![]() 버스 , 승용차 , 트럭 등을 모두 한꺼번에 자동차라고 지칭하는 경우가 일반화를 사용한 전형적인 사례이다. ④ 실체화(realization) 관계 실체화 관계는 인터페이스와 그것을 구현하는 클래스 사이에 나타나는 관계가 전형적인 사례이다. 보다 엄밀히 정의한다면, 실체화는 계약을 명세하는 클래스와 그 계약을 실현하는 클래스 사이의 관계라고 말할 수 있다. UML에서 자바의 인터페이스를 표현할 때 클래스의 이름을 적는 사각형 안에 <<interface>>라는 스테레어 타입을 붙이다.
스테레오 타입 : 이미 정의 되어 있는 모델링 요소의 의미를 새롭게 재정의한다.
![]() 참고문헌
|