CodeGym /Java Blog /Random /Diagram ng Klase ng UML
John Squirrels
Antas
San Francisco

Diagram ng Klase ng UML

Nai-publish sa grupo

Panimula

Sa palagay ko narinig na ng lahat ang kasabihang "Sukatin ng dalawang beses, hiwa ng isang beses". Ito ay tunay na payo sa programming. Laging mas mahusay na pag-isipan ang tungkol sa pagpapatupad bago mo gugulin ang anumang oras sa pagsasagawa nito. Sa panahon ng pagpapatupad, madalas mong kailangang gumawa ng mga klase at pag-isipan kung paano sila makikipag-ugnayan. Ang isang visual na representasyon ng lahat ng ito ay kadalasang makakatulong sa iyo na makabuo ng pinakatamang solusyon. Dito tumulong ang UML Class Diagram.

Ano ang UML?

Kung titingnan mo ang mga kaugnay na larawan sa mga search engine, makikita mo na ang UML ay may kinalaman sa mga diagram, arrow at parisukat. Kailangan mong malaman na ang UML ay kumakatawan sa Unified Modeling Language. Pinag-isa ang mahalagang salita dito. Nangangahulugan ito na ang aming mga imahe ay mauunawaan hindi lamang sa amin, kundi pati na rin ng sinumang ibang nakakaalam ng UML. Ito ang lingua franca para sa pagguhit ng mga diagram.

Ayon sa Wikipedia,

"Ang UML ay isang general-purpose, developmental, modelling language sa larangan ng software engineering na nilalayon na magbigay ng karaniwang paraan upang mailarawan ang disenyo ng isang system."
Ang pinaka-kagiliw-giliw na bagay, na hindi hulaan ng lahat, ay ang UML ay may mga pagtutukoy. At mayroong kahit isang detalye ng UML 2. Higit pang impormasyon sa detalye ay makukuha sa website ng Object Management Group . Sa katunayan, binubuo ng pangkat na ito ang mga pagtutukoy ng UML. Kapansin-pansin din na ang UML ay hindi limitado sa paglalarawan ng istruktura ng mga klase. Maraming uri ng mga diagram ng UML. Ang Wikipedia ay may maikling paglalarawan ng iba't ibang uri ng mga diagram ng UML: Mga diagram ng UML . Pagbabalik sa mga diagram ng klase ng UML, sulit na banggitin ang aklat na "Head First Design Patterns" , ay gumagamit ng mga diagram ng UML upang ilarawan ang mga pattern ng disenyo. Ang bottom line ay UML talaga ang ginagamit. At lumalabas na ang pag-alam nito at pag-unawa kung paano gamitin ay lubos na kapaki-pakinabang.

Aplikasyon

Alamin natin na maaari tayong magtrabaho kasama ang UML sa isang IDE. Gagamitin namin ang IntelliJ IDEA bilang aming IDE. Kung gumagamit ka ng IntelliJ IDEA Ultimate, ipapa-install namin ang "UML Support" plugin "out of the box". Hinahayaan ka nitong awtomatikong bumuo ng magagandang diagram ng klase. Halimbawa, gamitin ang Ctrl+N o ang "Navigate" -> "Class" na menu item upang pumunta sa ArrayList class. Ngayon sa menu ng konteksto ng pangalan ng klase, piliin ang "Diagram" -> "Ipakita ang popup ng diagram". Bilang resulta, nakakakuha kami ng magandang diagram. UML: mula sa teorya hanggang sa pagsasanay - 2 Ngunit paano kung gusto mong gumuhit ng diagram sa iyong sarili? At paano kung wala kang Ultimate na bersyon? Gamit ang IntelliJ IDEA Community Edition, wala kaming ibang pagpipilian. Kaya kailangan nating maunawaan kung paano inayos ang isang diagram ng UML. Una,. Isa itong hanay ng mga tool sa visualization ng graph. Ang plugin na gagamitin namin ay nakasalalay dito. Pagkatapos ng pag-install, kailangan mong idagdag ang direktoryo ng bin mula sa direktoryo ng pag-install ng Graphviz sa variable na kapaligiran ng PATH. Pagkatapos nito, sa IntelliJ IDEA, piliin ang File -> Mga Setting sa menu. Sa window ng "Mga Setting," piliin ang kategoryang "Mga Plugin," i-click ang button na "Browse repository", at i-install ang plugin ng PlantUML integration . Ano ang magandang tungkol sa PlantUML? Inilalarawan nito ang UML gamit ang isang wika sa paglalarawan ng graph na tinatawag na "tuldok", na ginagawang mas pangkalahatan, dahil ang wikang tuldok ay ginagamit ng higit pa sa PlantUML. Higit pa rito, lahat ng ginagawa namin sa ibaba ay maaaring gawin hindi lamang sa isang IDE, kundi maging online sa planttext.com. Pagkatapos i-install ang PlantUML plugin, makakagawa kami ng mga diagram ng UML gamit ang "File" -> "Bago". Gumawa tayo ng diagram ng "UML class". Awtomatiko itong bubuo ng template na may halimbawa. Tatanggalin namin ang mga nilalaman nito at idagdag ang sarili namin. Upang maunawaan kung paano ito irepresenta sa text, tingnan ang manwal ng PlantUML: plantuml class-diagram. UML: mula sa teorya hanggang sa pagsasanay - 3Umaasa sa mga materyal na ito, magsimula tayo sa paggawa ng aming diagram ng UML. Idagdag ang sumusunod na nilalaman, na naglalarawan ng dalawang klase:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Upang makita ang resulta sa IDEA, piliin ang "View" -> "Tool Windows" -> "PlantUML". Kumuha lang kami ng dalawang parisukat na kumakatawan sa mga klase. Alam namin na ang parehong mga klase ay nagpapatupad ng interface ng Listahan . Ang ugnayang ito ng klase ay tinatawag na realization. Ang relasyon na ito ay kinakatawan gamit ang isang arrow na may tuldok na linya. Iguhit natin ito:

