Ноу Інти, лекція, початкові відомості про об'єктному програмуванні

6.14. Reverse engineering - побудова UML-діаграм за розробленими класам

Середа NetBeans при встановленому пакеті NetBeans Enterprise Pack дозволяє за наявним вихідного коду побудувати UML -діаграмми. Для цього слід відкрити проект і натиснути на головній панелі середовища розробки кнопку

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.8. Кнопка "Reverse Engineering"

З'явиться діалогова форма завдання параметрів створюваного проекту, в якій слід змінити назву проекту на осмислене, за яким легко можна буде визначити, до якого проекту Java він відноситься.

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


збільшити зображення
Мал. 6.9. Діалогова форма завдання параметрів створюваного UML-проекту

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.10. Параметри UML-проекту, що відносяться до класу Circle

Для класу показуються конструктори і звичайні методи (вузол Operations), а також відносини спадкування та інші варіанти відносин (вузол Relationships).

В UML -проект можна згенерувати UML -діаграмми, клацнувши правою кнопкою миші по імені відповідного класу:

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.11. Спливаюче меню дій з класом в UML-проект

Якщо вибрати пункт "Create Diagram From Selected Elements" ( "Створити діаграму з обраних елементів"), і далі вибрати тип діаграми "Class Diagram",

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.12. Вибір типу створюваної диаграма

можна отримати діаграму такого виду:

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.13. Діаграма для класу Circle

При цьому краще замінити ім'я створюваної діаграми, наприклад, на Circle Diagram. Перейменування можна зробити і пізніше, клацнувши правою кнопкою миші по імені діаграми і вибравши в спливаючому меню пункт Rename ... ( "Перейменувати ...").

Якщо ж виділити Circle, Dot, Figure. ScalableFigure, ми отримаємо діаграму успадкування, якій можна дати ім'я Inheritance Diagram.

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.14. Діаграма для класів Circle, Dot, Figure, ScalableFigure

Якщо для класу Circle у спливаючому меню вибрати пункт "Generate Dependency Diagram" ( "Згенерувати діаграму залежностей"), отримаємо наступну діаграму:

Ноу Інти, лекція, початкові відомості про об'єктному програмуванні


Мал. 6.15. Діаграма залежностей для класу Circle

На діаграмах можна додавати в класи або видаляти з них поля і методи, проводити перейменування, міняти модифікатори. Причому зміни, зроблені на будь-який з діаграм, автоматично відбиваються як на інших діаграмах UML-проекту, так і в вихідному коді проекту Java (це проектування - Forward Enineering). І навпаки - зміни, зроблені у вихідному коді Java. автоматично застосовуються до діаграм UML (це зворотне проектування - Reverse Enineering).

В даний час робота з UML -проект в NetBeans Enterprise Pack не до кінця налагоджена, іноді спостерігаються "баги" (дрібні помилки). Але можна сподіватися, що найближчим часом недоліки будуть виправлені.

короткі підсумки

  • За допомогою засобів Reverse Engineering можна створювати UML -діаграмми класів і залежностей класів. Причому після створення UML-проекту, що супроводжує Java-проект, зміни, зроблені у вихідному коді Java, автоматично застосовуються до діаграм UML. і навпаки.
  • Типові помилки:

    • У класі MathUtil написати підпрограму обчислення факторіала public static double factorial (int n)

    Модифікатор static позначає підпрограму як метод класу. Тобто дозволяє викликати метод через ім'я класу без створення об'єкта.

    Нагадаємо, що факторіал натурального числа n - це добуток всіх натуральних чисел від 1 до n:

    Крім того, 0! вважається рівним 1. Позначення факторіала у вигляді n! математичне, в Java символ "!" зарезервований для інших цілей. Також написати підпрограми обчислення факторіала з іншими типами значень, що повертаються: public static long factorial_long (int n) і public static int factorial_int (int n)

    Порівняти роботу підпрограм при n = 0,1,5,10,20,50,100. Пояснити результати.

    Схожі статті