2-Amaliy ish Guruh: 317-21 Bajardi: Sayidov Sanjar Tekshirdi: Otaxonova Bahrixon




Download 1,04 Mb.
Sana20.05.2024
Hajmi1,04 Mb.
#245922
Bog'liq
2-amaliy DTA


O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XOZAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
DT arxitekturasi fanidan


2-Amaliy ish
Guruh: 317-21
Bajardi: Sayidov Sanjar
Tekshirdi:Otaxonova Bahrixon

Qatlamli arxitektura dasturni monolit sifatida ko'rib chiqadi va uning mantiqini turli qatlamlarga ajratadi. Ushbu qatlamlarning har biri uning ostidagi qatlamga bog'liq. Shunga qaramay, qatlamli arxitekturadan foydalanish shundan iboratki, har bir qatlam boshqasini o'zgartirmasdan o'zgartirilishi mumkin. Bu, ayniqsa, "Ochiq-yopiq" tamoyiliga yordam beradi.
Har bir mantiqiy komponent boshqa dastur bo'lgan uch darajali yoki N-darajali arxitektura bilan chalkashtirmaslik kerak. Garchi ularning ortidagi g'oya o'xshash bo'lsa-da.
Aytaylik, siz universitetda semestr yoki bakalavr loyihangiz uchun ariza yaratishingiz kerak yoki ish joyingizda sizga xuddi shunday topshiriq berilgan yoki siz bo'sh vaqtingizda loyiha ustida ishlashni xohlaysiz. Siz darhol kodlashni boshlash uchun aqldan ozgan emassiz, to'g'rimi? Bu juda xavfli bo'lib, dizayn muammolarini keltirib chiqarishi mumkin edi, shuning uchun siz bir necha soat vaqt sarflagan bo'lardingiz.
Misol
Misol tariqasida foydalanuvchilar (ehtimol frontend ilovasi) virtual kitob javonini boshqarish uchun API ga so'rov yuboradigan ilovani olaylik.
Men oddiy talablar to'plamini o'ylab topdim:
Foydalanuvchi nomlari bilan javonlar yaratishi kerak.
Foydalanuvchi kitoblarni javonga qo'shish imkoniyatiga ega bo'lishi kerak.
Foydalanuvchi kitoblarni qo'shishi mumkin, lekin javonga emas.
Foydalanuvchi ma'lum bir kitobni ko'rishi kerak.
Foydalanuvchi identifikatori bo'yicha javon olishi kerak.
Foydalanuvchi barcha kitoblarini ko'rishi kerak.
Foydalanuvchi o'zining barcha javonlarini ko'rishi kerak.
Keling, ilovani kiruvchi so'rovlar, biznes ehtiyojlariga qarab ushbu so'rovlarni ko'rib chiqish va ma'lumotlar bazasiga ulanish bilan shug'ullanadigan kerakli qismlarga ajratamiz.
Yuqorida keltirilgan mantiq har qanday tilda kodlanishi mumkin. Ushbu aniq misol uchun men Java 11 va Spring Boot-dan foydalanaman.
https://start.spring.io/ saytiga o‘tib, to‘g‘ri bog‘liqliklarni qo‘shib, Spring Boot ilovasini yaratish nisbatan oson.
Bu shunday ko'rinadi:

Ushbu "Yaratish" tugmasini bosgandan so'ng, zip jildini osongina topishingiz mumkin bo'lgan joyda saqlang. Keyin uni xuddi shu joyda oching.

Agar siz loyihani ochishda muammolarga duch kelsangiz (men qilganimdek), sozlamalaringizda maven yo'lini o'rnatgan yoki yo'qligini tekshirib ko'ring (Fayl->Sozlama->Yaratish, bajarish, joylashtirish->Build asboblari->Maven->Maven Intellij uchun uy yo'li).



Sizning loyiha papkangiz endi IDEda shunday ko'rinishi kerak. Agar siz dasturni darhol ishga tushirsangiz, sizda ma'lumotlar manbasi etishmayotganligi haqidagi xabarni ko'rasiz. Buni tuzatish uchun main/resources/application.properties sahifasiga o'ting va ma'lumotlar manbai konfiguratsiyasini o'rnating. Ushbu misol uchun men PostgreSQL ma'lumotlar manbasini o'rnataman.

Bu faylda bo'lishi kerak bo'lgan oddiy konfiguratsiya.



Odatda, men ma'lumotlar bazasida foydalanmoqchi bo'lgan ob'ektlardan boshlashni afzal ko'raman. Buning uchun men "model" deb nomlangan to'plamni yarataman (bu mavzuning kamroq qismi, aksincha, ishlarni qilishning yaxshi usuli). Bu erda men o'zimning POJO'larimni (Plain Old Java Objects) kerakli izohlar bilan, bitta bo'sh konstruktor va bitta mening maqsadlarim uchun, shuningdek qabul qiluvchilar va sozlashchilar bilan yarataman.
Mening ob'ektlarim shunday ko'rinadi:
Shelf:


E'tibor bering, Shelf va Book o'rtasida "Birdan ko'pga" aloqasi bor (har bir kitob uchun bitta javon). Bu izohlar yordamida osonlik bilan amalga oshiriladi.
Ob'ektlarni yaratgandan so'ng, men Hibernate ma'lumotlar bazasida jadvallarni qanday yaratishini ko'rish uchun dasturni qayta ishga tushiraman.
Endi, yuqorida aytib o'tilgan talablarga ega bo'lgan holda, men ilgari aytib o'tgan uchta qatlamni qo'shaman, xususan: kontrollerlar (taqdimot), xizmat (biznes mantig'i) va omborlar (ma'lumotlar).
Endi qadoqlash quyidagicha ko'rinadi:

Ko'rib turganingizdek, men boshqaruvchilar orqali ma'lumotlarni olish uchun DTO (Ma'lumotlarni uzatish ob'ektlari) dan foydalanish uchun "dtos" paketini ham qo'shdim.
Kod yozishni qaerdan boshlash kerakligi haqida hech qanday aniq ko'rsatma ko'rmadim. Ba'zilar uchun ma'lumotlar kelib tushadigan boshqaruvchilardan boshlash va keyin ularning mantig'i bilan boshqa sinflarni yaratish mantiqiy. Boshqalar uchun ma'lumotlar bazasida CRUD operatsiyalarini ta'minlaydigan omborlar uchun interfeyslarni yozish mantiqan to'g'ri keladi. Bundan tashqari, xizmatlardan boshlash mantiqan to'g'ri keladi, chunki bu sinflar asosan dasturning biznes mantig'i bilan shug'ullanadi.
Bir narsa aniq bo'lishi kerak, har bir qatlam uning ostidagi qatlamga bog'liq. Shu sababli, men uchun omborlarni yaratishdan boshlash mantiqan.

Download 1,04 Mb.




Download 1,04 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



2-Amaliy ish Guruh: 317-21 Bajardi: Sayidov Sanjar Tekshirdi: Otaxonova Bahrixon

Download 1,04 Mb.