UML

반응형
반응형

 

 

Unified Modeling Language의 약자로 객체들간의 관계를 표현하는데 사용한다고 한다.

대충 UML은 이렇게 생겼다.

https://infinitejava.tistory.com/61

이런 그림을 보면 개발하는데 편할거라 생각이 든다.
물론 UML자체는 의사소통의 도구이기 때문에 개발의 용의성과는 거리가 멀다고한다.
그렇다고는 하지만 이렇게 UML을 그려놓으면 핵심을 파악 할 수 있기 때문에 좋다고 생각이 든다.

이곳에서는 짤막하게 UML에 대해 설명할 예정이다.
다음과 같은 코드가 있다고 해보자. 
* 아래 코드는 자바로 배우는 리펙토링 입문에 있는 코드입니다.

interface Executable {
  abstract void execute();
}

abstract class ParentClass {
   Something _fild1;
   static int FIELD2;
   
   abstract void method();
   void method2() {
   ...
   }
   static void method3() {
   ...
   }
}

class ChildClass extends ParentClass implements Executable {
  void method() {
   ...
  }
  void execute() {
   ...
  }
}

class Somthing {
  int _value;
  ...
}

그러면 다음과 같은 클래스 다이어그램을 그릴 수 있다고 한다.

원래 <<Interface>> 이탤릭체로 작성해야 되는데. 능력이 부족해서 이렇게 작성했다.

상자는 3가지 영역으로 나눠져있다는 것을 알 수 있다.
첫번째칸에는 인터페이스 혹은 클래스의 이름을 적고

두번째칸에는 클래스나 인터페이스의 필드를 작성합니다.
그리고 마지막에는 클래스나 인터페이스의 메서드를 작성합니다.

만약, static을 사용한다고 한다면, 밑줄로 표시하고
abstract를 사용한다면 이탤릭체로 표기합니다.

세 영역은 필요에 따라 생략이 가능하다고 한다.

 

인터페이스 구현 표현 / 구체 클래스에서 인터페이스를 향해 긋는다.

 

클래스 상속을 표현 / 하위 클래스에서 상위 클래스를 향해 긋는다.


집합을 표현한다.  객체를 포함하는 쪽에서 포함되는 쪽으로 긋는다.
필드 등으로 객체를 포함하는 경우 사용

 

왼쪽 클래스는 오른쪽 클래스를 알고 있음(직접 연관)

 

왼쪽 클래스는 오른쪽 클래스를 사용함 (의존)

지금까지 클래스 다이어그램에 대해 살펴봤다.
다른 다이어그램도 많이 존재하지만, 클래스 다이어그램이 가장 노멀한 다이어그램이라 생각한다.

시퀀스 다이어그램

프로그램의 동작 순서를 나타냅니다.
이 역시 코드로 작성해보겠습니다.

Class Client {
  Server _server = new Server();
  ...
  void work() {
      -server.open();
      _server.print("Hello");
      _server.close();
   }
}

class Server {
   Device _device;
   void open() {
       _device = new Device();
       ...
   }
   void print(String s) {
      _device.write(s);
   } 
   void close() {
     ...
   }
}

class Device {
  void write(String s) {
    ...
  }  
}

시퀀스 다이어그램에서 위 아래는 시간의 흐름이고 가로 방향 화살표는 인스턴스 사이의 상호작용을 표현한다.

메서드 호출

 

메서드에서 돌아오는 걸 뜻한다.

자바로 배우는 리펙토링 입문에 UML을 이해가 쉽게 설명하고 있기때문에 오래 기억할려구 작성해놓는다.

반응형

댓글(0)

Designed by JB FACTORY