JavaRush /Java Blog /Random-TK /UML: teoriýadan praktika
Viacheslav
Dereje

UML: teoriýadan praktika

Toparda çap edildi

Giriş

Meniň pikirimçe, çagalykda “ Iki gezek ölçäň, bir gezek kesiň ” diýen sözleri eşitdi . Programmirlemekde-de edil şonuň ýaly. Ony ýerine ýetirmek üçin wagt sarp etmezden ozal ýerine ýetiriş hakda pikir etmek has gowudyr. Köplenç durmuşa geçirilende sapaklary döretmeli we olaryň özara täsirini oýlap tapmaly. Köplenç munuň wizual şekillendirilmegi meseläni iň dogry çözmäge kömek edip biler. Bu ýerde UML bize kömek edýär .

UML näme?

Gözleg motorlaryndaky suratlara seretseňiz, UML-yň diagrammalar, oklar we kwadratlar hakda bir zatdygy belli bolar. Möhüm zat, UML-yň ifiedeke-täk modelleme diline terjime edilmegi . Ifiedeke-täk söz bu ýerde möhümdir. .Agny, suratlarymyza diňe bir biz däl, UML-i bilýänler hem düşüner. Görnüşi ýaly, bu diagrammalary çyzmak üçin halkara dil.

UML: teoriýadan praktika - 1

Wikipediýanyň aýdyşy ýaly

UML, programma üpjünçiligini işläp düzmekde, iş prosesini modellemekde, ulgam dizaýnynda we guramaçylyk gurluşlaryny görkezmekde obýekt modellemek üçin grafiki düşündiriş dili.
Her kimiň pikir etmeýän ýa-da düşünmeýän iň gyzykly zady, UML-iň aýratynlyklarynyň bolmagydyr. Mundan başga-da, hatda UML2 spesifikasiýasy hem bar. Spesifikasiýa barada has giňişleýin maglumatlary Obýekt dolandyryş toparynyň web sahypasynda tapyp bilersiňiz . Aslynda bu topar UML aýratynlyklaryny ösdürýär. UML-iň synplaryň gurluşyny beýan etmek bilen çäklenmeýändigi hem gyzykly. UML diagrammalarynyň köp görnüşi bar. UML diagrammalarynyň görnüşleriniň gysgaça beýanyny şol bir Wikipediýada görmek bolýar: UML diagrammalarynda ýa-da Timur Batyrşinowyň UML diagrammalaryna syn . UML dürli amallary suratlandyrmak üçin giňden ulanylýar, mysal üçin şu ýerde: JWT ulanyp ýeke girmek . UML synp diagrammalarynyň ulanylyşyna gaýdyp gelsek, “Head First: Design Patterns” atly kitaby bellemelidiris , onda nagyşlar şol bir UML diagrammalary bilen görkezilýär. UML hakykatdanam ulanylýandygy ýüze çykýar. Netijede, onuň ulanylyşyna düşünmek we düşünmek gaty peýdaly bir ussatlykdyr.

Arza

