소개
어린시절 누구나 “ 두 번 측정하고 한 번 자르다 ” 라는 말을 들어본 적이 있을 것입니다 . 프로그래밍에서도 마찬가지다. 실행하는 데 시간을 보내기 전에 구현에 대해 항상 생각하는 것이 좋습니다. 구현 중에 클래스를 생성하고 상호 작용을 고안해야 하는 경우가 많습니다. 그리고 이를 시각적으로 표현하면 가장 올바른 방법으로 문제를 해결하는 데 도움이 되는 경우가 많습니다. 이것이 바로 UML이 우리를 돕는 곳입니다 .UML이란 무엇입니까?
검색 엔진에서 사진을 보면 UML이 다이어그램, 화살표 및 사각형에 관한 것임을 분명히 알 수 있습니다. 중요한 것은 UML이 Unified Modeling Language 로 변환된다는 것입니다 . 여기서 통일이라는 단어가 중요합니다. 즉, 우리 그림은 우리뿐만 아니라 UML을 아는 다른 사람들도 이해할 수 있습니다. 이것은 다이어그램을 그리는 데 사용되는 국제 언어임이 밝혀졌습니다.
Wikipedia에 따르면
UML은 소프트웨어 개발, 비즈니스 프로세스 모델링, 시스템 설계 및 조직 구조 표시의 객체 모델링을 위한 그래픽 설명 언어입니다.모든 사람이 생각하거나 깨닫지 못하는 가장 흥미로운 점은 UML에 사양이 있다는 것입니다. 게다가 UML2 사양도 있습니다. 사양에 대한 자세한 내용은 개체 관리 그룹 웹사이트에서 확인할 수 있습니다 . 실제로 이 그룹에서는 UML 사양을 개발하고 있습니다. UML이 클래스 구조를 설명하는 데만 국한되지 않는다는 점도 흥미롭습니다. UML 다이어그램에는 다양한 유형이 있습니다. UML 다이어그램 유형에 대한 간략한 설명은 동일한 Wikipedia: UML 다이어그램 또는 Timur Batyrshinov의 UML 다이어그램 검토 비디오에서 볼 수 있습니다 . UML은 다양한 프로세스를 설명하는 데에도 널리 사용됩니다. 예를 들면 JWT를 사용한 Single Sign-On입니다 . UML 클래스 다이어그램의 사용으로 돌아가서 동일한 UML 다이어그램으로 패턴을 설명하는 Head First: Design Patterns 책을 주목할 가치가 있습니다. UML이 실제로 사용되고 있는 것으로 밝혀졌습니다. 그리고 그 적용에 대한 지식과 이해는 매우 유용한 기술이라는 것이 밝혀졌습니다.
애플리케이션
IDE에서 동일한 UML을 사용하여 작업할 수 있는 방법을 살펴보겠습니다. IntelliJ Idea를 IDE로 활용해 보겠습니다 . IntelliJ Idea Ultimate를 사용하면 즉시 " UML Support " 플러그인이 설치 됩니다 . 이를 통해 아름다운 클래스 다이어그램을 자동으로 생성할 수 있습니다. 예를 들어 Ctrl+N을 사용하거나 메뉴 항목 "Navigate" -> "Class"를 사용하면 ArrayList 클래스로 이동합니다 . 이제 클래스 이름에 대한 컨텍스트 메뉴를 통해 “다이어그램” -> “다이어그램 팝업 표시”를 선택합니다. 결과적으로 우리는 아름다운 다이어그램을 얻습니다.
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Idea에서 결과를 보려면 "View" -> "Tool Windows" -> "PlantUML"을 선택하세요. 클래스를 나타내는 두 개의 사각형만 얻을 수 있습니다. 우리가 알고 있듯이 이 두 클래스는 모두 List 인터페이스를 구현합니다. 이 클래스 관계를 구현이라고 합니다. 이러한 연결을 나타내려면 점선이 있는 화살표를 사용하십시오. 그것을 묘사해 보자:
interface List
List <|.. ArrayList
List <|.. LinkedList
List
- 하위 클래스 중 하나입니다 Collection
. 즉, Collection에서 상속됩니다. 이러한 연결을 일반화라고 합니다. 규칙적인 연속선이 있는 화살표처럼 보입니다. 그것을 묘사해 보자:
interface Collection
Collection <|-- List
다음 연결 유형의 경우 패키지 전용 요소 배열 ArrayList
에 대한 항목을 클래스 설명에 추가합니다.
~Object[] elementData
이제 우리는 어떤 객체가 포함되어 있는지 보여주고 싶습니다 ArrayList
. 이 경우 연결 유형은 aggregation 이 됩니다 . 이 경우의 단위는 ArrayList
이므로 여기에는 다른 개체가 포함되어 있습니다. 목록의 개체는 목록 없이도 존재할 수 있기 때문에 집계를 선택합니다. 목록의 필수 부분은 아닙니다. 그들의 수명은 목록의 수명과 연결되어 있지 않습니다. Aggregate는 라틴어에서 "조립된", 즉 무언가로 구성된 것으로 번역됩니다. 예를 들어, 인생에는 펌프와 모터로 구성된 펌핑 장치가 있습니다. 장치 자체를 분해하여 일부 구성 요소를 남겨 둘 수 있습니다. 예를 들어, 판매하거나 다른 단위에 넣는 것입니다. 목록도 마찬가지다. 그리고 이는 단위 근처의 빈 다이아몬드와 연속된 선의 형태로 표현됩니다. 이를 다음과 같이 묘사해보자:
class Object{
}
ArrayList o- Object
ArrayList
이제 우리는 와 달리 클래스에 저장된 데이터를 참조하는 컨테이너가 LinkedList
포함되어 있음 을 보여주고 싶습니다 . Node
이 경우 Node
그들은 그들 자신의 일부 LinkedList
이며 따로 살 수 없습니다. Node
콘텐츠가 직접 저장되지는 않지만 해당 콘텐츠에 대한 링크만 포함되어 있습니다. 예를 들어 LinkedList
행 에 추가할 때 Node
해당 행에 대한 링크와 이전 및 다음 행에 대한 링크가 포함된 새 를 추가합니다 Node
. 이러한 유형의 의사소통을 구성 이라고 합니다 . 복합재(부품으로 구성된 복합재)를 표시하려면 연속된 선과 함께 유색 다이아몬드가 그려집니다. 이제 이것을 연결의 텍스트 표시로 작성해 보겠습니다.
class Node{
}
LinkedList *-- Node
이제 우리는 또 다른 중요한 관계 유형인 종속 관계를 표시하는 방법을 배워야 합니다. 한 클래스가 다른 클래스를 사용할 때 사용되며, 해당 클래스는 사용 중인 클래스를 포함하지 않으며 그 하위 클래스도 아닙니다. 예 를 들어, LinkedList
그들은 . 이것을 점선이 있는 화살표로 표시해 보겠습니다. ArrayList
ListIterator
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
이 모든 것이 끝나면 다음과 같이 보일 것입니다:
오토메이션
PlantUML 다이어그램을 자동으로 생성하는 방법에는 여러 가지가 있습니다. 예를 들어 Idea 에는 SketchIT 플러그인이 있지만 올바르게 그려지지는 않습니다. 예를 들어, 인터페이스 구현이 잘못 그려졌습니다(상속으로 표시됨). 또한 이를 프로젝트의 빌드 라이프사이클에 포함시키는 방법에 대한 예제가 인터넷에 있습니다. uml-java-docklet을 사용하는 Maven 의 예가 있다고 가정해 보겠습니다 . 이것이 어떻게 수행되는지 보여주기 위해 Maven Archetype을 사용하여 Maven 프로젝트를 빠르게 생성하겠습니다. 다음 명령을 실행해 보겠습니다. 필터를 선택하라는 메시지가 표시되면( 숫자 선택 또는 필터 적용 ) 간단히 Enter를 눌러 기본값을 그대로 둡니다. 이는 항상 " maven-archetype-quickstart " 입니다 . 최신 버전을 선택하세요. 다음으로 질문에 답하고 프로젝트 생성을 완료합니다.mvn archetype:generate
mvn clean install
mvn javadoc:javadoc
GO TO FULL VERSION