Кіріспе
« Екі рет өлшеп, бір рет кес » дегенді бала кезінен бәрі естіген деп ойлаймын . Бағдарламалауда да солай. Оны орындауға уақыт жұмсамас бұрын оны іске асыру туралы ойланған жөн. Көбінесе іске асыру кезінде сыныптарды құруға және олардың өзара әрекеттесуін ойлап табуға тура келеді. Көбінесе оның көрнекі көрінісі мәселені ең дұрыс жолмен шешуге көмектеседі. Бұл жерде UML бізге көмектеседі .UML дегеніміз не?
Іздеу жүйелеріндегі суреттерге қарасаңыз, UML диаграммалар, көрсеткілер және квадраттар туралы бір нәрсе екені белгілі болады. Ең бастысы, UML біртұтас модельдеу тіліне аударылады . Мұнда Unified сөзі маңызды. Яғни, біздің суреттерді біз ғана емес, UML тілін білетін басқалар да түсінетін болады. Бұл диаграмма салудың халықаралық тілі болып табылады.
Википедия айтқандай
UML — бағдарламалық жасақтаманы әзірлеуде, бизнес-процестерді модельдеуде, жүйелерді жобалауда және ұйымдық құрылымдарды көрсетуде нысанды модельдеуге арналған графикалық сипаттама тілі.Ең қызығы, әркім ойланbyteын немесе түсінбейтін нәрсе - UML-дің техникалық сипаттамалары бар. Оның үстіне, тіпті UML2 спецификациясы бар. Техникалық сипаттама туралы қосымша мәліметтерді Object Management Group веб- сайтынан табуға болады . Іс жүзінде бұл топ UML спецификацияларын әзірлеуде. Бір қызығы, UML тек сыныптардың құрылымын сипаттаумен шектелмейді. UML диаграммаларының көптеген түрлері бар. UML диаграммаларының түрлерінің қысқаша сипаттамасын сол Википедиядан көруге болады: UML диаграммалары немесе Тимур Батыршинов түсірген бейне UML диаграммаларына шолу . UML сонымен қатар әртүрлі процестерді сипаттау үшін кеңінен қолданылады, мысалы, мына жерде: JWT арқылы бір рет кіру . UML класс диаграммаларын пайдалануға оралсақ, алдымен Head: Design Patterns кітабын атап өткен жөн , онда үлгілер сол UML диаграммаларымен суреттелген. UML шынымен де қолданылып жатқаны белгілі болды. Ал оны қолдануды білу және түсіну өте пайдалы дағды екені белгілі болды.
Қолдану
IDE ішінен дәл осы UML-мен қалай жұмыс істеуге болатынын қарастырайық. IntelliJ идеясын IDE ретінде алайық . Егер IntelliJ Idea Ultimate қолданатын болсақ , бізде « UML қолдауы » плагині қораптан тыс орнатылады. Бұл әдемі класс диаграммаларын автоматты түрде жасауға мүмкіндік береді. Мысалы, Ctrl+N немесе мәзір элементінің «Шарлау» -> «Класс» көмегімен ArrayList сыныбына өтеміз . Енді сынып атауының контекстік мәзірі арқылы «Диаграмма» -> «Диаграмма қалқымалы терезесін көрсету» тармағын таңдаңыз. Нәтижесінде біз әдемі диаграмма аламыз:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Идеядағы нәтижені көру үшін «Көру» -> «Windows құралы» -> «PlantUML» таңдаңыз. Біз тек сыныптарды білдіретін екі шаршы аламыз. Белгілі болғандай, бұл класстардың екеуі де List интерфейсін жүзеге асырады. Бұл класс қатынасы іске асыру деп аталады. Мұндай байланысты бейнелеу үшін нүктелі сызықпен көрсеткіні пайдаланыңыз. Оны бейнелеп көрейік:
interface List
List <|.. ArrayList
List <|.. LinkedList
List
- балалар сыныптарының бірі Collection
. Яғни, ол Коллекциядан мұра алады. Бұл байланыс жалпылау деп аталады. Ол тұрақты үздіксіз сызығы бар көрсеткіге ұқсайды. Оны бейнелеп көрейік:
interface Collection
Collection <|-- List
Келесі қосылым түрі үшін сынып сипаттамасына элементтердің жеке массивіArrayList
туралы жазбаны қосыңыз:
~Object[] elementData
Енді біз кейбір нысандарды қамтитын нәрсені көрсеткіміз келеді ArrayList
. Бұл жағдайда қосылым түрі біріктіру болады . Бұл жағдайда бірлік ArrayList
, өйткені ол басқа нысандарды қамтиды. Біз біріктіруді таңдаймыз, себебі тізімдегі нысандар тізімсіз өмір сүре алады: олар оның ажырамас бөліктері емес. Олардың өмір сүру уақыты тізімнің өмір сүруіне байланысты емес. Агрегат латын тілінен аударғанда «жиналған», яғни бір нәрседен тұратын нәрсе. Мысалы, өмірде сорғы мен қозғалтқыштан тұратын сорғы қондырғысы бар. Құрылғының өзін бөлшектеуге болады, оның кейбір бөліктерін қалдыруға болады. Мысалы, сату немесе басқа бірлікке салу. Тізім де солай. Ал бұл бірлік жанындағы бос гауһар тас және үздіксіз сызық түрінде өрнектеледі. Оны былай бейнелеп көрейік:
class Object{
}
ArrayList o- Object
ArrayList
Енді сыныпта сақталған деректерге сілтеме жасайтын контейнерлер LinkedList
бар екенін көрсеткіміз келеді . Node
Бұл жағдайда Node
олар өздерінің бір бөлігі болып табылады LinkedList
және бөлек өмір сүре алмайды. Node
тікелей сақталмаған мазмұн, тек оған сілтеме бар. Мысалы, жолға қосқанда LinkedList
, біз жаңа қосамыз Node
, онда сол жолға сілтеме, сондай-ақ алдыңғы және келесіге сілтеме бар Node
. Байланыстың бұл түрі композиция деп аталады . Композитті (бөліктерден тұратын) көрсету үшін оған үздіксіз сызық бар түрлі-түсті гауһар сызылады. Енді оны қосылымның мәтіндік дисплейі ретінде жазайық:
class Node{
}
LinkedList *-- Node
Ал енді қарым-қатынастың тағы бір маңызды түрі – тәуелділік қатынасын көрсетуді үйренуіміз керек . Ол бір класс басқасын пайдаланған кезде пайдаланылады, бірақ сыныпта пайдаланылатын сынып жоқ және оның ұрпағы емес. Мысалы, LinkedList
олар ArrayList
құруды біледі ListIterator
. Мұны нүктелі сызықпен көрсеткілер ретінде көрсетейік:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Мұның бәрінен кейін ол келесідей болады:
Автоматтандыру
PlantUML диаграммаларын автоматты түрде жасаудың әртүрлі жолдары бар. Мысалы, Idea- да SketchIT плагині бар , бірақ ол оларды дұрыс сызбаған. Мысалы, интерфейстерді іске асыру дұрыс емес сызылған (мұрагерлік ретінде көрсетіледі). Сондай-ақ Интернетте жобаңыздың өмірлік циклін құрудың мысалдары бар. Maven үшін uml-java-docklet қолданатын мысал бар делік . Мұның қалай жасалатынын көрсету үшін біз Maven жобасын жылдам жасау үшін Maven Archetype пайдаланамыз . Пәрменді орындайық:mvn archetype:generate
Сүзгіні таңдау сұралғанда ( Санды таңдаңыз немесе сүзгіні қолданыңыз ), жай ғана Enter пернесін басу арқылы әдепкіден қалдырыңыз. Бұл әрқашан « maven-archetype-quickstart » болады . Соңғы нұсқаны таңдаңыз. Содан кейін біз сұрақтарға жауап береміз және жобаны құруды аяқтаймыз:
mvn clean install
mvn javadoc:javadoc
GO TO FULL VERSION