IDE-den şol bir UML bilen nädip işläp biljekdigiňize seredeliň. IntelliJ Idea-ny IDE hökmünde alalyň . “IntelliJ Idea Ultimate” ulansak , gutudan “ UML goldaw ” plaginini gurarys. Gözel synp diagrammalaryny awtomatiki döretmäge mümkinçilik berýär. Mysal üçin, Ctrl + N ýa-da menýu elementini "Navigate" -> "Synp" ulanyp, ArrayList synpyna geçýäris . Indi, synpyň adynyň kontekst menýusyndan “Diagramma” -> “Diagrammanyň çykýan ýerini görkez” -i saýlaň. Netijede, owadan diagramma alýarys:
UML: teoriýadan praktika - 2
Yourselföne özüňiz çekmek isleseňiz, ideýanyň Ultimate wersiýasy ýok bolsa näme etmeli? IntelliJ Idea Community Edition ulansak, başga alajymyz ýok. Munuň üçin şeýle UML diagrammanyň gurluşyna düşünmeli. Ilki bilen “Graphviz” -i gurmaly bolarys . Bu grafalary wizuallaşdyrmak üçin peýdaly toplum. Ulanjak plugin tarapyndan ulanylýar. Gurlandan soň, Graphviz gurnama katalogyndan bin katalogyny PATH gurşaw üýtgeýjiňize goşmaly . Ondan soň, IntelliJ Idea-da menýudan Faýl -> Sazlamalary saýlaň. "Sazlamalar" penjiresinde "Pluginler" kategoriýasyny saýlaň, "Ammarlara göz aýlamak" düwmesine basyň we PlantUML integrasiýa plaginini guruň . PlantUML näme üçin beýle gowy ? UML-y suratlandyrmak üçin " nokat " diýilýän grafiki düşündiriş dilini ulanýar we bu has uniwersal bolmaga mümkinçilik berýär, sebäbi ... Bu dil diňe PlantUML tarapyndan ulanylmaýar. Mundan başga-da, aşakda edýän ähli işlerimiz diňe IDE-de däl, eýsem planttext.com onlaýn hyzmatynda hem edilip bilner . “PlantUML” pluginini guranymyzdan soň, “Faýl” -> “Täze” arkaly UML diagrammalaryny döredip bileris. Geliň, "UML synp" görnüşiniň diagrammasyny döredeliň. Bu amalyň dowamynda mysal bilen bir şablon awtomatiki usulda döredilýär. Geliň, mazmunyny aýyralyň we Habr: Klassiki gatnaşyklar - UML-dan koda çenli bir makala bilen ýaraglanan özümizi döredeliň . Muny tekstde nädip suratlandyrmalydygyna düşünmek üçin “PlantUML” gollanmasyny alalyň: plantuml class-diagramma . Ilki başda baglanyşyklaryň nähili beýan edilmelidigini görkezýän tablisa bar:
UML: teoriýadan praktika - 3
Şeýle hem, bu ýerdäki baglanyşyklara seredip bileris: " UML-daky synplaryň arasyndaky gatnaşyklar. Mysallar ." Bu materiallara esaslanyp, UML diagrammamyzy döretmäge başlalyň. Iki synpy suratlandyrýan aşakdaky mazmuny goşalyň:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
"Idea" -da netijäni görmek üçin "View" -> "Tool Windows" -> "PlantUML" saýlaň. Diňe synplary görkezýän iki kwadrat alarys. Bilşimiz ýaly, bu synplaryň ikisi-de Sanaw interfeýsini durmuşa geçirýär. Bu synp gatnaşyklaryna durmuşa geçirmek diýilýär. Şeýle baglanyşygy suratlandyrmak üçin punktir çyzykly oky ulanyň. Geliň, suratlandyralyň:
interface List
List <|.. ArrayList
List <|.. LinkedList
List- çaga sapaklarynyň biri Collection. Collectionagny, Kolleksiýadan miras alýar. Bu baglanyşyk umumylaşdyrma diýilýär. Adaty yzygiderli çyzykly ok ýaly görünýär. Geliň, suratlandyralyň:
interface Collection
Collection <|-- List
Aşakdaky baglanyşyk görnüşi üçin, synpyň beýanyna elementleriň şahsy toplumyArrayList barada ýazgy goşuň:
~Object[] elementData
Indi käbir obýektleri öz içine alýan zatlary görkezmek isleýäris ArrayList. Bu ýagdaýda baglanyşyk görnüşi jemlener . Bu ýagdaýda bölüm ArrayList, sebäbi beýleki zatlary öz içine alýar. Toplumy saýlaýarys, sebäbi sanawdaky obýektler sanawsyz ýaşap biler: olar onuň aýrylmaz bölekleri däl. Olaryň ömri sanawyň ömri bilen baglanyşykly däl. Jemi latyn dilinden “gurnalan”, ýagny bir zatdan düzülen bir zat hökmünde terjime edilýär. Mysal üçin, durmuşda nasosdan we motordan ybarat nasos bölümi bar. Gurluşyň özi aýrylyp, käbir böleklerini galdyryp biler. Mysal üçin, satmak ýa-da başga bir bölüme salmak. Sanaw hem şeýle. Bu bolsa enjamyň ýanyndaky boş göwher we üznüksiz çyzyk görnüşinde aňladylýar. Geliň, muny şeýle suratlandyralyň:
class Object{
}
ArrayList o- Object
ArrayListIndi, synpdan tapawutlylykda, saklanylýan maglumatlara degişli konteýnerleriň LinkedListbardygyny görkezmek isleýäris . NodeBu ýagdaýda Nodeözleriniň bir bölegi bolup LinkedList, aýratyn ýaşap bilmeýärler. Nodegönüden-göni saklanylýan mazmun däl, diňe oňa baglanyşyk bar. Mysal üçin, bir hatara goşanymyzda , şol hatara baglanyşyk, şeýle hem öňki we indiki baglanyşyk bolan LinkedListtäze goşýarys . Aragatnaşygyň bu görnüşine kompozisiýa diýilýär . Bir kompozisiýany (böleklerden ybarat) görkezmek üçin, üznüksiz çyzyk bilen reňkli göwher çyzylýar. Indi muny baglanyşygyň tekst görnüşi hökmünde ýazalyň: NodeNode
class Node{
}
LinkedList *-- Node
Indi bolsa gatnaşyklaryň başga bir möhüm görnüşini - garaşlylyk gatnaşyklaryny nädip görkezmelidigini öwrenmeli . Bir synp beýlekisini ulananda ulanylýar, synpda ulanylýan synpy öz içine almaýar we onuň nesli däl. Mysal üçin, nädip döretmelidigini LinkedListbilýärler . Muny nokat çyzykly oklar hökmünde görkezeliň: ArrayListListIterator
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Bularyň hemmesinden soň şeýle bolar:
UML: teoriýadan praktika - 4
Zerur bolanda jikme-jikliklere girip bilersiňiz. Herehli bellikler şu ýerde görkezilýär: " PlantUML - Klassiki diagramma ". Mundan başga-da, şeýle diagramma çyzmakda adatdan daşary zat ýok we wezipeleriňiz üstünde işläniňizde çalt el bilen çyzyp bilersiňiz. Bu, amaly arhitektura arkaly pikirlenmek ukybyňyzy ösdürer we nädogry modeli durmuşa geçiren günüňizi däl-de, eýsem synp gurluşynyň kemçiliklerini ir kesgitlemäge kömek eder. Synag bermegiň gowy sebäbi barmy? )
UML: teoriýadan praktika - 5

Awtomatlaşdyryş

PlantUML diagrammalaryny awtomatiki usulda döretmegiň dürli ýollary bar. Mysal üçin, “Idea” -da “SketchIT” plugin bar , ýöne olary gaty dogry çekmeýär. Mysal üçin, interfeýsleriň ýerine ýetirilmegi nädogry çyzylýar (miras hökmünde görkezilýär). Taslamanyňyzyň ýaşaýyş sikline nädip gurulmalydygy barada internetde mysallar hem bar. Maven üçin uml-java-docklet ulanýan bir mysal bar diýeliň . Munuň nähili edilýändigini görkezmek üçin Maven taslamasyny çalt döretmek üçin Maven Arhetipini ulanarys . Buýrugy ýerine ýetireliň: mvn archetype:generate Süzgüç saýlamak soralanda ( San saýlaň ýa-da süzgüç ulanyň ), Enter düwmesini basyp, asyl goýuň. Bu elmydama " maven-arhetip-çalt başlangyç " bolar . Iň soňky wersiýasyny saýlaň. Soň bolsa, soraglara jogap berýäris we taslamanyň döredilmegini tamamlaýarys:
UML: teoriýadan praktika - 6
Maven bu makalanyň üns merkezinde däldigi sebäpli, Maven ulanyjylaryň merkezinde Maven soraglaryňyza jogap tapyp bilersiňiz . Döredilen taslamada redaktirlemek üçin taslamanyň düşündiriş faýlyny, pom.xml açyň . Mazmuny oňa gurnalan uml-java-dokletiň beýanyndan göçüreliň . Beýanatda ulanylan artefakt Maven Merkezi ammarynda tapylmady. Itöne bu meniň üçin işledi: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 . Descriptionagny, bu düşündirişde diňe “ group.d ” -ni “ info.leadinglight ” -dan “ com.chfourie ” bilen çalyşmaly we wersiýasyny “ 1.0.0 ” diýip sazlamaly. Ondan soň, bu buýruklary pom.xml faýlyň ýerleşýän katalogynda ýerine ýetirip bileris : mvn clean installwe mvn javadoc:javadoc. Indi döredilen resminamalary (gözlegçiniň nyşany \ site \ apidocs \ index.html) açsak, UML diagrammalaryny göreris. Theeri gelende aýtsak, ýerine ýetiriş bu ýerde eýýäm dogry görkezilýär)

Netije

Görşüňiz ýaly, UML programmaňyzyň gurluşyny göz öňüne getirmäge mümkinçilik berýär. Mundan başga-da, UML diňe şu bilen çäklenmeýär. UML ulanyp, kompaniýanyňyzdaky dürli amallary suratlandyryp ýa-da ýazýan funksiýaňyzyň işleýän iş prosesini suratlandyryp bilersiňiz. UML-yň siziň üçin näderejede peýdalydygy size karar bermeli, ýöne has jikme-jik okamak üçin wagt sarp etmek islendik ýagdaýda peýdaly bolar. # Wiaçeslaw
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION