JavaRush /Java blogi /Random-UZ /UML: nazariyadan amaliyotga
Viacheslav
Daraja

UML: nazariyadan amaliyotga

Guruhda nashr etilgan

Kirish

O'ylaymanki, hamma bolaligida " ikki marta o'lchab, bir marta kes " degan maqolni eshitgan . Dasturlashda ham xuddi shunday. Uni amalga oshirishga vaqt sarflashdan oldin uni amalga oshirish haqida o'ylash har doim yaxshiroqdir. Ko'pincha amalga oshirish jarayonida siz sinflarni yaratishingiz va ularning o'zaro ta'sirini ixtiro qilishingiz kerak. Va ko'pincha buning vizual tasviri muammoni eng to'g'ri yo'l bilan hal qilishga yordam beradi. Bu erda UML bizga yordam beradi .

UML nima?

Agar siz qidiruv tizimlaridagi rasmlarga qarasangiz, UML diagrammalar, o'qlar va kvadratlar haqida bir narsa ekanligi ayon bo'ladi . Muhimi shundaki, UML yagona modellashtirish tiliga tarjima qilinadi . Bu erda Unified so'zi muhim ahamiyatga ega. Ya'ni suratlarimizni nafaqat biz, balki UMLni biladigan boshqalar ham tushunadi. Ma'lum bo'lishicha, bu diagramma chizish uchun xalqaro tildir.

UML: nazariyadan amaliyotga - 1

Vikipediya aytganidek

UML - dasturiy ta'minotni ishlab chiqish, biznes jarayonlarini modellashtirish, tizimlarni loyihalash va tashkiliy tuzilmalarni ko'rsatishda ob'ektni modellashtirish uchun grafik tavsif tili.
Hamma ham o'ylamaydigan yoki tushunmaydigan eng qiziq narsa shundaki, UMLning texnik xususiyatlari bor. Bundan tashqari, hatto UML2 spetsifikatsiyasi ham mavjud. Spetsifikatsiya haqida batafsil ma'lumotni Object Management Group veb-saytida topishingiz mumkin . Aslida, bu guruh UML spetsifikatsiyalarini ishlab chiqmoqda. Shunisi qiziqki, UML faqat sinflar tuzilishini tavsiflash bilan cheklanmaydi. UML diagrammalarining ko'p turlari mavjud. UML diagrammalarining turlarining qisqacha tavsifini xuddi shu Vikipediyada ko'rish mumkin: UML diagrammalari yoki Timur Batyrshinov videosida UML diagrammalarini ko'rib chiqish . UML ham turli jarayonlarni tavsiflash uchun keng qo'llaniladi, masalan, bu erda: JWT yordamida bitta tizimga kirish . UML klassi diagrammalaridan foydalanishga qaytadigan bo'lsak, " Hesh First: Design Patterns" kitobiga e'tibor qaratish lozim , unda naqshlar o'sha UML diagrammalari bilan tasvirlangan. Ma'lum bo'lishicha, UML haqiqatan ham qo'llanilmoqda. Va ma'lum bo'lishicha, uni qo'llashni bilish va tushunish juda foydali mahoratdir.

Ilova

Keling, IDE-dan xuddi shu UML bilan qanday ishlashingiz mumkinligini ko'rib chiqaylik. Keling, IntelliJ Idea-ni IDE sifatida olaylik . Agar biz IntelliJ Idea Ultimate dan foydalansak , bizda “ UML Support ” plagini qutidan tashqarida o'rnatiladi. Bu sizga avtomatik tarzda chiroyli sinf diagrammalarini yaratish imkonini beradi. Misol uchun, Ctrl+N yoki menyu bandidan foydalanib, "Navigate" -> "Sinf" biz ArrayList sinfiga o'tamiz . Endi sinf nomi uchun kontekst menyusi orqali “Diagramma” -> “Qalqib chiquvchi diagrammani ko‘rsatish” bandini tanlang. Natijada biz chiroyli diagramma olamiz:
UML: nazariyadan amaliyotga - 2
Ammo agar siz uni o'zingiz chizmoqchi bo'lsangiz va sizda Idea ning Ultimate versiyasi bo'lmasa-chi? Agar biz IntelliJ Idea Community Edition-dan foydalansak, boshqa tanlovimiz yo'q. Buning uchun bunday UML diagrammasi qanday tuzilganligini tushunishingiz kerak. Birinchidan, biz Graphviz ni o'rnatishimiz kerak . Bu grafiklarni vizualizatsiya qilish uchun yordamchi dasturlar to'plami. U biz foydalanadigan plagin tomonidan ishlatiladi. O'rnatishdan so'ng siz Graphviz o'rnatish katalogidan PATH muhit o'zgaruvchisiga bin katalogini qo'shishingiz kerak . Shundan so'ng, IntelliJ Idea-da menyudan File -> Settings-ni tanlang. "Sozlamalar" oynasida "Plaginlar" toifasini tanlang, "Omborlarni ko'rib chiqish" tugmasini bosing va PlantUML integratsiya plaginini o'rnating . Nima uchun PlantUML juda yaxshi ? U UMLni tavsiflash uchun " nuqta " deb nomlangan grafik tasvirlash tilidan foydalanadi va bu uni yanada universal bo'lishiga imkon beradi, chunki... Bu til nafaqat PlantUML tomonidan qo'llaniladi. Bundan tashqari, biz quyida qilgan barcha ishlarni nafaqat IDE-da, balki planttext.com onlayn xizmatida ham qilish mumkin . PlantUML plaginini o'rnatganimizdan so'ng biz "Fayl" -> "Yangi" orqali UML diagrammalarini yaratishimiz mumkin. «UML klassi» tipidagi diagramma tuzamiz. Ushbu jarayon davomida namunali shablon avtomatik ravishda yaratiladi. Keling, uning mazmunini o'chirib tashlaymiz va Habr-dan maqola bilan qurollangan o'zimizni yaratamiz: Sinf munosabatlari - UML dan kodga . Va buni matnda qanday tasvirlashni tushunish uchun, keling, PlantUML qo'llanmasini olaylik: plantuml sinf diagrammasi . Eng boshida ulanishlarni qanday tasvirlash kerakligini ko'rsatadigan jadval mavjud:
UML: nazariyadan amaliyotga - 3
Shuningdek, biz bu erda bog'lanishlarni ko'rib chiqishimiz mumkin: " UMLdagi sinflar o'rtasidagi munosabatlar. Misollar ." Ushbu materiallarga asoslanib, keling, UML diagrammamizni yaratishni boshlaylik. Keling, ikkita sinfni tavsiflovchi quyidagi tarkibni qo'shamiz:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Idea-da natijani ko'rish uchun "View" -> "Tool Windows" -> "PlantUML" ni tanlang. Biz faqat sinflarni ifodalovchi ikkita kvadrat olamiz. Ma'lumki, bu ikkala sinf ham List interfeysini amalga oshiradi. Bu sinf munosabatlari amalga oshirish deb ataladi. Bunday aloqani tasvirlash uchun nuqta chiziqli o'qdan foydalaning. Keling, uni tasvirlaymiz:
interface List
List <|.. ArrayList
List <|.. LinkedList
List- bolalar sinflaridan biri Collection. Ya'ni, u Collection'dan meros oladi. Bu bog`lanish umumlashtirish deyiladi. Bu muntazam uzluksiz chiziqli o'qga o'xshaydi. Keling, uni tasvirlaymiz:
interface Collection
Collection <|-- List
Quyidagi ulanish turi uchun sinf tavsifiga paketning shaxsiy elementlar massivi ArrayListhaqidagi yozuvni qo'shing:
~Object[] elementData
ArrayListEndi biz ba'zi ob'ektlarni o'z ichiga olgan narsalarni ko'rsatmoqchimiz . Bunday holda, ulanish turi yig'ish bo'ladi . Bu holatda birlik ArrayList, chunki u boshqa ob'ektlarni o'z ichiga oladi. Biz agregatsiyani tanlaymiz, chunki ro'yxatdagi ob'ektlar ro'yxatsiz yashashi mumkin: ular uning ajralmas qismlari emas. Ularning umri ro'yxatning umri bilan bog'liq emas. Agregat lotin tilidan "yig'ilgan", ya'ni biror narsadan tashkil topgan narsa deb tarjima qilingan. Misol uchun, hayotda nasos va dvigateldan iborat nasos agregati mavjud. Jihozning o'zi demontaj qilinishi mumkin, uning ba'zi qismlari qoladi. Masalan, sotish yoki boshqa birlikka qo'yish. Ro'yxat ham shunday. Va bu birlik yaqinidagi bo'sh olmos va uzluksiz chiziq shaklida ifodalanadi. Keling, buni quyidagicha tasvirlaymiz:
class Object{
}
ArrayList o- Object
Endi biz ko'rsatmoqchimizki, dan farqli o'laroq ArrayList, sinfda saqlangan ma'lumotlarga tegishli konteynerlar LinkedListmavjud . NodeBunday holda, Nodeular o'zlarining bir qismidir LinkedListva alohida yashay olmaydi. Nodeto'g'ridan-to'g'ri saqlangan kontent emas, balki faqat unga havolani o'z ichiga oladi. Misol uchun, biz bir qatorga qo'shganda LinkedList, biz yangi ni qo'shamiz Node, u o'sha qatorga havolani, shuningdek, oldingi va keyingi ga havolani o'z ichiga oladi Node. Ushbu turdagi aloqa kompozitsion deb ataladi . Kompozitni (qismlardan iborat bo'lgan) ko'rsatish uchun rangli olmos chiziladi, unga doimiy chiziq olib boriladi. Keling, buni ulanishning matnli ko'rinishi sifatida yozamiz:
class Node{
}
LinkedList *-- Node
Va endi biz munosabatlarning yana bir muhim turini - qaramlik munosabatlarini qanday ko'rsatishni o'rganishimiz kerak . U bir sinf boshqasini ishlatganda ishlatiladi, lekin sinf foydalanilayotgan sinfni o'z ichiga olmaydi va uning avlodi emas. Masalan, LinkedListular ArrayListqanday yaratishni bilishadi ListIterator. Keling, buni nuqta chiziqli o'qlar sifatida ko'rsatamiz:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Bularning barchasidan keyin u quyidagicha ko'rinadi:
UML: nazariyadan amaliyotga - 4
Agar kerak bo'lsa, batafsilroq ma'lumotga ega bo'lishingiz mumkin. Barcha belgilar bu erda ko'rsatilgan: " PlantUML - Sinf diagrammasi ". Bundan tashqari, bunday diagrammani chizishda g'ayritabiiy narsa yo'q va o'z vazifalaringiz ustida ishlayotganingizda, uni tezda qo'l bilan chizishingiz mumkin. Bu sizning dastur arxitekturasi orqali fikrlash qobiliyatingizni rivojlantiradi va noto'g'ri modelni amalga oshirish bilan kun o'tkazganingizdan keyin emas, balki sinf tuzilmasining kamchiliklarini erta aniqlashga yordam beradi. Menimcha, bu sinash uchun yaxshi sababdir? )
UML: nazariyadan amaliyotga - 5

Avtomatlashtirish

PlantUML diagrammalarini avtomatik ravishda yaratishning turli usullari mavjud. Misol uchun, Idea- da SketchIT plagini mavjud , ammo u ularni to'g'ri chizmaydi. Masalan, interfeyslarni amalga oshirish noto'g'ri chizilgan (meros sifatida ko'rsatiladi). Bundan tashqari, Internetda buni loyihangizning hayot aylanishiga qanday kiritish haqida misollar mavjud. Aytaylik, Maven uchun uml-java-docklet dan foydalanishga misol bor . Bu qanday amalga oshirilishini ko'rsatish uchun biz Maven loyihasini tezda yaratish uchun Maven Archetype- dan foydalanamiz . Buyruqni bajaramiz: mvn archetype:generate Filtrni tanlash so'ralganda ( Raqamni tanlang yoki filtrni qo'llash ), Enter tugmasini bosish orqali standartni qoldiring. Bu har doim " maven-archetype-quickstart " bo'ladi . Oxirgi versiyani tanlang. Keyin biz savollarga javob beramiz va loyihani yaratishni yakunlaymiz:
UML: nazariyadan amaliyotga - 6
Maven ushbu maqolaning diqqat markazida bo'lmaganligi sababli, Maven savollaringizga javoblarni Maven foydalanuvchilari markazida topish mumkin . Yaratilgan loyihada tahrirlash uchun loyiha tavsifi faylini, pom.xml ni oching . Unga o'rnatish uml-java-docklet tavsifidan tarkibni ko'chirib olaylik . Ta'rifda foydalanilgan artefaktni Maven markaziy omborida topib bo'lmadi. Lekin bu men uchun ishladi: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 . Ya'ni, ushbu tavsifda siz " info.leadinglight " dan groupId ni " com.chfourie " bilan almashtirishingiz va versiyani " 1.0.0 " ga o'rnatishingiz kerak. Shundan so'ng biz pom.xml fayli joylashgan katalogda ushbu buyruqlarni bajarishimiz mumkin: va . Endi biz yaratilgan hujjatlarni ochsak (explorer target\site\apidocs\index.html), biz UML diagrammalarini ko'ramiz. Aytgancha, dastur allaqachon bu erda to'g'ri ko'rsatilgan) mvn clean installmvn javadoc:javadoc

Xulosa

Ko'rib turganingizdek, UML ilovangiz tuzilishini tasavvur qilish imkonini beradi. Bundan tashqari, UML faqat bu bilan cheklanmaydi. UML-dan foydalanib, siz kompaniyangizdagi turli jarayonlarni tasvirlashingiz yoki siz yozayotgan funktsiya ishlayotgan biznes jarayonini tavsiflashingiz mumkin. UML siz uchun qanchalik foydali ekanligini shaxsan o'zingiz hal qilasiz, lekin uni batafsil o'qish uchun vaqt ajratish har qanday holatda ham foydali bo'ladi. #Viacheslav
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION