일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ncs
- java
- 직장인인강
- 웹
- 패스트캠퍼스후기
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online강의
- 패캠챌린지
- js
- 자바
- 자바예제
- 국비
- 패스트캠퍼스
- 자바연습문제
- String
- 스프링
- java기초
- 자바기본
- 자바기초
- 리눅스
- DesignPattern
- DB
- linux
- 디자인
- 디자인패턴
- javabasic
- Spring
- 데이터베이스
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
- 직장인자기계발
- 재택근무
- Today
- Total
FIF's 코딩팩토리
StarUML을 사용하여 SQL-Client 클래스 다이어그램 그리기 본문
StarUML을 사용하여 SQL-Client 클래스 다이어그램 그리기
StarUML이란
StarUML은 UML(Unified Modeling Language)을 지원하는 소프트웨어 모델링 플랫폼이다. 총 11가지의 다양한 종류의 다이어그램을 제공할 뿐만 아니라 UML 프로파일 개념과 템플릿 기반의 문서 및 코드 생성을 지원하여 MDA(Model Driven Architecture) 접근방법을 적극적으로 지원한다. StarUML을 사용하면 소프트웨어 프로젝트의 생산성(Productivity), 품질(Quality)이 획기적으로 높아진다는 것을 실감할 수 있다.
아래 홈페이지에서 다운로드 받는다.
http://sourceforge.net/projects/staruml/files/latest/download
별도의 과정없이 설치파일을 클릭하여 설치하면 된다. 설치가 끝나면 실행파일이 생긴다.
StarUML을 사용하여 클래스 다이어그램을 그리기 전에 클래스 다이어그램이 무엇인지 살펴보겠다.
클래스 다이어그램(Class Diagram) 이란
Class Diagram은 UML(Unified Modeling Language)의 한 종류이다. UML은 프로그램 설계를 표현하기 위해 사용하는, 주로 그림으로 된 표기법을 의미한다. 객체지향 언어와 밀접한 관련이 있기에 객체지향 모델링 언어라고도 한다. 소프트웨어 시스템, 업무모델링, 시스템의 산출물을 규정하고 문서화하는 언어이고 이 UML종류중 하나가 클래스 다이어그램이다. 클래스 다이어그램은 클래스들 간의 관계를 보여주는 구조 다이어그램이다.
클래스 다이어그램(Class Diagram)의 특징
클래스 다이어그램은 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기하는 다이어그램으로 시스템의 일부 또는 전체의 구조를 나타낼 수 있다. 클래스 다이어그램은 클래스들의 관계를 쉽게 보고, 의존관계를 쉽게 파악하게 해준다.
클래스들 간의 관계
아래 그림은 클래스들 간의 관계를 표현할 때 사용하는 표기법이다.
1. Dependency Relationship(의존 관계)
Dependency는 클래스 다이어그램에서 일반적으로 제일 많이 사용되는 관계로서, 어떤 클래스가 다른 클래스를 참조하는 것을 말한다.
아래 그림은 카카오 공고를 보내기 위해서는 카카오 서비스를 이용해야 하기 때문에 KakaoNotification이 KakaoService에 의존하고 있다.
점선과 화살표로 표현되고 있다.
2. Generalization(일반화 관계)
Generalization은 슈퍼(부모)클래스와 서브(자식)클래스 간의 Inheritance(상속)관계를 나타낸다. 여기서 Generalization이란 서브 클래스가 주체가 되어 서브 클래스를 슈퍼클래스로 Generalize하는 것을 말하고 반대의 개념은 슈퍼 클래스를 서브 클래스로 Specialize(구체화) 하는 것이다.
상속은 슈퍼 클래스의 필드 및 메서드를 사용하며 구체화하여 필드 및 메서드를 추가하거나 필요에 따라 메서드를 overriding(오버라이딩) 하여 재정의 한다. 또는 슈퍼클래스가 추상 클래스인 경우에는 인터페이스의 메서드 구현과 같이 추상 메서드를 반드시 오버라이딩 하여 구현하여야 한다.
아래 그림에서 Admin과 Customer은 User에 상속을 받고 있기 때문에 실선과 화살표로 표현했다.
3. Realization(실체화)
Realization은 interface의 spec(명세, 정의)만 있는 메서드를 오버라이딩 하여 실제 기능으로 구현하는 것을 말한다.
아래 그림은 인터페이스인 공고를 모바일 공고와 PC공고로 구현한다는 그림이다.
4. Association(연관), Directed Association(직접 연관)
클래스 다이어그램에서의 Association은 보통 다른 객체의 참조를 가지는 멤버 필드를 의미한다.
첫 번째 다이어그램은 일반적인 Association으로 단지 실선 하나로 클래스를 연결하여 표기하고,
두 번째 다이어그램은 Directed Association으로 클래스를 실선으로 연결 후 실선 끝에 화살표를 추가한 것이다.
화살표는 참조하는 쪽과 참조 당하는 쪽을 구분한다.
그러므로 두번째 다이어그램에서 Address는 User에 참조 당한다. 바꿔 말하면 User는 Address를 참조한다.
5. Aggregation(집합 연관)
Aggregation은 Composition과 함께 Association 관계를 조금 더 특수하게 나타낸 것으로 whole(전체)와 part(부분)의 관계를 나타낸다.
Association은 집합이라는 의미를 내포하지 않지만, Aggregation은 집합이라는 의미를 가지고 있다.
User가 전체이고 Address가 부분이다. 전체 쪽에 비어 있는 다이아몬드를 표기한다.
6. Composition(복합 연관)
Composition도 Aggregation과 비슷하게 whole(전체)와 part(부분)의 집합 관계를 나타내지만 개념적으로 Aggregation보다 더 강한 집합을 의미한다.
여기서 강한 집합이란 part가 whole에 종속적이어서 part가 whole을 소유한다는 뜻이다.
반면 Aggregation은 part가 whole에 독립적이어서 whole이 part를 빌려 쓰는 것과 비슷하다.
이러한 의미 때문에 Aggregation과는 명확하게 다르다는 점이 있다.
결론
애플리케이션의 규모가 커질수록, 클래스 다이어그램을 이용하여 관리하면 비용절감, 유지보수 용이 등등 이점이 많다. 왜냐하면 클래스 다이어그램 간의 관계를 한눈에 볼 수 있으므로 쉽게 파악하고 관리할 수 있기 때문이다.
StarUML 사용방법
StarUML을 실행하면 아래와 같은 창이 나온다.
클래스 다이어그램을 그리기 위해서는 “Default Approach” 를 선택 후 OK를 누르면 된다.
좌측에 클래스 다이어그램을 그리기 위한 도구들이 있다.
패키지, 인터페이스 등등 자기가 그리고자 하는 목적에 맞게 선택하여 그리면 된다.
나는 클래스와 클래스들의 관계를 나타내 주는 화살표를 이용하여 클래스 다이어그램을 그려보겠다.
클래스를 선택한 후 오른쪽 격자가 있는 공간에 마우스로 그려주면 된다.
다음과 같이 클래스 다이어그램이 그려지게 되는데 기본값으로 여러 사람의 이름이 랜덤으로 들어간다. 자신의 클래스명에 맞게 바꿔준다.
클래스 다이어그램이 3부분으로 나누어 지는데, 의미는 아래와 같다.
클래스 다이어그램을 더블클릭 하면 3개의 아이콘이 나온다.
왼쪽 첫번째 아이콘은 visibility로 클래스의 접근제어자(visibility)를 선택하는 곳이다.
접근제어자 | |
+ | public |
- | private |
# | protected |
~ | package |
두번째 아이콘은 클래스의 멤버변수(Attribute)를 설정하는 곳이다.
아래와 같이 해주면 된다.
세번째 아이콘은 클래스의 메서드(Operation)를 설정하는 곳이다.
아래와 같이 해주면 된다.
위 클래스 다이어그램을 코드로 표현하면 아래와 같다.
아래와 같이 관계(Relationship)를 연결하여 그려주면 된다.
'기타 ' 카테고리의 다른 글
이클립스 자바파일 한글 깨짐 (0) | 2020.01.07 |
---|---|
이클립스(Eclipse)에 eGit 설치 (0) | 2019.11.29 |
스플렁크(SPLUNK) 머신데이터 (0) | 2019.09.04 |
구글에드센스 승인과정 3번의 낙방 끝에..! (1) | 2019.08.22 |
컴퓨팅과 여성 (0) | 2019.08.09 |