interface List
List <|.. ArrayList
List <|.. LinkedList
Ang listahan ay isa sa mga bata ng klase ng Collection . Ibig sabihin, nagmamana ito ng Collection . Ang relasyong ito ay tinatawag na generalization. Mukhang isang arrow na may ordinaryong tuluy-tuloy na linya. Iguhit natin ito:

interface Collection
Collection <|-- List
Para sa susunod na uri ng relasyon, magdagdag sa paglalarawan ng klase ng ArrayList ng isang entry tungkol sa isang package na pribadong hanay ng mga elemento:

~Object[] elementData
Ngayon gusto naming ipakita na ang ArrayList ay naglalaman ng ilang mga bagay. Sa kasong ito, magkakaroon ng isang pinagsama-samang relasyon. ArrayListay isang pinagsama-samang, dahil naglalaman ito ng iba pang mga bagay. Sinasabi namin ang pagsasama-sama dahil maaaring umiral ang mga bagay ng listahan nang wala ang listahan: hindi sila mahalagang bahagi ng listahan. Ang kanilang buhay ay hindi nakatali sa buhay ng listahan. Ang salitang "aggregate" ay dumating sa atin mula sa Latin at isinasalin bilang "binuo", iyon ay, isang bagay na binubuo ng isang bagay. Halimbawa, sa buhay, mayroon tayong pump assembly (aggregate), na binubuo ng pump at motor. Ang pagpupulong mismo ay maaaring i-disassemble, at maaari nating iwanan ang ilan sa mga bahagi nito. Halimbawa, ibenta o ilagay sa ibang pagpupulong. Ito ay ang parehong paraan sa isang listahan. Ito ay ipinahayag sa isang walang laman na rhombus sa pinagsama-samang at isang tuloy-tuloy na linya. Kakatawanin namin ito bilang mga sumusunod:

class Object{
}
ArrayList o- Object
Ngayon gusto naming ipakita na hindi tulad ng ArrayList , ang LinkedList na klase ay naglalaman ng Node s — mga lalagyan na tumutukoy sa nakaimbak na data. Sa kasong ito, ang Node ay bahagi ng LinkedList at walang independiyenteng pag-iral. Ang isang Node ay hindi ang nilalaman mismo. Naglalaman lamang ito ng isang sanggunian sa nilalaman. Halimbawa, kapag nagdagdag kami ng string sa isang LinkedList , nagdaragdag kami ng bagong Node na naglalaman ng reference sa string, pati na rin isang link sa nakaraan at susunod na Node. Ang relasyong ito ay tinatawag na komposisyon. Ito ay inilalarawan sa pamamagitan ng pagguhit ng tuluy-tuloy na linya na may napunong rhombus sa composite (isang bagay na gawa sa mga bahaging bumubuo). Ngayon ay kakatawanin namin ang relasyon bilang teksto:

