2.2.1-rasm. Restoran uchun buyurtma olish tizimining Use case diagrammasi
Class diagrammalari nima va ular nima uchun ishlatiladi?
Class diagrammalari UML diagrammasining hayratlanarli darajada ko'p qirrali turidir. Ular tizimni qanday qurish kerakligi haqidagi norasmiy diagrammani tezda chizish uchun dasturiy ta'minotni ishlab chiqishning barcha turlarida ishlatilishi mumkin. Sinf diagrammalarini tushunish oson bo'lganligi sababli, tizim yoki ma'lumotlar bazasini loyihalashning dastlabki bosqichlarida xatolarga yo'l qo'ymaslik uchun ularni texnik bo'lmagan manfaatdor tomonlar bilan bo'lishish mumkin. Sinf diagrammasi yaratilgandan so'ng, u kelajakdagi tizim
uchun loyiha bo'lib xizmat qiladi va dastlabki talablar va dizayn qarorlarini saqlab qoladi.
Sinf diagrammasi tizimning statik ko'rinishini ko'rsatadi. U tizimda mavjud bo'lgan sinflarni yoki ob'ektlarning turlarini o'z ichiga oladi. Shuningdek, u ushbu sinflarning atributlari yoki xususiyatlarini va usullarini yoki har bir sinfning boshqa sinflar bilan o'zaro ta'sirini ko'rsatadi. Tizimni loyihalashtirgan dasturiy ta'minot muhandislari bu ma'lumotlarning barchasini bitta diagrammada bo'lsa, ular bir qarashda qanday qilib bir-biriga mos kelishini va sinflar o'rtasidagi munosabatlar qanday sodir bo'lishini osongina ko'rishlari mumkin.
Sinf diagrammalarini yaratish oson. Sinf bu faqat uchta segmentdan iborat to'rtburchaklar: tepada nom, o'rtada atributlar va pastda usullar. Sinflar orasidagi bog'lovchi, etiketli chiziqlar ular orasidagi munosabatlarni ifodalaydi. Ushbu sinflar tizimni to'ldiradigan ob'ektlar uchun shablon sifatida ishlaydi.
Sinf diagrammalaridan kutubxona boshqaruvidan tortib ATM tizimlariga, shuningdek, onlayn xarid qilish tizimiga qadar har xil turdagi tizimlarni modellashtirish uchun foydalanish mumkin. Ushbu misol uchun biz noldan restoran boshqaruv tizimini loyihalashtirmoqchimiz. Siz qanday sinflarni yaratishingiz kerakligini, ularda bo'lishi kerak bo'lgan atributlar va usullarni, shuningdek, restoranning muammosiz ishlashiga ishonch hosil qilish uchun sinflar qanday ishlashini va oshpazdan stolgacha bo'lgan buyurtmalarni qayta ishlashini bilib olasiz!
Biz ushbu misol uchun qulay Gleek diagrammalash vositasidan foydalanamiz. Gleek diagrammalar yaratishda noyobdir, chunki u oddiy matn sintaksisi yordamida diagrammalarni chizish imkonini beradi.
Birinchidan, biz kiritishimiz kerak bo'lgan sinflarni ishlab chiqishimiz kerak.
Jadvalni bron qilish bosqichidan boshlaylik.
Receptionist sinfi tizim tomonidan qo'lga kiritilishi uchun hech qanday maxsus atributlarga muhtoj emas, lekin bronni yaratish usuliga muhtoj. Esda tutingki, bu usul sinfning boshqa sinflar bilan qanday aloqada bo'lishini belgilaydi.
Bunday oddiy sinfni yaratish uchun Gleekdagi sintaksis juda oson. Shunchaki “Receptionist” so‘zini kiriting, so‘ng “createReservation()” usulini qo‘shish uchun Enter va tab tugmasini bosing. Qavslar Gleekga bu usul ekanligini aytadi. Gleek sizning birinchi sinfingizni quyidagicha chizadi:
2.2.2-rasm. Joy band qilish sinfi
Resepsiyonist va rezervatsiya o'rtasidagi munosabatlar oddiy. Qabulxona xodimi bronni "yaratadi".
Resepsiyonist-yaratadi->Rezervasyon
Va u sizning sinflaringiz orasida o'qni chizadi:
rasm. Qabul qilish sinfi
Keyingi sinf Jadval bo'lib, u noyob identifikatorga, boshqacha qilib aytganda, uning jadval raqamiga muhtoj, shuningdek, u xizmatdan tashqari yoki allaqachon zahiralangan bo'lishi mumkin bo'lgan holatga muhtoj. To'g'ri odam
o'tirishi uchun unga "maxCapacity" atributi ham kerak. Usullarga kelsak, bu faqat bronni qo'shish usulini talab qiladi.
Jadval va bron qilish o'rtasida ham bevosita bog'liqlik mavjud. Rezervasyon ma'lum bir stol uchun "uchun" amalga oshiriladi, shuning uchun restoran ortiqcha bandlamaydi va mehmonlar soni to'g'ri stolga mos keladi. Bunday holda, munosabatlar ham tubdan bo'ladi, shuning uchun tizimni ishlab chiquvchiga bu ikki sinf o'rtasida ko'p-ko'p munosabatlar mavjudligi aniq bo'ladi.
Jingalak qavs ichidagi yulduzcha ko'plab jadvallar uchun ko'plab rezervlar bo'lishi mumkinligini anglatadi.
Rezervasyon{*}-for-{*}Jadval
Va bizning dastlabki uchta sinfimiz o'rtasidagi natijaviy aloqalar:
rasm. Stol klassi
Endi biz mehmonlar kelishdi va o'z stoliga qulay tarzda o'tirishdi deb taxmin qilamiz. Bu yuqori texnologiyali restoran bo‘lib, mijozlar o‘z smartfonlarida ro‘yxatdan
o‘tishlari va buyurtmalarini topshirishlari mumkin. Bu shuni anglatadiki, har bir mijoz tizimning bir qismidir. Shunday qilib, endi bizga Mijozlar sinfi va Buyurtma sinfi kerak.
Mijoz sinfiga ism, aloqa raqami va noyob mijoz identifikatori kabi bir nechta asosiy atributlar kerak. Shuningdek, ularga tizim bilan oʻzaro aloqada boʻlish uchun “checkIn”, “checkout”, “lastVisited”, “cancelOrder” va “modifyOrder” kabi baʼzi usullar kerak boʻladi.
Buyurtma klassi, shuningdek, noyob identifikator, holat va menyu elementlarini qo'shish yoki o'chirish qobiliyatiga muhtoj (ehtimol, biz qaysi sinfni qo'shishimizni taxmin qilishingiz mumkin).
Bu safar munosabatlar to'g'ridan-to'g'ri. Xaridor buyurtmani "qiladi".
Siz kutganingizdek,
rasm. Mijoz sinfi
mijoz ham menyuga
muhtoj va menyu mijoz tanlashi uchun mazali taomlar bilan to'ldirilishi kerak. Bu bizni Menyu va MenuItem sinflariga olib keladi.
Menu sinfiga alohida usullar kerak emas, lekin u ikkita atributga ega, MenuItem esa bir qator atributlarga va bitta usulga ega. Munosabatlar oddiy, lekin u birdan-ko'pning asosiyligini ko'rsatadi, chunki bitta menyuda ko'plab menyu elementlari bo'lishi mumkin. Buning sintaksisi sizga hozirgacha tanish bo'lishi kerak:
Yana ikkita sinfga kiring: ofitsiant va oshpaz. Ularning Buyurtma sinfi bilan aloqasi bor, bunda ofitsiant buyurtmani "qabul qiladi", oshpaz esa buyurtmani "tayyorlaydi". MenuItems klassi,
rasm. Menu sinfi
shuningdek, Buyurtma sinfiga aloqador, chunki menyu elementlari uning usullarining bir qismi sifatida qo'shilishi yoki olib tashlanishi mumkin.
Bularning barchasini birlashtirish uchun biz oxirgi sinfni, Billni qo'shishimiz kerak. Mehmonlar o'zlarining oqshomidan zavqlanishdi, ammo to'lash vaqti keldi. Bill klassi Buyurtma klassi bilan yakkama-yakka munosabatda bo'lib, noyob identifikatorga ega bo'lishi, mijoz identifikatorini, to'lov turini yozib olishi kerak, shu bilan birga unga ikkita usul kerak bo'ladi, biri to'lash va ikkinchisi to'lovni bekor qilish. Umumiy class diagramma ko’rinishi:
rasm. Restoranda buyurtma qilish uchun class diagrammasi
|