Download presentation
Presentation is loading. Please wait.
1
Java로 배우는 디자인패턴 입문 Chapter 0. UML 과 Design Pattern
2
UML(Unified Modeling Language)
시스템을 시각화하거나 사양(specification)이나 설계(design)를 문서화하기 위한 표현 방법 본 교재에서는, 클래스나 인터페이스의 관계를 표현하기 위해 사용함 인터페이스: 메소드의 선언만 있고 구현 부분(body)이 없는 특수한 클래스 자원 /42
3
01. UML에 대해서 클래스 다이어그램 클래스나 인스턴스(객체), 인터페이스 등 간의 정적인 관계를 표현한 그림 /42
4
클래스 다이어그램 예제 01. UML에 대해서 ParentClass field1 field2 methodB ChildClass
abstract class ParentClass{ int field1; static char field2; abstract void methodA(); double methodB(){ //… } 클래스 이름 methodA methodC ChildClass ParentClass field1 field2 methodB 필드(속성, 멤버면수) 이름 메소드 이름 class ChildClass extends ParentClass{ void methodA(){ //… } static void methodC(){ /42
5
01. UML에 대해서 클래스 다이어그램 예제 설명 부가적인 정보 ParentClass : 상위 클래스, 부모 클래스
ChildClass: 하위 클래스, 파생 클래스, 자식 클래스, 파생 클래스 부가적인 정보 추상 클래스(abstract class) 추상 메소드를 하나 이상 가지고 있는 클래스 이탤릭체로 이름을 표현한다. 정적 필드(static field) 객체가 아니라 클래스에 포함된 변수(객체마다 하나씩 생기지 않는다) 밑줄을 그어 이름을 표현한다. 추상 메소드(abstract method) 구현 부분이 없는 메소드 => 자식 클래스가 구현해야 한다. 이탤릭체로 이름을 표현한다 정적 메소드(static method) 객체가 아니라 클래스에 포함된 메소드(정적 메소드나 정적 필드만을 접근할 수 있다) /42
6
01. UML에 대해서 인터페이스와 구현 인터페이스란, 구현 부분이 생략되어 있는 메소드들의 이름만 선언되어 있다.
설명: PrintClass 클래스가 Printable 인터페이스를 구현한다. interface Printable{ abstract void print(); abstract void newPage(); } class PrintClass implements Printable{ void print(){ //… void newPage(){ /42
7
01. UML에 대해서 집합(Aggregation) ‘갖고 있는 관계’는 aggregation으로 표현한다. 설명:
Backet 클래스는 Fruit 클래스의 인스턴스를 가지고 있다. 즉, Basket 클래스에는, Fruit 클래스로 선언된 필드(변수)가 있다. Fruit 클래스도 Color 클래스의 인스턴스를 가진다. Color class Color{ //… } class Fruit{ Color color; class Basket{ Fruit[] fruits; Fruit color Basket fruits /42
8
01. UML에 대해서 액세스 제어 public 메소드나 필드: + private 메소드나 필드: -
protected 메소드나 필드: # class Something{ private int privateField; protected int protectedField; public int publicField; private void privateMethod(){ } protected void protectedMethod(){ } public void publicMethod(){ } Something -privateField #protectedField +publicField -privateMethod #protectedMethod +publicMethod /42
9
01. UML에 대해서 클래스간의 관계 클래스간의 관계를 나타내기 위해서 클래스를 연결하고, 그 위에 관계를 나타내는 이름을 붙인다. 삼각형 방향으로 해석한다. /42
10
01. UML에 대해서 시퀀스(sequence) 다이어그램
프로그램이 동작할 때, 객체들 사이의 메소드들이 어떤 순서로 실행되는 지를 보여준다 객체들간의 협동 과정을 보여줌 : Client 클래스의 익명의 객체를 의미한다. : Client 클래스의 clientA라는 이름의 객체를 의미한다. 사각형 아래의 점선은 생명선(life line)을 나타낸다 인스턴스(객체)가 존재하는 기간을 의미함 생명선 중간의 가늘고 긴 사각형: 객체가 활동 중임을 나타낸다. 즉, CPU를 얻어서 실행이 되는 상태 clientA:Client /42
11
01. UML에 대해서 시퀀스(sequence) 다이어그램 class Client{ Server server;
void work(){ server.open(); server.print(“Hello”); server.close(); } //… } class Server{ Device device; void open(){ //…} void print(String s){ device.write(s); //… void close(){ //…} //… class Device{ void write(String s){ //…} /42
12
클래스 라이브러리 구현 시, 디자인 패턴이 적용된다.
02. 디자인 패턴을 배우기 전에 디자인 패턴은 클래스 라이브러리가 아니다. 클래스 라이브러리: 많이 사용되는 클래스들을 미리 만들어서 모아둔 것 예: 통신 관련 클래스 라이브러리, 수학 관련 클래스 라이브러리 클래스 라이브러리 구현 시, 디자인 패턴이 적용된다. 예: java.util.Calendar 클래스에의 getInstance( ) 메소드에서 Factory Method 패턴(4장)이 사용된다. 다이어그램을 단순히 보지 말고, 그 의미를 읽어내야 한다. 스스로 예제를 생각해야 한다. /42
Similar presentations