1 of 37

1

LVIV STATE UNIVERSITY OF LIFE SAFETY

THE STATE EMERGENCY SERVICE OF

UKRAINE

ЛЕКЦІЯ №17. ІНСТРУМЕНТ ЗБІРКИ ПРОЄКТУ MAVEN. UML-ДІАГРАМИ КЛАСІВ

2 of 37

2

ПЛАН

  • Інструмент збірки проєкту Maven
  • UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

3 of 37

3

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

4 of 37

4

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Maven - інструмент для автоматизації збірки проєктів.

Чим складніше ПЗ, що розробляється, і чим більше воно використовує сторонніх бібліотек і ресурсів, тим складніше буде розробникам для складання. Maven розроблено для полегшення цієї роботи.

Окремою перевагою є незалежність фреймворку від ОС. При роботі із командного рядка Maven дозволяє не зважати на цей аспект.

5 of 37

5

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

HOW TO INSTALL MAVEN?

6 of 37

6

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

MAVEN: архетип

Архетип - це простими словами, шаблон для створення нових проєктів.

Найпростіший та найзручніший спосіб створення нового проекту в Apache maven, це створення його з архетипу.

Цитуючи офіційну документацію: “архетип - це є модель, за якою робляться всі інші речі такого роду”.

Усього існує порядку 1800 відомих архетипів і ще більше неопублікованих.

7 of 37

7

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

8 of 37

8

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

MAVEN: архетип

  • Ще одна перевага – це гнучке управління залежностями. Maven вміє підвантажувати до свого локального репозиторію сторонні бібліотеки, вибирати необхідну версію пакета, обробляти транзитивні залежності
  • Транзитивні залежності дозволяють уникати необхідності додаткової вказівки в секції dependencies бібліотек, які потрібні для самої залежності, і maven включає їх у проєкт автоматично.
  • Під час вирішення конфлікту версій використовується принцип «найближчої залежності», тобто вибираєтьсся залежність, шлях до якої через список залежних проєктів є найкоротшим.
  • Команди mvn dependency:list та mvn dependency: tree дозволяють вивести в консоль залежності у вигляді списку або дерева відповідно.

9 of 37

9

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Стандартна структура папок - це одна із реалізацій принципу архетипів у Maven. наступна структура показує найважливіші каталоги для проекту на Java

Кореневий каталог (папка) проєкту, яка  містить у собі файл pom.xml та подальші підкаталоги

  • src: всі вхідні файли
  • src/main/java: вихідні файли на Java
  • src/main/resources: інші файли, які використовуються при компіляції або виконанні, напр. fxml/css-файли
  • target: всі створювані в процесі роботи файли мавена
  • target/classes: компільовані Java-класи

10 of 37

10

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

POM.XML

pom.xml - це конфігураційний файл проекту, що збирається Maven-ом. Це і є файл опису проекту, на основі якого здійснюються всі операції Maven. Він написаний мовою POM, що входить до сімейства XML.

11 of 37

11

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

ТЕГИ  POM.XML

12 of 37

12

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

13 of 37

13

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

VERSION -SNAPSHOT

  • SNAPSHOT – це спеціальна версія, яка відображає поточну робочу копію. При кожній збірці maven перевіряє наявність нової версії snapshot на віддаленому репозиторії.
  • У випадку із звичайною версією, якщо maven одного разу завантажив версію business-logic: 1.0, він більше не намагатиметься завантажити нову версію 1.0 з репозиторію. Це станеться тільки тоді, коли версія зміниться.
  • У випадку із snapshot, maven автоматично підтягуватиме крайній snapshot щоразу, коли команда виконуватиме складання проєкту.

14 of 37

14

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

MAVEN REPOSITORIES

local (локальний)

central (центральний)

remote(віддалений)

15 of 37

15

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

16 of 37

16

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

17 of 37

17

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

18 of 37

18

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Життєвий цикл збірки Maven - це чітко визначена послідовність фаз під час виконання яких мають бути досягнуті певні цілі.

Існує 23 фази збірки, проте окремо стоять clean та  site. Вони не виконуються, якщо спеціально не вказані у рядку запуску.

MAVEN: LIFECYCLE

19 of 37

19

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

20 of 37

20

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

MAVEN: LIFECYCLE

21 of 37

21

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

MAVEN: LIFECYCLE

22 of 37

22

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

