CodeGym /Java blog /Véletlen /UML osztálydiagram
John Squirrels
Szint
San Francisco

UML osztálydiagram

Megjelent a csoportban

Bevezetés

Szerintem mindenki hallotta már azt a mondást, hogy "kétszer mérj, egyszer vágj". Igazi tanács a programozáshoz. Mindig jobb átgondolni a megvalósítást, mielőtt bármilyen időt töltene annak végrehajtásával. A megvalósítás során gyakran osztályokat kell létrehoznia, és meg kell gondolnia, hogyan fognak kölcsönhatásba lépni. Mindennek vizuális megjelenítése gyakran segíthet a leghelyesebb megoldás megtalálásában. Itt jön a segítségünkre az UML osztálydiagram.

Mi az UML?

Ha megnézi a releváns képeket a keresőmotorokban, látni fogja, hogy az UML-nek köze van a diagramokhoz, nyilakhoz és négyzetekhez. Tudnia kell, hogy az UML az egységes modellezési nyelv rövidítése. Az egységesítés itt a fontos szó. Ez azt jelenti, hogy képeinket nem csak mi értjük meg, hanem bárki más, aki ismeri az UML-t. Ez a lingua franca a diagramok rajzolásához.

A Wikipédia szerint

"Az UML egy általános célú, fejlesztő, modellező nyelv a szoftverfejlesztés területén, amelynek célja, hogy szabványos módot biztosítson a rendszer tervezésének megjelenítésére."
A legérdekesebb dolog, amit nem mindenki sejtene, az az, hogy az UML-nek vannak specifikációi. És még egy UML 2 specifikáció is létezik. A specifikációról további információ az Object Management Group honlapján érhető el. Valójában ez a csoport fejleszti az UML specifikációkat. Az is érdekes, hogy az UML nem korlátozódik az osztályok szerkezetének leírására. Sokféle UML diagram létezik. A Wikipédia rövid leírást tartalmaz az UML diagramok különféle típusairól: UML diagramok . Visszatérve az UML osztálydiagramokhoz, érdemes megemlíteni a "Head First Design Patterns" című könyvet , amely UML diagramokat használ a tervezési minták illusztrálására. A lényeg az, hogy az UML-t valóban használják. És kiderül, hogy ennek ismerete és használatának megértése nagyon hasznos.

Alkalmazás

Gondoljuk át, hogy tudunk dolgozni UML-lel IDE-ben. Az IntelliJ IDEA-t fogjuk használni IDE-ként. Ha IntelliJ IDEA Ultimate-et használ, akkor az „UML Support” beépülő modult „kivételesen” telepítjük. Lehetővé teszi gyönyörű osztálydiagramok automatikus generálását. Például használja a Ctrl+N vagy a "Navigate" -> "Class" menüpontot az ArrayList osztály eléréséhez. Most az osztálynév helyi menüjében válassza a "Diagram" -> "Show diagram popup" lehetőséget. Ennek eredményeként egy gyönyörű diagramot kapunk. UML: elmélettől a gyakorlatig - 2 De mi van akkor, ha saját maga szeretné megrajzolni a diagramot? És mi van, ha nincs meg az Ultimate verzió? Az IntelliJ IDEA Community Edition használatával nincs más választásunk. Tehát meg kell értenünk, hogyan szerveződik az UML diagram. Első,. Ez egy grafikon megjelenítési eszközkészlet. Az általunk használt bővítmény attól függ. A telepítés után hozzá kell adni a bin könyvtárat a Graphviz telepítési könyvtárából a PATH környezeti változóhoz. Ezután az IntelliJ IDEA-ban válassza a Fájl -> Beállítások menüpontot. A "Beállítások" ablakban válassza ki a "Plugins" kategóriát, kattintson a "Lerakatok tallózása" gombra, és telepítse a PlantUML integrációs bővítményt. Mi olyan jó a PlantUML-ban? Az UML-t a "dot" nevű gráfleíró nyelven írja le, ami univerzálisabbá teszi, mivel a pontnyelvet nem csak a PlantUML használja. Sőt, mindaz, amit alább teszünk, nem csak IDE-ben, hanem online is megtehető a planttext.com oldalon. A PlantUML beépülő modul telepítése után a "Fájl" -> "Új" menüponttal UML-diagramokat készíthetünk. Hozzunk létre egy "UML osztály" diagramot. Ez automatikusan létrehoz egy sablont egy példával. Töröljük a tartalmát, és hozzáadjuk a sajátunkat. Annak megértéséhez, hogyan kell ezt szövegben ábrázolni, vessen egy pillantást a PlantUML kézikönyvre: plantuml osztálydiagram. UML: elmélettől a gyakorlatig - 3Ezekre az anyagokra támaszkodva kezdjük el az UML diagram elkészítését. Adja hozzá a következő tartalmat, amely két osztályt ír le:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Az eredmény megtekintéséhez az IDEA-ban válassza a "Nézet" -> "Eszközablakok" -> "PlantUML" lehetőséget. Csak két négyzetet kapunk, amelyek osztályokat képviselnek. Tudjuk, hogy mindkét osztály megvalósítja a Lista felületet. Ezt az osztálykapcsolatot realizációnak nevezzük. Ezt a kapcsolatot egy szaggatott vonallal ellátott nyíl ábrázolja. Rajzoljuk le:

interface List
List <|.. ArrayList
List <|.. LinkedList
A Lista a Gyűjtemény osztály egyik gyermeke. Vagyis a Collectiont örökli . Ezt az összefüggést általánosításnak nevezzük. Úgy néz ki, mint egy nyíl, közönséges folyamatos vonallal. Rajzoljuk le:

interface Collection
Collection <|-- List
A következő típusú kapcsolathoz adjon hozzá egy bejegyzést az ArrayList osztályleíráshoz a csomag privát elemtömbjéről:

~Object[] elementData
Most szeretnénk megmutatni, hogy az ArrayList tartalmaz néhány objektumot. Ebben az esetben aggregációs kapcsolat jön létre. Tömb listaaggregátum, mivel más objektumokat is tartalmaz. Aggregációt azért mondunk, mert a lista objektumai létezhetnek a lista nélkül is: nem szerves részei a listának. Élettartamuk nincs a lista élettartamához kötve. Az „aggregátum” szó a latinból származik, és „összeszerelt”-nek fordítják, vagyis valami, ami valamiből áll. Például az életben van egy szivattyú szerelvényünk (aggregátumunk), amely egy szivattyúból és egy motorból áll. Maga az összeállítás szétszedhető, egyes alkatrészeit békén is hagyhatjuk. Például eladni vagy másik szerelvénybe tenni. Ugyanígy van ez egy listában is. Ezt az aggregátumnál üres rombusz és egy folytonos vonal fejezi ki. Ezt a következőképpen ábrázoljuk:

class Object{
}
ArrayList o- Object
Most szeretnénk megmutatni, hogy az ArrayList- től eltérően a LinkedList osztály Node -okat tartalmaz – olyan konténereket, amelyek a tárolt adatokra hivatkoznak. Ebben az esetben a csomópontok a LinkedList részei , és nem rendelkeznek önálló létezéssel. A csomópont nem maga a tartalom. Csak hivatkozást tartalmaz a tartalomra. Például amikor hozzáadunk egy karakterláncot egy LinkedList listához , akkor hozzáadunk egy új csomópontot , amely hivatkozást tartalmaz a karakterláncra, valamint hivatkozást az előző és következő csomópontra .. Ezt a kapcsolatot kompozíciónak nevezzük. Úgy ábrázolják, hogy folytonos vonalat húznak egy kitöltött rombusszal a kompoziton (valami alkotórészekből). Most a kapcsolatot szövegként ábrázoljuk:

class Node{
}
LinkedList *-- Node
És most meg kell tanulnia, hogyan ábrázolja a kapcsolat egy másik fontos típusát: a függőséget. Akkor használatos, ha az egyik osztály egy másikat használ, de az osztály nem tartalmazza és nem örökli a használt osztályt. Például a LinkedList és az ArrayList tudja, hogyan kell ListIteratort létrehozni . Ezt nyilakként ábrázoljuk szaggatott vonallal:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Mindezek elvégzése után a következőt kapjuk: UML: elmélettől a gyakorlatig - 4Annyi részletet adhat hozzá, amennyi szükséges. Természetesen nincs semmi természetfeletti egy ilyen diagram megrajzolásában. Amikor saját feladatain dolgozik, gyorsan kirajzolhatja kézzel. Ez segít fejleszteni azt a képességet, hogy átgondolja az alkalmazás architektúráját, és korán felismerje az osztálystruktúra hiányosságait, nem pedig azután, hogy már a napot rossz modell implementálásával töltötte. Ez jó oknak tűnik, hogy kipróbáld, nem? :)

Automatizálás

A PlantUML diagramok automatikus generálására különféle módok állnak rendelkezésre. Például az IDEA rendelkezik a SketchIT beépülő modullal, de nem rajzolja meg teljesen megfelelően a diagramokat. Tegyük fel, hogy az interfészek megvalósítása rosszul van megrajzolva (öröklődésként jelenik meg). Az interneten vannak példák arra, hogyan lehet ezt integrálni a projekt építési folyamatába. Például megtalálhatja az uml-java-docklet használatát a Maven-nel. A demonstrációhoz a Maven Archetype segítségével gyorsan létrehozhatunk egy Maven projektet. Fuss

mvn archetype:generate
A Válasszon számot vagy alkalmazzon szűrőt kérdésre válaszul hagyja meg az alapértelmezettet – csak nyomja meg az Enter billentyűt. Mindig "maven-archetype-quickstart" lesz. Válassza ki a legújabb verziót. Ezután megválaszolunk néhány kérdést, és befejezzük a projekt létrehozását: UML: elmélettől a gyakorlatig - 5A Maven nem tárgya ennek a cikknek, így a Maven-nel kapcsolatos kérdéseire választ találhat a Maven Users Centerben . A létrehozott projektben nyissa meg a projektleíró fájlt (pom.xml) szerkesztéshez. Az uml-java-docklet telepítési leírásának tartalmát átmásoljuk ebbe a fájlba. A leírásban használt műtermék nem található a Maven Central adattárában. De a következő működött nálam: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Más szóval, a leírásban egyszerűen le kell cserélnie a groupId-t az "info.leadinglight"-ról "com.chfourie"-ra, és be kell állítania a verziót "1.0.0"-ra. Ezt követően a következő parancsokat tudjuk végrehajtani a könyvtárban a pom.xml fájllal:

mvn clean install
és

mvn javadoc: javadoc
Ha most megnyitjuk a generált dokumentációt (explorer target\site\apidocs\index.html), látni fogjuk az UML diagramokat. Egyébként a megvalósítási kapcsolat most már helyesen jelenik meg :)

Következtetés

Amint láthatja, az UML lehetővé teszi az alkalmazás szerkezetének megjelenítését. De az UML sokkal többre képes. Használhatja az UML-t a vállalaton belüli különféle folyamatok leírására, vagy olyan üzleti folyamatok leírására, amelyek magukban foglalják az éppen írt funkciót. Önnek kell eldöntenie, mennyire hasznos az Ön számára az UML, de bárhogyan is dönt, hasznos lesz, ha időt szán arra, hogy többet megtudjon róla.
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION