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.
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:
@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
ArrayList
Indi, synpdan tapawutlylykda, saklanylýan maglumatlara degişli konteýnerleriň LinkedList
bardygyny görkezmek isleýäris . Node
Bu ýagdaýda Node
özleriniň bir bölegi bolup LinkedList
, aýratyn ýaşap bilmeýärler. Node
gö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 LinkedList
tä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ň: Node
Node
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 LinkedList
bilýärler . Muny nokat çyzykly oklar hökmünde görkezeliň: ArrayList
ListIterator
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Bularyň hemmesinden soň şeýle bolar:
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:
mvn clean install
we 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)
GO TO FULL VERSION