6.14. Reverse inginerie - construirea diagramelor UML pentru clasele dezvoltate
Mediul NetBeans, cu pachetul NetBeans Enterprise Pack instalat, vă permite să creați diagrame UML utilizând codul sursă disponibil. Pentru aceasta, deschideți proiectul și faceți clic pe butonul din panoul principal al mediului de dezvoltare
![Know-how, prelegere, informații inițiale despre programarea obiectului (Circle Figure ScalableFigure) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-91498d20.jpg)
Fig. 6.8. Buton "Reverse Engineering"
Se va afișa o formă de dialog pentru specificarea parametrilor proiectului creat, în care trebuie să schimbați numele proiectului într-unul semnificativ, prin care puteți să determinați cu ușurință la care proiect de Java aparține.
![Know-how, prelegere, informații inițiale despre programarea obiectului (diagrame aplicate automat) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-81554c88.jpg)
click pentru a mari imaginea
Fig. 6.9. Formular de dialog pentru specificarea parametrilor proiectului UML creat
![Know-how, prelegere, informații inițiale despre programarea obiectului (Java se aplică automat) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-86927df4.jpg)
Fig. 6.10. Parametrii proiectului UML care aparțin clasei Circle
Pentru clasa, constructorii și metodele obișnuite (nodul Operații) sunt afișate, precum și relațiile de moștenire și alte variante de relații (nodul Relații).
În proiectul UML, puteți genera diagrame UML făcând clic dreapta pe numele clasei corespunzătoare:
![Know-how, prelegere, informații inițiale despre programarea obiectului (NetBeans Enterprise Pack) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-353f068a.jpg)
Fig. 6.11. Meniul de acțiune pop-up cu clasă în proiect UML
Dacă selectați "Creare diagrama din elementele selectate" și apoi selectați tipul diagramei "Diagrama de clasă"
![Know-how, prelegere, informații inițiale despre programarea obiectului (diagrame aplicate automat) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-c4299d2c.jpg)
Fig. 6.12. Selectarea tipului de diagramă ce urmează a fi creată
puteți obține o diagramă de acest fel:
![Know-how, prelegere, informații inițiale despre programarea obiectului (Java se aplică automat) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-7b76b031.jpg)
Fig. 6.13. Grafic pentru clasa Cercului
Este mai bine să înlocuiți numele diagramei pe care o creați, de exemplu, cu diagrama Circle. Redenumirea se poate face mai târziu, făcând clic dreapta pe numele diagramei și selectând Rename ... din meniul pop-up care apare.
Dacă selectați Cerc, Dot, Figura. ScalableFigure, obținem o diagramă de mostenire, care poate fi numită Diagramă moștenire.
![Know-how, prelegere, informații inițiale despre programarea obiectului (Java se aplică automat) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-d12bd376.jpg)
Fig. 6.14. Diagrama pentru Cerc, Dot, Figura, Imagine Scalabilă
Dacă selectați "Generați diagrama dependenței" din meniul pop-up pentru clasa Circle, vom obține următoarea diagramă:
![Know-how, prelegere, informații inițiale despre programarea obiectului (Circle Figure ScalableFigure) Cunoștințe, prelegere, informații inițiale despre programarea obiectului](https://images-on-off.com/images/134/nouintuitlektsiyanachalniesvedeniyaobobe-caabeda3.jpg)
Fig. 6.15. Diagrama dependenței pentru clasa Cerc
În diagrame, puteți adăuga sau elimina câmpuri și metode din clase, redenumi, schimbați modificatori. Iar modificările aduse oricarei diagrame sunt reflectate automat atât în alte diagrame ale proiectului UML, cât și în codul sursă al proiectului Java (acest design este Forward Enineering). Și invers - schimbările făcute în codul sursă Java. se aplică automat diagramelor UML (aceasta este ingineria inversă - Reverse Enineering).
În prezent, lucrul cu proiectele UML din NetBeans Enterprise Pack nu este complet depanat, uneori există "bug-uri" (erori minore). Dar sperăm că în viitorul apropiat deficiențele vor fi corectate.
Rezultatele rezumate
Erori tipice:
- În clasa MathUtil scrieți o subrutină pentru calculul factorialului factorial dublu factorial static (int n)
Modificatorul static marchează subrutina ca metodă de clasă. Aceasta înseamnă că vă permite să apelați metoda prin numele clasei fără a crea un obiect.
Reamintim că factorialul unui număr natural n este produsul tuturor întregurilor pozitive de la 1 la n:
În plus, 0! este considerată egală cu 1. Desemnarea factorialului în forma n! matematică, în Java simbolul "!" rezervate în alte scopuri. De asemenea scrieți subrutine pentru calcularea factorialiilor cu alte tipuri de valori returnate: static public long factorial_long (int n) și static public int factorial_int (int n)
Comparați activitatea subrutinelor cu n = 0,1,5,10,20,50,100. Explicați rezultatele.