Panimula
Sa palagay ko narinig na ng lahat sa pagkabata ang kasabihang " Sukatin nang dalawang beses, gupitin nang isang beses ." Ganun din sa programming. Laging mas mahusay na isipin ang tungkol sa pagpapatupad bago ka gumugol ng oras sa pagpapatupad nito. Kadalasan sa panahon ng pagpapatupad kailangan mong lumikha ng mga klase at mag-imbento ng kanilang pakikipag-ugnayan. At kadalasan ang isang visual na representasyon nito ay makakatulong sa paglutas ng problema sa pinakatamang paraan. Dito tayo tinutulungan ng UML .Ano ang UML?
Kung titingnan mo ang mga larawan sa mga search engine, magiging malinaw na ang UML ay tungkol sa mga diagram, arrow at parisukat. Ang mahalaga ay ang pagsasalin ng UML sa Unified Modeling Language . Ang salitang Unified ay mahalaga dito. Ibig sabihin, ang ating mga larawan ay mauunawaan hindi lamang natin, kundi pati na rin ng ibang nakakaalam ng UML. Ito ay lumalabas na ito ay isang internasyonal na wika para sa pagguhit ng mga diagram.
Gaya ng sabi ng Wikipedia
Ang UML ay isang graphical na paglalarawan ng wika para sa object modeling sa software development, business process modeling, system design, at pagpapakita ng mga istruktura ng organisasyon.Ang pinaka-kagiliw-giliw na bagay na hindi iniisip o napagtanto ng lahat ay ang UML ay may mga pagtutukoy. Bukod dito, mayroong kahit isang detalye ng UML2. Ang higit pang mga detalye tungkol sa detalye ay matatagpuan sa website ng Object Management Group . Sa totoo lang, ang pangkat na ito ay bumubuo ng 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 isang maikling paglalarawan ng mga uri ng mga diagram ng UML ay makikita sa parehong Wikipedia: Mga diagram ng UML o sa video ni Timur Batyrshinov Pagsusuri ng mga diagram ng UML . Ang UML ay malawak ding ginagamit upang ilarawan ang iba't ibang proseso, halimbawa dito: Single sign-on gamit ang JWT . Sa pagbabalik sa paggamit ng mga diagram ng klase ng UML, nararapat na tandaan ang aklat na Head First: Design Patterns , kung saan ang mga pattern ay inilalarawan ng parehong mga diagram ng UML. UML pala talaga ang ginagamit. At lumalabas na ang kaalaman at pag-unawa sa aplikasyon nito ay isang kapaki-pakinabang na kasanayan.
Aplikasyon
Tingnan natin kung paano mo magagawa ang parehong UML mula sa IDE. Kunin natin ang IntelliJ Idea bilang isang IDE . Kung gagamitin namin ang IntelliJ Idea Ultimate , magkakaroon kami ng plugin na " UML Support " na naka-install sa labas ng kahon. Ito ay nagpapahintulot sa iyo na awtomatikong bumuo ng magagandang diagram ng klase. Halimbawa, gamit ang Ctrl+N o ang menu item na "Navigate" -> "Class" pumunta tayo sa ArrayList class . Ngayon, sa pamamagitan ng menu ng konteksto para sa pangalan ng klase, piliin ang "Diagram" -> "Ipakita ang popup ng diagram". Bilang resulta, nakakakuha kami ng magandang diagram:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Upang makita ang resulta sa Ideya, piliin ang "View" -> "Tool Windows" -> "PlantUML". Kukuha lang kami ng dalawang parisukat na kumakatawan sa mga klase. Tulad ng alam natin, ang parehong mga klase ay nagpapatupad ng interface ng Listahan. Ang ugnayang ito ng klase ay tinatawag na pagpapatupad. Upang ilarawan ang gayong koneksyon, gumamit ng arrow na may tuldok na linya. Ilarawan natin ito:
interface List
List <|.. ArrayList
List <|.. LinkedList
List
- isa sa mga klase ng bata Collection
. Ibig sabihin, nagmana ito sa Collection. Ang koneksyon na ito ay tinatawag na generalization. Mukhang isang arrow na may regular na tuloy-tuloy na linya. Ilarawan natin ito:
interface Collection
Collection <|-- List
Para sa sumusunod na uri ng koneksyon, magdagdag sa paglalarawan ng klase ArrayList
ng isang entry tungkol sa package na pribadong hanay ng mga elemento:
~Object[] elementData
Ngayon gusto naming ipakita kung ano ang ArrayList
naglalaman ng ilang mga bagay. Sa kasong ito, ang uri ng koneksyon ay pagsasama-sama . Ang yunit sa kasong ito ay ArrayList
, dahil naglalaman ito ng iba pang mga bagay. Pinipili namin ang pagsasama-sama dahil maaaring mabuhay ang mga bagay sa listahan nang wala ang listahan: hindi sila mahalagang bahagi nito. Ang kanilang buhay ay hindi nakatali sa buhay ng listahan. Ang pinagsama-samang ay isinalin mula sa Latin bilang "binuo," ibig sabihin, isang bagay na binubuo ng isang bagay. Halimbawa, sa buhay, mayroong isang pumping unit, na binubuo ng isang pump at isang motor. Ang yunit mismo ay maaaring i-disassemble, na iniiwan ang ilan sa mga bahagi nito. Halimbawa, ibenta o ilagay sa ibang unit. Ganoon din ang listahan. At ito ay ipinahayag sa anyo ng isang walang laman na brilyante malapit sa yunit at isang tuloy-tuloy na linya. Ilarawan natin ito ng ganito:
class Object{
}
ArrayList o- Object
Ngayon gusto naming ipakita na, hindi tulad ng ArrayList
, ang klase LinkedList
ay naglalaman Node
ng mga lalagyan na tumutukoy sa nakaimbak na data. Sa kasong ito, Node
sila ay bahagi ng kanilang sarili LinkedList
at hindi maaaring mamuhay nang hiwalay. Node
ay hindi direktang nakaimbak ng nilalaman, ngunit naglalaman lamang ng isang link dito. Halimbawa, kapag nagdagdag kami sa LinkedList
isang row, nagdaragdag kami ng bago Node
, na naglalaman ng link sa row na iyon, gayundin ng link sa nakaraan at susunod na Node
. Ang ganitong uri ng komunikasyon ay tinatawag na komposisyon . Upang ipakita ang isang composite (isa na binubuo ng mga bahagi), ang isang kulay na brilyante ay iguguhit, na may tuluy-tuloy na linya na humahantong dito. Isulat natin ito ngayon bilang isang text display ng koneksyon:
class Node{
}
LinkedList *-- Node
At ngayon kailangan nating matutunan kung paano magpakita ng isa pang mahalagang uri ng relasyon - dependency relationship. Ito ay ginagamit kapag ang isang klase ay gumagamit ng isa pa, ngunit ang klase ay hindi naglalaman ng klase na ginagamit at hindi ang inapo nito. Halimbawa, alam LinkedList
nila ArrayList
kung paano gumawa ng ListIterator
. Ipakita natin ito bilang mga arrow na may tuldok na linya:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Pagkatapos ng lahat ng ito, magiging ganito:
Automation
Mayroong iba't ibang mga paraan upang awtomatikong makabuo ng mga diagram ng PlantUML. Halimbawa, ang Idea ay may SketchIT plugin , ngunit hindi nito iginuhit nang tama ang mga ito. Halimbawa, ang pagpapatupad ng mga interface ay hindi iginuhit nang tama (ipinapakita bilang mana). Mayroon ding mga halimbawa sa Internet kung paano ito gagawin sa ikot ng buhay ng pagbuo ng iyong proyekto. Sabihin nating mayroong isang halimbawa para sa Maven gamit ang uml-java-docklet . Upang ipakita kung paano ito ginagawa, gagamitin namin ang Maven Archetype upang mabilis na lumikha ng isang proyekto ng Maven. Isagawa natin ang utos:mvn archetype:generate
Kapag hiniling na pumili ng filter ( Pumili ng numero o maglapat ng filter ), iwan ang default sa pamamagitan lamang ng pagpindot sa Enter. Ito ay palaging magiging " maven-archetype-quickstart ". Piliin ang pinakabagong bersyon. Susunod, sinasagot namin ang mga tanong at kumpletuhin ang paglikha ng proyekto:
mvn clean install
file: at mvn javadoc:javadoc
. Ngayon, kung bubuksan natin ang nabuong dokumentasyon (target ng explorer\site\apidocs\index.html), makikita natin ang mga diagram ng UML. Sa pamamagitan ng paraan, ang pagpapatupad ay ipinapakita nang tama dito)
GO TO FULL VERSION