O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI FARG‘ONA FILIALI Dasturiy injenering va raqamli iqtisodiyot fakulteti Dasturiy injenering yo‘nalishi 651-21 guruh talabasi G‘anijonov Ibrohimjonning “Dasturiy ta'minot arxitekturasi” fanidan tayyorlagan MUSTAQIL ISHI Topshirdi: I.G‘anijonov Qabul qildi: M.Asrayev Farg‘ona 2024 STRUKTURAVIY DIZAYN NAQSHLARI Strukturaviy dizayn naqshlari dasturiy taminot arxitekturasining muhim qismidir. Ular obyektlar va klasslararo munosabat va tashkil etishga e’tibor qaratilgan dasturiy dizayn naqshlaridir. Bu turiy naqshlar dasturiy taminotning kodini yanada samarali, mantiqiy va qayta ishlatiladigan tuzilma yaratishda ishlatiladi. Strukturaviy dizayn naqshlari tizimni katta tuzilma uchun turli obyektlar va klasslarni birga birlashtirishning qanday yo’li bo’lishi haqida g’oya beradi. Strukturaviy dizaynlardagi naqshlar tizimni kengaytirishga va moslashuvchanligini oshirishga yordam beradi. Misol uchun, quyidagi strukturaviy dizayn naqshlari mavjud: Adapter dizayn Mijoz kutganiga ko'ra interfeysni boshqasiga moslashtirish. Ko'prik dizayn Abstraktsiyani (interfeysni) amalga oshirishdan ajratish. Kompozit dizayn Mijozlarga ob'ektlar ierarxiyasi bo'yicha ishlashga ruxsat berish. Dekorativ dizayn Ob'ektga dinamik ravishda funksional qo'shish. Fasad dizayn Interfeyslar to'plamiga interfeysni taqdim etish. Flyweight dizayn Ob'ektni almashish orqali uni qayta ishlatish. Proksi dizayn Boshqa ob'ektni ifodalash. Adapter dizayni Adapter naqshida aytilishicha, shunchaki "sinf interfeysini mijoz xohlagan boshqa interfeysga o'zgartiradi". Boshqacha qilib aytganda, boshqa interfeysga ega bo'lgan sinf xizmatlaridan foydalanganda mijoz talabiga binoan interfeysni ta'minlash. Adapter namunasi, shuningdek, o'rashchi sifatida ham tanilgan. Adapter naqshining afzalligi: Ikki yoki undan ortiq avval mos kelmaydigan ob'ektlarning o'zaro ta'siriga imkon beradi. Bu mavjud funksiyalarni qayta ishlatish imkonini beradi. Adapter namunasidan foydalanish: Ob'ekt mos kelmaydigan interfeysga ega mavjud sinfdan foydalanishi kerak bo'lganda. Mos interfeyslarga ega bo'lmagan sinflar bilan hamkorlik qiladigan qayta foydalanish mumkin bo'lgan sinf yaratmoqchi bo'lganingizda. Mos interfeyslarga ega bo'lmagan sinflar bilan hamkorlik qiladigan qayta foydalanish mumkin bo'lgan sinf yaratmoqchi bo'lganingizda. Adapter namunasi uchun UML: Adapter namunasi uchun quyidagi texnik xususiyatlar mavjud: Maqsadli interfeys: Bu mijozlar tomonidan foydalaniladigan kerakli interfeys sinfidir. Adapter klassi: Bu sinf kerakli maqsadli interfeysni amalga oshiradigan va Adaptee sinfida mavjud bo'lgan maxsus so'rovni o'zgartiradigan o'rash sinfidir. Adapter klassi: Bu Adapter sinfi tomonidan mavjud funksiyalarni qayta ishlatish va ularni kerakli foydalanish uchun o'zgartirish uchun ishlatiladigan sinf. Mijoz: Bu sinf Adapter sinfi bilan o'zaro ishlaydi. Ko'prik dizayni Ko'prik naqshida aytilishicha, "funktsional abstraktsiyani amalga oshirishdan ajratib oling, shunda ikkalasi mustaqil ravishda farq qilishi mumkin". Ko'prik naqshlari tutqich yoki tana sifatida ham tanilgan. Ko'prik naqshining afzalligi Amalga oshirishni interfeysdan ajratish imkonini beradi. U kengayishni yaxshilaydi. Bu mijozdan amalga oshirish tafsilotlarini yashirishga imkon beradi. Ko'prik naqshidan foydalanish Funktsional abstraktsiya va uni amalga oshirish o'rtasida doimiy bog'lanishni xohlamasangiz. Funktsional abstraktsiyani ham, uni amalga oshirishni ham kichik sinflar yordamida kengaytirish kerak bo'lganda. U asosan amalga oshirishdagi o'zgarishlar mijozlarga ta'sir qilmaydigan joylarda qo'llaniladi.AD Ko'prik naqshiga misol Quyida keltirilgan UML ko'prik naqshining misolini tasvirlaydi. Bridge Pattern uchun UML: Kompozit dizayni Kompozit namunada aytilishicha, "mijozlarga ob'ektlar ierarxiyasini ifodalashi mumkin bo'lgan yoki bo'lmasligi mumkin bo'lgan ob'ektlarda umumiy tarzda ishlashga ruxsat berish". Kompozit dizayn naqshining afzalligi U ibtidoiy va murakkab ob'ektlarni o'z ichiga olgan sinf ierarxiyasini belgilaydi. Bu sizga yangi turdagi komponentlarni qo'shishni osonlashtiradi. Bu boshqariladigan sinf yoki interfeys bilan strukturaning moslashuvchanligini ta'minlaydi. Kompozit dizaynidan foydalanish Ob'ektlarning to'liq yoki qisman ierarxiyasini ifodalamoqchi bo'lganingizda. Mas'uliyatni boshqa ob'ektlarga ta'sir qilmasdan alohida ob'ektlarga dinamik ravishda qo'shish kerak bo'lganda. Ob'ektning javobgarligi vaqti-vaqti bilan farq qilishi mumkin bo'lgan hollarda. Kompozit naqsh uchun UML Kompozit naqshda ishlatiladigan elementlar: Keling, kompost naqshining 4 ta elementini ko'rib chiqaylik. 1) Komponent Kompozitsiyadagi ob'ektlar uchun interfeysni e'lon qiladi. Tegishli barcha sinflar uchun umumiy interfeys uchun standart xatti-harakatni amalga oshiradi. O'zining yordamchi komponentlariga kirish va ularni boshqarish uchun interfeysni e'lon qiladi. 2) Barg Tarkibdagi barg obyektlarini ifodalaydi. Bargning bolalari yo'q. Kompozitsiyadagi ibtidoiy ob'ektlar uchun xatti-harakatni belgilaydi. 3) kompozitsion Bolalarga ega bo'lgan komponentlar uchun xatti-harakatni belgilaydi. Bola komponentini saqlaydi. Komponent interfeysida bolalar bilan bog'liq operatsiyalarni amalga oshiradi. 4) mijoz Komponent interfeysi orqali kompozitsiyadagi ob'ektlarni manipulyatsiya qiladi. Eslatma: Yuqoridagi umumiy UML ning ish jarayoni quyidagicha. Mijoz kompozitsiya tarkibidagi ob'ektlar bilan o'zaro aloqa qilish uchun komponentlar sinfi interfeysidan foydalanadi. Agar qabul qiluvchi varaq bo'lsa, so'rov bevosita ko'rib chiqiladi. Agar qabul qiluvchi kompozit bo'lsa, u odatda qo'shimcha operatsiyalarni bajarish uchun so'rovni o'z farzandiga yuboradi. Kompozit naqsh namunasi Quyida keltirilgan UML diagrammasi orqali kompozit dizayn namunasini osongina tushunishimiz mumkin: Dekorativ dizayni Dekorator naqshida aytilishicha, shunchaki "ob'ektga dinamik ravishda moslashuvchan qo'shimcha mas'uliyat yuklang". Boshqacha qilib aytganda, The Decorator Pattern ish vaqtida ob'ektning funksionalligini kengaytirish uchun meros o'rniga kompozitsiyadan foydalanadi. Dekorator naqshi, shuningdek, o'rashchi sifatida ham tanilgan. Dekorator naqshining afzalligi Bu statik merosga qaraganda ko'proq moslashuvchanlikni ta'minlaydi. U ob'ektning kengaytirilishini oshiradi, chunki o'zgarishlar yangi sinflarni kodlash orqali amalga oshiriladi. Bu ob'ektga barcha xatti-harakatlarni kodlash o'rniga maqsadli sinflardan bir qator funktsional imkoniyatlarni ishlab chiqishga imkon berish orqali kodlashni soddalashtiradi. Dekorator naqshidan foydalanish Boshqa ob'ektlarga ta'sir qilmasdan ob'ektlarga mas'uliyatni shaffof va dinamik ravishda qo'shishni xohlaganingizda. Kelajakda o'zgartirishni xohlashingiz mumkin bo'lgan ob'ektga mas'uliyat qo'shmoqchi bo'lganingizda. Funktsionallikni quyi sinflarga bo'lish orqali kengaytirish endi amaliy emas. Dekorator namunasi uchun UML: Fasad dizayni Fasad naqshida aytilishicha, shunchaki "quyi tizimdagi interfeyslar to'plamiga birlashtirilgan va soddalashtirilgan interfeysni taqdim eting, shuning uchun u quyi tizimning murakkabligini mijozdan yashiradi". Boshqacha qilib aytganda, Fasad Pattern quyi tizimdan foydalanishni osonlashtiradigan yuqori darajadagi interfeysni tavsiflaydi. Amalda, har bir abstrakt fabrikasi Fasadning bir turi . Fasad naqshining afzalligi U mijozlarni quyi tizim komponentlarining murakkabligidan himoya qiladi. Bu quyi tizimlar va uning mijozlari o'rtasida bo'sh ulanishni ta'minlaydi. Fasad naqshidan foydalanish: Murakkab quyi tizimga oddiy interfeysni taqdim qilmoqchi bo'lganingizda. Mijozlar va abstraktsiyani amalga oshirish sinflari o'rtasida bir nechta bog'liqliklar mavjud bo'lganda.AD Fasad naqshiga misol Yuqoridagi UML diagrammasi orqali jabha dizayni namunasini tushunamiz. Fasad naqsh uchun UML: Flyweight dizayni Flyweight Pattern faqat "mavjud shunga o'xshash ob'ektlarni saqlash orqali ularni qayta ishlatish va mos keladigan ob'ekt topilmaganda yangi ob'ekt yaratish" deydi . Flyweight Patternning afzalligi Bu ob'ektlar sonini kamaytiradi.cOb'ektlar barqaror bo'lsa, zarur xotira va saqlash qurilmalari miqdorini kamaytiradi Flyweight Pattern dan foydalanish Ilova ob'ektlar sonini ishlatganda Ob'ektlar miqdori tufayli saqlash narxi yuqori bo'lganda. Ilova ob'ekt identifikatoriga bog'liq bo'lmaganda. Proksi dizayni Oddiy qilib aytganda, proksi boshqa ob'ektni ifodalovchi ob'ektni anglatadi. GoF ma'lumotlariga ko'ra, proksi-server "asl ob'ektga kirishni boshqarishni ta'minlaydi". Shunday qilib, biz asl ob'ekt ma'lumotlarini yashirish, talab bo'yicha yuklash va hokazo kabi ko'plab operatsiyalarni bajarishimiz mumkin. Proksi namunasi Surrogate yoki Placeholder sifatida ham tanilgan. RMI API proksi dizayn namunasidan foydalanadi. Stub va Skeleton - bu RMI-da ishlatiladigan ikkita proksi-ob'ekt. Proksi shablonining afzalligi Bu asl ob'ektni tashqi dunyodan himoya qilishni ta'minlaydi. Proksi-serverdan foydalanish: U Virtual Proksi stsenariysida ishlatilishi mumkin --- Katta hajmdagi tasvirni olish uchun bir nechta ma'lumotlar bazasi chaqiruvi mavjud bo'lgan vaziyatni ko'rib chiqing. Bu qimmat operatsiya bo'lgani uchun biz bu erda bir nechta proksi-serverlarni yaratadigan va keyingi ishlov berish uchun katta hajmdagi xotira iste'mol qiladigan ob'ektga ishora qiladigan proksi-server namunasidan foydalanishimiz mumkin. Haqiqiy ob'ekt faqat mijoz ob'ektga birinchi marta so'raganda/kirishganda yaratiladi va shundan so'ng biz ob'ektni qayta ishlatish uchun proksi-serverga murojaat qilishimiz mumkin. Bu ob'ektning takrorlanishini oldini oladi va shuning uchun xotirani saqlaydi. U Himoya proksi stsenariysida ishlatilishi mumkin --- U haqiqiy foydalanuvchi tegishli tarkibga kirish huquqiga ega yoki yo'qligini tekshirish uchun avtorizatsiya qatlami sifatida ishlaydi. Masalan, ofisda Internetga kirishni cheklashni ta'minlaydigan proksi-server. Faqat tegishli veb-saytlar va kontentlarga ruxsat beriladi, qolganlari esa bloklanadi. U Remote Proxy stsenariysida ishlatilishi mumkin --- RPC chaqiruvidagi stub haqida masofaviy proksi-server haqida o'ylash mumkin. Masofaviy proksi-server boshqa manzilda joylashgan ob'ektning mahalliy ko'rinishini taqdim etadi. Yana bir misol, veb-xizmat yoki REST resurslari kabi masofaviy resurslar uchun interfeysni taqdim etishi mumkin. U Smart Proxy stsenariysida ishlatilishi mumkin --- Aqlli proksi-server ob'ektga kirishda muayyan harakatlarni joylashtirish orqali qo'shimcha xavfsizlik darajasini ta'minlaydi. Masalan, boshqa ob'ektlar uni o'zgartira olmasligi uchun unga kirishdan oldin haqiqiy ob'ekt qulflangan yoki qulflanmaganligini tekshirish. Proksi namunasi Yuqoridagi UML diagrammasi orqali proksi-dizayn namunasi misolini tushunamiz. Proksi namunasi uchun UML: Coursera o’quv kursida Front-End dasturchi yo’nalishida sertifikat