CodeGym /Java блог /Случаен /Диаграма на UML класове
John Squirrels
Ниво
San Francisco

Диаграма на UML класове

Публикувано в групата

Въведение

Мисля, че всеки е чувал поговорката "Два пъти мери, веднъж режи". Това е истински съвет в програмирането. Винаги е по-добре да помислите за изпълнението, преди да отделите време за изпълнението му. По време на изпълнението често се налага да създавате класове и да мислите How ще си взаимодействат. Визуалното представяне на всичко това често може да ви помогне да намерите най-правилното решение. Тук на помощ ни идва UML Class Diagram.

Какво е UML?

Ако погледнете съответните изображения в търсачките, ще видите, че UML има нещо общо с диаграми, стрелки и квадрати. Трябва да знаете, че UML означава Унифициран език за моделиране. Обединен е важната дума тук. Това означава, че нашите изображения ще бъдат разбрани не само от нас, но и от всеки друг, който познава UML. Това е лингва франка за рисуване на диаграми.

Според Уикипедия,

„UML е език за моделиране с общо преднаmeaning, разработка в областта на софтуерното инженерство, който е предназначен да предостави standardн начин за визуализиране на дизайна на система.“
Най-интересното нещо, което не всеки би предположил е, че UML има спецификации. И дори има UML 2 спецификация. Повече информация за спецификацията е достъпна на уебсайта на Object Management Group . Всъщност тази група разработва UML спецификациите. Интересно е също, че UML не се ограничава до описание на структурата на класовете. Има много видове UML диаграми. Уикипедия има кратко описание на различни типове UML диаграми: UML диаграми . Връщайки се към UML диаграмите на класове, струва си да споменем книгата "Head First Design Patterns" , използва UML диаграми за илюстриране на дизайнерски модели. Изводът е, че UML наистина се използва. И се оказва, че познаването му и разбирането How да се използва са доста полезни.

Приложение

Нека разберем, че можем да работим с UML в IDE. Ще използваме IntelliJ IDEA като наша IDE. Ако използвате IntelliJ IDEA Ultimate, тогава ще имаме инсталиран плъгин „UML Support“ „извън кутията“. Позволява ви автоматично да генерирате красиви класови диаграми. Например, използвайте Ctrl+N or елемента от менюто "Навигация" -> "Клас", за да отидете до класа ArrayList. Сега в контекстното меню на името на класа изберете „Диаграма“ -> „Покажи изскачащ прозорец на диаграма“. В резултат на това получаваме красива диаграма. UML: от теория към практика - 2 Но Howво ще стане, ако искате сами да нарисувате диаграмата? И Howво, ако нямате Ultimate versionта? Използвайки IntelliJ IDEA Community Edition, нямаме друг избор. Така че трябва да разберем How е организирана една UML диаграма. първо,. Това е набор от инструменти за визуализация на графики. Плъгинът, който ще използваме, зависи от това. След инсталирането трябва да добавите директорията bin от инсталационната директория на Graphviz към променливата на средата PATH. След това в IntelliJ IDEA изберете File -> Settings в менюто. В прозореца „Настройки“ изберете категорията „Добавки“, щракнете върху бутона „Преглед на хранorща“ и инсталирайте приставката за интегриране на PlantUML . Какво е толкова добро в PlantUML? Той описва UML с помощта на език за описание на графики, наречен "точка", което го прави по-универсален, тъй като езикът на точките се използва не само от PlantUML. Нещо повече, всичко, което правим по-долу, може да бъде напequalsо не само в IDE, но и онлайн на planttext.com. След като инсталираме приставката PlantUML, ще можем да създаваме UML диаграми с помощта на "Файл" -> "Ново". Нека създадем диаграма на "UML клас". Това автоматично ще генерира шаблон с пример. Ще изтрием съдържанието му и ще добавим свое собствено. За да разберете How да представите това в текст, погледнете ръководството на PlantUML: plantuml class-diagram. UML: от теория към практика - 3Разчитайки на тези материали, нека започнем да създаваме нашата UML диаграма. Добавете следното съдържание, което описва два класа:

@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 съдържа някои обекти. В този случай ще има връзка на агрегиране. ArrayListе агрегат, тъй като съдържа други обекти. Казваме агрегиране, защото обектите на списъка могат да съществуват без списъка: те не са неразделна част от списъка. Техният живот не е обвързан с живота на списъка. Думата "агрегат" идва при нас от латински и се превежда като "сглобен", тоест нещо, съставено от нещо. Например, в живота имаме помпен възел (агрегат), който се състои от помпа и двигател. Самият монтаж може да бъде разглобен, като можем да оставим някои от компонентите му сами. Например да продадете or да поставите в друг монтаж. По същия начин е и в списъка. Това се изразява с празен ромб в съвкупността и непрекъсната линия. Ще представим това по следния начин:

class Object{
}
ArrayList o- Object
Сега искаме да покажем, че за разлика от ArrayList , класът LinkedList съдържа Node s — контейнери, които препращат към съхранените данни. В този случай Node са част от LinkedList и нямат независимо съществуване. Възелът не е самото съдържание. Съдържа само препратка към съдържанието. Например, когато добавим низ към LinkedList , ние добавяме нов възел , който съдържа препратка към низа, Howто и връзка към предишния и следващия възел. Тази връзка се нарича състав. Изобразява се чрез начертаване на непрекъсната линия със запълнен ромб върху композита (нещо, съставено от съставни части). Сега ще представим връзката като текст:

class Node{
}
LinkedList *-- Node
И сега трябва да се научите How да изобразявате друг важен тип връзка: зависимостта. Използва се, когато един клас използва друг, но класът не съдържа, нито наследява използвания клас. Например LinkedList и ArrayList знаят How да създадат ListIterator . Представяме това като стрелки с пунктирана линия:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
След като направим всичко това, получаваме: UML: от теория към практика - 4Можете да добавите толкова подробности, колкото е необходимо. Разбира се, няма нищо свръхестествено в начертаването на такава диаграма. Когато работите върху собствените си задачи, можете бързо да го начертаете на ръка. Това ще ви помогне да развиете способността да обмисляте архитектурата на приложението и да идентифицирате недостатъците в структурата на класа рано, а не след като вече сте прекарали деня в внедряване на грешен модел. Това изглежда като добра причина да опитате, нали? :)

Автоматизация

Има различни начини за автоматично генериране на PlantUML диаграми. Например, IDEA има приставката SketchIT , но не чертае диаграми напълно правилно. Да кажем, че реализацията на интерфейсите е начертана неправилно (показва се като наследство). В интернет има примери How да интегрирате това в процеса на изграждане на вашия проект. Например, можете да намерите How да използвате uml-java-docklet с Maven. За да демонстрираме, ще използваме Maven Archetype за бързо създаване на проект на Maven. Бягай

mvn archetype:generate
В отговор на Изберете номер or приложете филтър, оставете по подразбиране — просто натиснете Enter. Винаги ще бъде "maven-archetype-quickstart". Изберете най-новата version. След това ще отговорим на някои въпроси и ще завършим създаването на проекта: UML: от теория към практика - 5Maven не е предмет на тази статия, така че можете да намерите отговори на вашите въпроси относно Maven в Центъра за потребители на Maven . В генерирания проект отворете file с описание на проекта, pom.xml, за редактиране. Ще копираме съдържанието от описанието за инсталиране на uml-java-docklet в този файл. Артефактът, използван в описанието, не може да бъде намерен в централното хранorще на Maven. Но следното работи за мен: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. С други думи, в описанието просто трябва да замените groupId от "info.leadinglight" на "com.chfourie" и да зададете versionта на "1.0.0". След това можем да изпълним следните команди в директорията с file pom.xml:

mvn clean install
и

mvn javadoc: javadoc
Ако сега отворим генерираната documentация (explorer target\site\apidocs\index.html), ще видим UML диаграмите. Между другото, връзката на изпълнение вече се показва правилно :)

Заключение

Както можете да видите, UML ви позволява да визуализирате структурата на вашето приложение. Но UML може да направи много повече. Можете да използвате UML, за да опишете различни процеси във вашата компания or да опишете бизнес процеса, който обхваща функция, която пишете работи. Ще трябва сами да решите колко полезен е UML лично за вас, но независимо Howво решите, ще бъде полезно да намерите време да научите повече за него.
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION