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.
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:
@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 ArrayList
haqidagi yozuvni qo'shing:
~Object[] elementData
ArrayList
Endi 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 LinkedList
mavjud . Node
Bunday holda, Node
ular o'zlarining bir qismidir LinkedList
va alohida yashay olmaydi. Node
to'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, LinkedList
ular ArrayList
qanday 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:
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:
mvn clean install
mvn javadoc:javadoc
GO TO FULL VERSION