class Node{
}
LinkedList *-- Node
At ngayon kailangan mong matutunan kung paano ilarawan ang isa pang mahalagang uri ng relasyon: dependency. Ito ay ginagamit kapag ang isang klase ay gumagamit ng isa pa, ngunit ang klase ay hindi naglalaman o nagmamana ng ginamit na klase. Halimbawa, alam ng LinkedList at ArrayList kung paano gumawa ng ListIterator . Kinakatawan namin ito bilang mga arrow na may tuldok na linya:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Pagkatapos gawin ang lahat ng ito, makukuha namin: UML: mula sa teorya hanggang sa pagsasanay - 4Maaari kang magdagdag ng mas maraming detalye kung kinakailangan. Siyempre, walang supernatural tungkol sa pagguhit ng gayong diagram. Kapag nagtatrabaho sa iyong sariling mga gawain, maaari mong mabilis na ilabas ito sa pamamagitan ng kamay. Makakatulong ito sa iyong bumuo ng kakayahang mag-isip sa pamamagitan ng arkitektura ng isang application at matukoy ang mga pagkukulang sa istruktura ng klase nang maaga, hindi pagkatapos mong gumugol ng araw sa pagpapatupad ng maling modelo. Iyon ay tila isang magandang dahilan upang subukan ito, hindi ba? :)

Automation

Mayroong iba't ibang mga paraan upang awtomatikong makabuo ng mga diagram ng PlantUML. Halimbawa, ang IDEA ay may SketchIT plugin, ngunit hindi ito ganap na gumuhit ng mga diagram nang tama. Sabihin nating ang pagpapatupad ng mga interface ay iginuhit nang hindi tama (ito ay ipinapakita bilang mana). Ang Internet ay may mga halimbawa kung paano ito isasama sa proseso ng pagbuo ng iyong proyekto. Halimbawa, mahahanap mo kung paano gamitin ang uml-java-docklet sa Maven. Upang ipakita, gagamitin namin ang Maven Archetype upang mabilis na lumikha ng isang proyekto ng Maven. Takbo

mvn archetype:generate
Bilang tugon sa Pumili ng numero o maglapat ng filter, iwanan ang default — pindutin lang ang Enter. Ito ay palaging magiging "maven-archetype-quickstart". Piliin ang pinakabagong bersyon. Susunod, sasagutin namin ang ilang tanong at tatapusin namin ang paggawa ng proyekto: UML: mula sa teorya hanggang sa pagsasanay - 5Hindi si Maven ang paksa ng artikulong ito, kaya makakahanap ka ng mga sagot sa iyong mga tanong tungkol sa Maven sa Maven Users Center . Sa nabuong proyekto, buksan ang file ng paglalarawan ng proyekto, pom.xml, para sa pag-edit. Kokopyahin namin ang mga nilalaman mula sa paglalarawan ng pag-install ng uml-java-docklet sa file na ito. Ang artifact na ginamit sa paglalarawan ay hindi makikita sa Maven Central repository. Ngunit ang sumusunod ay nagtrabaho para sa akin: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Sa madaling salita, sa paglalarawan kailangan mo lang palitan ang groupId mula sa "info.leadinglight" patungo sa "com.chfourie" at itakda ang bersyon sa "1.0.0". Pagkatapos nito, maaari nating isagawa ang mga sumusunod na command sa direktoryo gamit ang pom.xml file:

mvn clean install
at

mvn javadoc: javadoc
Kung bubuksan natin ngayon ang nabuong dokumentasyon (target ng explorer\site\apidocs\index.html), makikita natin ang mga diagram ng UML. Sa pamamagitan ng paraan, ang relasyon sa pagpapatupad ay ipinapakita na ngayon nang tama :)

Konklusyon

Gaya ng nakikita mo, hinahayaan ka ng UML na makita ang istraktura ng iyong application. Ngunit higit pa ang magagawa ng UML. Maaari mong gamitin ang UML upang ilarawan ang iba't ibang proseso sa loob ng iyong kumpanya o upang ilarawan ang proseso ng negosyo na sumasaklaw sa isang function na isinusulat mo. Kakailanganin mong magpasya para sa iyong sarili kung gaano kapaki-pakinabang ang UML para sa iyo nang personal, ngunit anuman ang iyong pasya, makakatulong na makahanap ng oras upang matuto nang higit pa tungkol dito.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION