JavaRush /Java блогы /Random-KK /UML: теориядан практикаға
Viacheslav
Деңгей

UML: теориядан практикаға

Топта жарияланған

Кіріспе

« Екі рет өлшеп, бір рет кес » дегенді бала кезінен бәрі естіген деп ойлаймын . Бағдарламалауда да солай. Оны орындауға уақыт жұмсамас бұрын оны іске асыру туралы ойланған жөн. Көбінесе іске асыру кезінде сыныптарды құруға және олардың өзара әрекеттесуін ойлап табуға тура келеді. Көбінесе оның көрнекі көрінісі мәселені ең дұрыс жолмен шешуге көмектеседі. Бұл жерде UML бізге көмектеседі .

UML дегеніміз не?

Іздеу жүйелеріндегі суреттерге қарасаңыз, UML диаграммалар, көрсеткілер және квадраттар туралы бір нәрсе екені белгілі болады. Ең бастысы, UML біртұтас модельдеу тіліне аударылады . Мұнда Unified сөзі маңызды. Яғни, біздің суреттерді біз ғана емес, UML тілін білетін басқалар да түсінетін болады. Бұл диаграмма салудың халықаралық тілі болып табылады.

UML: теориядан практикаға - 1

Википедия айтқандай

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 сыныбына өтеміз . Енді сынып атауының контекстік мәзірі арқылы «Диаграмма» -> «Диаграмма қалқымалы терезесін көрсету» тармағын таңдаңыз. Нәтижесінде біз әдемі диаграмма аламыз:
UML: теориядан практикаға - 2
Бірақ егер сіз оны өзіңіз салғыңыз келсе және сізде тіпті идеяның соңғы нұсқасы болмаса ше? Егер IntelliJ Idea Community Edition пайдаланатын болсақ, онда бізде басқа таңдау жоқ. Ол үшін мұндай UML диаграммасы қалай құрылымдалғанын түсіну керек. Біріншіден, біз Graphviz орнатуымыз керек . Бұл графиктерді визуализациялауға арналған утorталар жиынтығы. Оны біз қолданатын плагин пайдаланады. Орнатқаннан кейін Graphviz орнату каталогынан PATH ортасының айнымалы мәніне bin каталогын қосу керек . Осыдан кейін IntelliJ Idea бағдарламасында мәзірден Файл -> Параметрлер тармағын таңдаңыз. «Параметрлер» терезесінде «Плагиндер» санатын таңдап, «Репозиторийлерді шолу» түймесін басып, PlantUML интеграциялық плагинін орнатыңыз . PlantUML неге соншалықты жақсы ? Ол UML-ді сипаттау үшін « нүкте » деп аталатын графикті сипаттау тілін пайдаланады және бұл оның әмбебап болуына мүмкіндік береді, өйткені... Бұл тіл тек PlantUML қолданбасында қолданылмайды. Сонымен қатар, төменде біз жасайтын барлық нәрсені IDE-де ғана емес, сонымен қатар planttext.com онлайн қызметінде де жасауға болады . PlantUML плагинін орнатқаннан кейін біз «Файл» -> «Жаңа» арқылы UML диаграммаларын жасай аламыз. «UML класы» типті диаграмманы құрайық. Бұл процесс барысында мысалы бар үлгі автоматты түрде жасалады. Оның мазмұнын жойып, Habr мақаласымен қаруланған өзімізді құрайық: Класс қатынастары - UML-ден codeқа . Мұны мәтінде қалай бейнелеу керектігін түсіну үшін PlantUML нұсқаулығын алайық: plantuml класс диаграммасы . Ең басында қосылымдарды қалай сипаттау керектігін көрсететін кесте бар:
UML: теориядан практикаға - 3
Сондай-ақ байланыстардың өзін мына жерден қарастыруға болады: " UML-дегі сыныптар арасындағы байланыстар. Мысалдар ." Осы материалдарға сүйене отырып, UML диаграммасын құруды бастайық. Екі сыныпты сипаттайтын келесі мазмұнды қосамыз:

@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
Мұның бәрінен кейін ол келесідей болады:
UML: теориядан практикаға - 4
Қажет болғанша егжей-тегжейлі айта аласыз. Мұнда барлық белгілер көрсетілген: " PlantUML - класс диаграммасы ". Сонымен қатар, мұндай диаграмманы салуда табиғаттан тыс ештеңе жоқ және тапсырмалармен жұмыс істегенде, оны қолмен тез сызуға болады. Бұл қолданба архитектурасы арқылы ойлау дағдыларыңызды дамытады және қате үлгіні енгізумен күн өткізгеннен кейін емес, сынып құрылымының кемшіліктерін ерте анықтауға көмектеседі. Менің ойымша, бұл оны сынап көруге жақсы себеп пе? )
UML: теориядан практикаға - 5

Автоматтандыру

PlantUML диаграммаларын автоматты түрде жасаудың әртүрлі жолдары бар. Мысалы, Idea- да SketchIT плагині бар , бірақ ол оларды дұрыс сызбаған. Мысалы, интерфейстерді іске асыру дұрыс емес сызылған (мұрагерлік ретінде көрсетіледі). Сондай-ақ Интернетте жобаңыздың өмірлік циклін құрудың мысалдары бар. Maven үшін uml-java-docklet қолданатын мысал бар делік . Мұның қалай жасалатынын көрсету үшін біз Maven жобасын жылдам жасау үшін Maven Archetype пайдаланамыз . Пәрменді орындайық: mvn archetype:generate Сүзгіні таңдау сұралғанда ( Санды таңдаңыз немесе сүзгіні қолданыңыз ), жай ғана Enter пернесін басу арқылы әдепкіден қалдырыңыз. Бұл әрқашан « maven-archetype-quickstart » болады . Соңғы нұсқаны таңдаңыз. Содан кейін біз сұрақтарға жауап береміз және жобаны құруды аяқтаймыз:
UML: теориядан практикаға - 6
Maven осы мақаланың мақсаты болмағандықтан, Maven сұрақтарыңызға жауаптарды Maven пайдаланушылар орталығынан табуға болады . Жасалған жобада өңдеу үшін жоба сипаттамасы файлын, pom.xml ашыңыз . Мазмұнды uml-java-docklet орнату сипаттамасынан көшіріп алайық . Сипаттамада пайдаланылған артефакт Maven орталық репозиторийінен табылмады. Бірақ бұл мен үшін жұмыс істеді: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 . Яғни, бұл сипаттамада « info.leadinglight » ішінен groupId нөмірін « com.chfourie » деп ауыстырып, нұсқасын « 1.0.0 » етіп орнату керек. Осыдан кейін біз бұл пәрмендерді pom.xml файлы орналасқан каталогта орындай аламыз: және . Енді жасалған құжаттаманы ашсақ (explorer target\site\apidocs\index.html), біз UML диаграммаларын көреміз. Айтпақшы, бұл жерде іске асыру дұрыс көрсетілген) mvn clean installmvn javadoc:javadoc

Қорытынды

Көріп отырғаныңыздай, UML қолданбаңыздың құрылымын визуализациялауға мүмкіндік береді. Сонымен қатар, UML мұнымен шектелмейді. UML көмегімен сіз компанияңыздағы әртүрлі процестерді сипаттай аласыз немесе жазып жатқан функция жұмыс істейтін бизнес процесін сипаттай аласыз. UML сіз үшін қаншалықты пайдалы екенін өзіңіз шешесіз, бірақ оны толығырақ оқуға уақыт бөлу кез келген жағдайда пайдалы болады. #Вячеслав
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION