Киришүү
« Эки өлчөп, бир кес » деген сөздү бала кезинде эле ар бир адам уккан деп ойлойм . Программалоодо да ушундай. Аны ишке ашырууга убакыт коротоордон мурун аны ишке ашыруу жөнүндө ойлонгонуңуз жакшы. Көп учурда ишке ашыруу учурунда класстарды түзүүгө жана алардын өз ара аракеттенүүсүн ойлоп табууга туура келет. Жана көбүнчө мунун визуалдык көрүнүшү маселени эң туура чечүүгө жардам берет. Бул жерде UML бизге жардам берет .UML деген эмне?
Эгер издөө системаларында сүрөттөрдү карасаңыз, UML диаграммалар, жебелер жана квадраттар жөнүндө бир нерсе экени айкын болот. Эң негизгиси, UML бирдиктүү моделдөө тorне которулат . Бул жерде бирдиктүү сөз маанилүү. Башкача айтканда, биздин сүрөттөрдү биз эле эмес, UMLди билген башкалар да түшүнөт. Көрсө, бул диаграммаларды тартуунун эл аралык тor экен.
Википедия айткандай
UML бул программалык камсыздоону иштеп чыгууда, бизнес процесстерин моделдөөдө, системаларды долбоорлоодо жана уюштуруу структураларын көрсөтүүдө an objectилерди моделдөө үчүн графикалык сүрөттөмө тor.Баары эле ойлонбогон же түшүнө бербеген эң кызыктуу нерсе - UMLде спецификациялар бар. Мындан тышкары, ал тургай, UML2 спецификациясы бар. Техникалык мүнөздөмөлөр жөнүндө көбүрөөк маалыматты Object Management Group веб- сайтынан тапса болот . Чынында, бул топ UML спецификацияларын иштеп чыгууда. UML класстардын структурасын сүрөттөп берүү менен эле чектелбестиги да кызыктуу. UML диаграммаларынын көптөгөн түрлөрү бар. UML диаграммаларынын түрлөрүнүн кыскача сүрөттөлүшүн ошол эле Википедиядан көрүүгө болот: UML диаграммалары же Тимур Батыршиновдун видеосунан UML диаграммаларын карап чыгуу . UML ар кандай процесстерди сүрөттөө үчүн да кеңири колдонулат, мисалы, бул жерде: JWT аркылуу бир жолу кирүү . UML класс диаграммаларын колдонууга кайрылып, бул китепти белгилей кетүү керек Head First: Дизайн үлгүлөрү , анда үлгүлөр ошол эле UML диаграммалары менен сүрөттөлөт. Көрсө, UML чындап эле колдонулуп жатат. Жана аны колдонууну билүү жана түшүнүү абдан пайдалуу жөндөм экени көрүнүп турат.
Колдонмо
Келгиле, IDEден ушул эле UML менен кантип иштей аларыңызды карап көрөлү. Келгиле, IntelliJ Ideaны IDE катары алалы . Эгерде биз IntelliJ Idea Ultimate колдонсок , анда бизде “ UML Support ” плагини кутудан тышкары орнотулган болот. Ал автоматтык түрдө класстын кооз диаграммаларын түзүүгө мүмкүндүк берет. Мисалы, 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
Эми биз кээ бир an objectтерди камтыган нерсени көрсөткүбүз келет ArrayList
. Бул учурда, байланыш түрү бириктирүү болот . Бул учурда бирдиги болуп саналат ArrayList
, анткени ал башка an objectилерди камтыйт. Биз бириктирүүнү тандайбыз, анткени тизмедеги an objectтер тизмесиз жашай алат: алар анын ажырагыс бөлүгү эмес. Алардын өмүрү тизменин өмүрүнө байланган эмес. Агрегат латын тorнен которгондо “чогулган”, башкача айтканда, бир нерседен турган нерсе. Мисалы, турмушта насос жана мотордон турган насостук агрегат бар. Агрегаттын өзүн демонтаждап, анын айрым бөлүктөрүн калтырса болот. Мисалы, сатуу же башка бирдикке салуу. Тизме да ошондой. Ал эми бул бирдиктин жанындагы бош алмаз жана үзгүлтүксүз сызык түрүндө чагылдырылат. Аны мындайча сүрөттөп көрөлү:
class Object{
}
ArrayList o- Object
ArrayList
Эми биз класстан айырмаланып, сакталган маалыматтарга шилтеме жасаган контейнерлер LinkedList
бар экенин көрсөткүбүз келет . Node
Бул учурда, Node
алар өздөрүнүн бир бөлүгү болуп саналат LinkedList
жана өзүнчө жашай алbyte. Node
түз сакталган мазмун эмес, бирок ага шилтемени гана камтыйт. Мисалы, биз сапка кошкондо , ошол сапка шилтемени, ошондой эле мурунку жана кийинкиге шилтемени камтыган LinkedList
жаңыны кошобуз . Мындай байланыш түрү композиция деп аталат . Композитти (бөлүктөрдөн турган) көрсөтүү үчүн түстүү алмаз тартылып, ага үзгүлтүксүз сызык тартылат. Эми муну байланыштын тексттик дисплейи катары жазалы: Node
Node
class Node{
}
LinkedList *-- Node
Эми биз мамилелердин дагы бир маанилүү түрүн - көз карандылыкты кантип көрсөтүүнү үйрөнүшүбүз керек . Ал бир класс башкасын колдонгондо колдонулат жана класста колдонулуп жаткан класс жок жана анын тукуму эмес. Мисалы, LinkedList
алар ArrayList
кантип түзүүнү бorшет ListIterator
. Келгиле, муну чекиттүү сызык менен жебелер катары көрсөтөлү:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Мунун бардыгынан кийин ал мындай болот:
Автоматташтыруу
PlantUML диаграммаларын автоматтык түрдө түзүүнүн ар кандай жолдору бар. Мисалы, Ideaда SketchIT плагини бар , бирок ал аларды туура тартпайт. Мисалы, интерфейстерди ишке ашыруу туура эмес тартылган (мурас катары көрсөтүлөт). Интернетте муну сиздин долбоордун жашоо циклине кантип куруу керектиги боюнча мисалдар бар. Мавен үчүн uml-java-docklet колдонгон мисал бар дейли . Бул кантип жасалганын көрсөтүү үчүн, биз Maven долбоорун тез түзүү үчүн Maven Archetype колдонобуз . Келиңиз, буйрукту аткаралы:mvn archetype:generate
Чыпканы тандоо суралганда ( Санды тандаңыз же чыпканы колдонуңуз ), жөн гана Enter баскычын басуу менен демейкиден чыгып кетиңиз. Бул ар дайым " maven-archetype-quickstart " болот . Акыркы versionсын тандаңыз. Андан кийин, биз суроолорго жооп берип, долбоорду түзүү аяктайт:
mvn clean install
mvn javadoc:javadoc
GO TO FULL VERSION