MAVEN: PLUGINS

Плагіни в Maven – це розширення, які виконують додаткові завдання в процесі збірки проєкту.

Вони дозволяють:

  • Компілювати код
  • Запускати тести
  • Пакувати додаток у JAR/WAR
  • Генерувати документацію
  • Оновлювати залежності

23 of 37

23

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Типи плагінів

  • Build Plugins – виконується під час збірки (compile, test, package).
  • Reporting Plugins – створює звіти (site, javadoc).

24 of 37

24

СТАНОМ НА 01.02.2023

Інструмент збірки проєкту Maven

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

JAR (Java ARchive) – це архівний файл у форматі ZIP, який містить скомпільовані .class файли, ресурси (зображення, конфігураційні файли) та файл MANIFEST.MF. JAR-файли використовуються для зберігання та розповсюдження Java-додатків і бібліотек.

Навіщо потрібен JAR?

✔️ Зручне розповсюдження – один файл замість багатьох .class.�✔️ Виконувані програми – можна запустити через java -jar.

✔️ Переносимість – працює на всіх платформах з JVM.

✔️ Повторне використання – JAR можуть містити бібліотеки

(.jar файли підключають у проєкті).

25 of 37

25

UML-діаграми класів

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

26 of 37

26

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

UML (Unified Modeling Language) — це уніфікована мова моделювання, яка використовується для візуального представлення об’єктно-орієнтованих систем. UML дозволяє створювати моделі програмного забезпечення, допомагаючи розробникам, архітекторам і аналітикам краще розуміти структуру та взаємодію компонентів системи.

Одним із найважливіших типів UML-діаграм є діаграма класів. Вона описує класи, їхні атрибути, методи та зв’язки між ними, що є основою для розробки ООП-системи.

27 of 37

27

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Переваги використання UML-діаграм класів:

  • Чітке уявлення про структуру програми перед написанням коду.
  • Полегшення командної роботи та спілкування між розробниками.
  • Спрощення внесення змін до архітектури.
  • Поліпшення розуміння взаємодії об’єктів.

28 of 37

28

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Кроки, необхідні для створення UML-діаграми класів:

  1. Визначити мету та обсяг
  2. Визначте та позначте класи.
  3. Додайте атрибути
  4. Додайте методи

Умовні позначення доступу:

  • + (public) – відкритий доступ
  • - (private) – закритий доступ
  • # (protected) – доступний у підкласах
  • ~ (package-private) – доступний у межах пакету

29 of 37

29

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

5. Встановіть зв'язки між класами

Наслідування (Generalization) – один клас успадковує інший.

Інтерфейси (Interface) – визначають контракт для класів

30 of 37

30

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

5. Встановіть зв'язки між класами

Асоціація (Association) – звичайний зв’язок між класами (вказує на те, що один клас пов’язаний з іншим, але не обов’язково залежить)

31 of 37

31

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

5. Встановіть зв'язки між класами

Агрегація (Aggregation) – "слабка" залежність між об’єктами (частина може існувати без цілого) (особливий тип асоціації, агрегація, коли один клас містить або складається з інших класів. Ціле та його частини)

32 of 37

32

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Залежність (Dependency) – один клас використовує інший у своїх методах.

5. Встановіть зв'язки між класами

33 of 37

33

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Композиція (Composition) – "сильна" залежність (частина не може існувати без цілого)

5. Встановіть зв'язки між класами

34 of 37

34

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

Корисні плагіни для UML у IntelliJ IDEA

  • PlantUML Integration – дозволяє створювати UML-діаграми за допомогою текстових описів.
  • UML Support – вбудований інструмент для автоматичного генерування UML-діаграм.
  • Graphviz (Dot) Plugin – використовується для візуалізації графів, зокрема UML.
  • SimpleUML – дозволяє вручну малювати UML-діаграми прямо в середовищі IntelliJ IDEA.
  • Code Iris – аналізує проєкт і будує UML-діаграми класів автоматично.

35 of 37

35

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

36 of 37

36

СТАНОМ НА 01.02.2023

UML-діаграми класів

THE STATE EMERGENCY SERVICEOF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

STATE SERVICE OF EMERGENCY SITUATIONS IN UKRAINE

THE STATE EMERGENCY SERVICE OF UKRAINE

LVIV STATE UNIVERSITY OF LIFE SAFETY

37 of 37

37