C# da Modellar va Ularning Turlari (I qism)
Modellar muammoni va (uning yechimini) ifoda qilishda asosiy o'rin egallaydi. Modellar 3 ta asosiy kategoriyaga bo'linadi: Ma'lumot Tashuvchilar, Amaliyot Bajaruvchilar va Sozlamalar Tashuvchilar.
Ma'lumot Tashuvchilar
Ma'lumot tashuvchilarning asosiy vazifasi sistemaning turli nuqtalariga ma'lumotni yetkazib turish. Ular tashuvchi ma'lumotining turiga qarab farqlanishi mumkin. Ba'zi ma'lumot tashuvchilar murakkab sistemani namoyish qilish uchun boshqa modellarni ham o'zida saqlashi mumkin. Boshqalari esa asl ma'lumot tashuvchilarga ko'rsatgichlar (kalitlar)nigina saqlashi mumkin.
Ma'lumot tashuvchi modellar uzviy bog'liq (relatsional - SQL strukturasiga asoslangan) ma'lumotlar ombori holatida 3 ga bo'lish mumkin. Shu yosinda muhandislik, loyihalashtirish va ishlab chiqish jarayonlarida qilinishi kerak bo'lgan vazifalarni afzalligi bo'yicha ketma-ketligini aniqlashtirishimiz mumkin. Misol uchun, asosiy model chetda qolib, 2-darajadagi/yordam beruvchi modellarni yarata olmaymiz. Keling har bir ma'lumot tashuvchi model turi haqida batafsil gaplashib o'tsak.
Asosiy Modellar
Asosiy modellar har bir sistemaning ustunidir. Hech qanday sistemani asosiy modellarni aniqlashtirmasdan va qoralama qilmasdan loyihalash va ishlab chiqish bosqichiga o'tib bo'lmaydi. Misol uchun, maktab ishlarini boshqarish sistemasini tuzayotgan bo'lsak, O'quvchi (Talaba) yoki Fan kabi modellar asosiy model hisoblanadi.
Asosiy modellar (relatsional - SQL ga asoslangan sxemada) boshqa mavjud modellarga bog'liq bo'lmaydi. Boshqa modellardan mustaqil bo'lgani uchun ular asosiy model deb ataladi. Yanada soddaroq tushuntiradigan bo'lsam, maktab sistemasida Talaba modeli O'qituvchi modeliga bog'liq bo'lmagan holda ishlaydi. Bu majburiy bo'lmagan bog'liqlik deyiladi.
Lekin asosiy modellar ham mantiqan boshqa modellarga bog'liq bo'lishi mumkin. Misol uchun, Talaba modeli O'qituvchi modeliga mantiqan bog'liq, chunki O'qituvchisiz talaba bo'lishi mumkin emas. Bundan tashqari, Talaba modeli o'zining va uning yonidagi servislarga g'oyaviy bog'liq bo'lishi mumkin. Misol uchun, biznes g'oyani amalga oshirish uchun talaba modeli xabar berish modeli bilan birga ishlashi kerak bo'lishi mumkin. Ya'ni har qanday talaba xabarlar orqali vazifalar, darslar va tadbirlar haqida ushbu bo'limdan foydalanadi.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Modellar muammoni va (uning yechimini) ifoda qilishda asosiy o'rin egallaydi. Modellar 3 ta asosiy kategoriyaga bo'linadi: Ma'lumot Tashuvchilar, Amaliyot Bajaruvchilar va Sozlamalar Tashuvchilar.
Ma'lumot Tashuvchilar
Ma'lumot tashuvchilarning asosiy vazifasi sistemaning turli nuqtalariga ma'lumotni yetkazib turish. Ular tashuvchi ma'lumotining turiga qarab farqlanishi mumkin. Ba'zi ma'lumot tashuvchilar murakkab sistemani namoyish qilish uchun boshqa modellarni ham o'zida saqlashi mumkin. Boshqalari esa asl ma'lumot tashuvchilarga ko'rsatgichlar (kalitlar)nigina saqlashi mumkin.
Ma'lumot tashuvchi modellar uzviy bog'liq (relatsional - SQL strukturasiga asoslangan) ma'lumotlar ombori holatida 3 ga bo'lish mumkin. Shu yosinda muhandislik, loyihalashtirish va ishlab chiqish jarayonlarida qilinishi kerak bo'lgan vazifalarni afzalligi bo'yicha ketma-ketligini aniqlashtirishimiz mumkin. Misol uchun, asosiy model chetda qolib, 2-darajadagi/yordam beruvchi modellarni yarata olmaymiz. Keling har bir ma'lumot tashuvchi model turi haqida batafsil gaplashib o'tsak.
Asosiy Modellar
Asosiy modellar har bir sistemaning ustunidir. Hech qanday sistemani asosiy modellarni aniqlashtirmasdan va qoralama qilmasdan loyihalash va ishlab chiqish bosqichiga o'tib bo'lmaydi. Misol uchun, maktab ishlarini boshqarish sistemasini tuzayotgan bo'lsak, O'quvchi (Talaba) yoki Fan kabi modellar asosiy model hisoblanadi.
Asosiy modellar (relatsional - SQL ga asoslangan sxemada) boshqa mavjud modellarga bog'liq bo'lmaydi. Boshqa modellardan mustaqil bo'lgani uchun ular asosiy model deb ataladi. Yanada soddaroq tushuntiradigan bo'lsam, maktab sistemasida Talaba modeli O'qituvchi modeliga bog'liq bo'lmagan holda ishlaydi. Bu majburiy bo'lmagan bog'liqlik deyiladi.
Lekin asosiy modellar ham mantiqan boshqa modellarga bog'liq bo'lishi mumkin. Misol uchun, Talaba modeli O'qituvchi modeliga mantiqan bog'liq, chunki O'qituvchisiz talaba bo'lishi mumkin emas. Bundan tashqari, Talaba modeli o'zining va uning yonidagi servislarga g'oyaviy bog'liq bo'lishi mumkin. Misol uchun, biznes g'oyani amalga oshirish uchun talaba modeli xabar berish modeli bilan birga ishlashi kerak bo'lishi mumkin. Ya'ni har qanday talaba xabarlar orqali vazifalar, darslar va tadbirlar haqida ushbu bo'limdan foydalanadi.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (II qism)
Ma'lumot Tashuvchi:
* Asosiy Modellar
* Ikkinchi Darajali Modellar.
Ikkinchi darajali modellar asosiy modellarga bog'liq bo'ladi. Uzviy bog'liq (relatsional - SQL strukturasiga asoslangan) ma'lumotlar omborida, ular odatda umumiy sxemada boshqa modelga kalit orqali bog'lanadi. Lekin, hattoki, uzviy bog'liq bo'lmagan (relatsional bo'lmagan - SQL ga asoslanmagan) ma'lumot saqlash sistemalarida ham ikkinchi darajali modellar ma'lum model ichidagi model yoki majburiy bo'lmagan kalit orqali ulangan model ko'rinishida bo'lishi mumkin.
Keling ba'zi misollar keltirib o'tamiz. Ijtimoiy tarmoq platformasida
Yuqoridagi misolga ko'ra, ikkinchi darajali model (
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Ma'lumot Tashuvchi:
* Asosiy Modellar
* Ikkinchi Darajali Modellar.
Ikkinchi darajali modellar asosiy modellarga bog'liq bo'ladi. Uzviy bog'liq (relatsional - SQL strukturasiga asoslangan) ma'lumotlar omborida, ular odatda umumiy sxemada boshqa modelga kalit orqali bog'lanadi. Lekin, hattoki, uzviy bog'liq bo'lmagan (relatsional bo'lmagan - SQL ga asoslanmagan) ma'lumot saqlash sistemalarida ham ikkinchi darajali modellar ma'lum model ichidagi model yoki majburiy bo'lmagan kalit orqali ulangan model ko'rinishida bo'lishi mumkin.
Keling ba'zi misollar keltirib o'tamiz. Ijtimoiy tarmoq platformasida
Sharh
modelini Post
modelisiz tasavvur qilib bo'lmaydi. Mavjud bo'lmagan narsa haqida sharh yozib qoldirolmaysiz. Uzviy bog'liq ma'lumotlar omborida, Sharh
modeli rasmdagidek ko'rinishda bo'lishi mumkin: Yuqoridagi misolga ko'ra, ikkinchi darajali model (
Sharh
) Post
modelidagi Id
kalitini o'zida saqlaydi. Uzviy bog'liq bo'lmagan (relatsional bo'lmagan) sistemalarda, ikkinchi darajali modellar ichki obyekt ko'rinishda ko'zga tashlanadi. {Ikkinchi darajali modellar umuman olganda ular yashayotgan, qo'shni bo'lgan yoki tashqi sistemalardagi modellar bilan mantiqiy va tasavvuriy bog'lanishlari bo'lishi mumkin. Lekin, ularning bunday bog'lanishga ega bo'lishlari ehtimoli Asosiy modellarga nisbatan juda past.
"id": "some-id",
"tarkib": "some post",
"sharhlar": [
{
"id": "comment-id",
"tarkib": "some comment"
}
]
}
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (III qism)
Ma'lumot Tashuvchi:
* Asosiy Modellar
* Ikkinchi Darajali Modellar
* Bog'lanish Modellar
Bog'lanish modellari ikki asosiy modellar bog'lovchisi hisoblanadi. Ularning asosiy vazifasi ikki model orasidagi murakkab tarkibli (many-to-many) munosabatni
ifodalaydi. Misol uchun, Talabaning bir nechta O'qituvchisi bo'lishi mumkin va O'qituvchining bir nechata Talabasi. Bu munosabatni ifoda etadigan alohida jadval yaratishimiz kerak.
Bog'lanish modellarida hech qanday ma'lumot saqlash ko'zda tutilmagan. Boshqa-boshqa modellarning kalitini saqlaydi va bu uning kaliti hisoblanadi. Bu birlashgan kalit ikki yoki undan ko'p tashqi kalitlardan tashkil topadi. Tapadagi misolga e'tiboringizni qarating.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Ma'lumot Tashuvchi:
* Asosiy Modellar
* Ikkinchi Darajali Modellar
* Bog'lanish Modellar
Bog'lanish modellari ikki asosiy modellar bog'lovchisi hisoblanadi. Ularning asosiy vazifasi ikki model orasidagi murakkab tarkibli (many-to-many) munosabatni
ifodalaydi. Misol uchun, Talabaning bir nechta O'qituvchisi bo'lishi mumkin va O'qituvchining bir nechata Talabasi. Bu munosabatni ifoda etadigan alohida jadval yaratishimiz kerak.
Bog'lanish modellarida hech qanday ma'lumot saqlash ko'zda tutilmagan. Boshqa-boshqa modellarning kalitini saqlaydi va bu uning kaliti hisoblanadi. Bu birlashgan kalit ikki yoki undan ko'p tashqi kalitlardan tashkil topadi. Tapadagi misolga e'tiboringizni qarating.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (IV qism)
Ma'lumot Tashuvchi:
* Asosiy Modellar
* Ikkinchi Darajali Modellar
* Bog'lanish Modellar
* Gibrid Modellar
Ham ma'lumot saqlab, ham boshqa jadval kalitlarini saqlaydigan modellar mavjud. Loyiha arxitekturasini sofligini saqlash va modellarning murakkabligini boshqarish uchun bunday modellardan uzoqda bo'lishni maslahat beraman. Lekin, ba'zan ma'lum biznes g'oyani amalga oshirish yoki aniq bir talabni qondirish uchun bundan boshqa chora qolmaydi. Bunday holatda, ikki mustaqil modelning munosabatidagi ba'zi ma'lumotlarni saqlashi uchun gibrid modellardan foydalanishimiz mumkin. Misol uchun, tepadagi rasmga e'tibor bering.
Gibrid modellar asosiy modellarning kalitlarini saqlash bilan birgalikda ikkinchi darajali modellarni o'z ichiga oladi. Ular uzviy bog'liqlik (relatsional) tabiatini alohida jadvalga chiqmay turib ifodalashadi. Uzviy bog'liq bo'lmagan ma'lumotlar omborida, kalit orqali bog'lanish talabi sxemaning chiziqli tabiati tufayli xatoliklarga olib kelmasligi mumkin.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Ma'lumot Tashuvchi:
* Asosiy Modellar
* Ikkinchi Darajali Modellar
* Bog'lanish Modellar
* Gibrid Modellar
Ham ma'lumot saqlab, ham boshqa jadval kalitlarini saqlaydigan modellar mavjud. Loyiha arxitekturasini sofligini saqlash va modellarning murakkabligini boshqarish uchun bunday modellardan uzoqda bo'lishni maslahat beraman. Lekin, ba'zan ma'lum biznes g'oyani amalga oshirish yoki aniq bir talabni qondirish uchun bundan boshqa chora qolmaydi. Bunday holatda, ikki mustaqil modelning munosabatidagi ba'zi ma'lumotlarni saqlashi uchun gibrid modellardan foydalanishimiz mumkin. Misol uchun, tepadagi rasmga e'tibor bering.
Gibrid modellar asosiy modellarning kalitlarini saqlash bilan birgalikda ikkinchi darajali modellarni o'z ichiga oladi. Ular uzviy bog'liqlik (relatsional) tabiatini alohida jadvalga chiqmay turib ifodalashadi. Uzviy bog'liq bo'lmagan ma'lumotlar omborida, kalit orqali bog'lanish talabi sxemaning chiziqli tabiati tufayli xatoliklarga olib kelmasligi mumkin.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (V qism)
1. Ma'lumot Tashuvchi
2. Ish Bajaruvchi (Amaliyot Modellari)
Amaliyot modellari har qanday dasturiy ta'minot sistemalarini simulyatsiya (harakatga keltirish) jarayonida asosiy o'rin egallaydi. Har qanday amamiyot qanchalik sodda yoki murakkab bo'lmasin, bu amaliyot muvaffaqiyatli simulyatsiya jarayoni ishga tushirilishi kerakligini taqazo qiladi. Ba'zi maktablarda talabalar ro'yxatdan o'tish jarayonini soddalashtirishga harakat qilyapmiz deb o'ylaylik. Ro'yxatga olish jarayoni kompyuter dasturiga talaba ma'lumotini kiritish jarayonini shakllantirishimiz kerak.
Amaliyot modellari maktab boshqaruv sistemasiga talabalarning ma'lumotini saqlash va kiritish uchun API/UI orqali butun jarayonni taqdim etish, ishlov berish va tashqi texnologiyada saqlashga imkon beradi.
Me'yor amaliyot modellariga katta e'tibor qaratgan chunki aynan ular biznes g'oya jihatdan har qanday sistemaning asosini tashkil qiladi. Dasturni ishlab chiqish va loyihalash davrida, aynan amaliyot modellari ko'plab manba va harakat talab qiladi. Ularni uch turga bo'lish mumkin: tashqi texnologiya bilan aloqa qiluvchi (integratsion), ishlov beruvchi va taqdim qiluvchi.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
1. Ma'lumot Tashuvchi
2. Ish Bajaruvchi (Amaliyot Modellari)
Amaliyot modellari har qanday dasturiy ta'minot sistemalarini simulyatsiya (harakatga keltirish) jarayonida asosiy o'rin egallaydi. Har qanday amamiyot qanchalik sodda yoki murakkab bo'lmasin, bu amaliyot muvaffaqiyatli simulyatsiya jarayoni ishga tushirilishi kerakligini taqazo qiladi. Ba'zi maktablarda talabalar ro'yxatdan o'tish jarayonini soddalashtirishga harakat qilyapmiz deb o'ylaylik. Ro'yxatga olish jarayoni kompyuter dasturiga talaba ma'lumotini kiritish jarayonini shakllantirishimiz kerak.
Amaliyot modellari maktab boshqaruv sistemasiga talabalarning ma'lumotini saqlash va kiritish uchun API/UI orqali butun jarayonni taqdim etish, ishlov berish va tashqi texnologiyada saqlashga imkon beradi.
Me'yor amaliyot modellariga katta e'tibor qaratgan chunki aynan ular biznes g'oya jihatdan har qanday sistemaning asosini tashkil qiladi. Dasturni ishlab chiqish va loyihalash davrida, aynan amaliyot modellari ko'plab manba va harakat talab qiladi. Ularni uch turga bo'lish mumkin: tashqi texnologiya bilan aloqa qiluvchi (integratsion), ishlov beruvchi va taqdim qiluvchi.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (VI qism)
Ish Bajaruvchi (Amaliyot Modellari)
* Tashqi Texnologiya bilan Bog'lanadigan Modellar (Integratsion yoki broker modeller)
Integratsion amaliyot modellarining asosiy vazifasi mavjud sistemani tashqi manbaalar bilan bog'lashdir. Bunga sistemaga notanish bo'lgan vaqt qiymatini mahalliylashtirish uchun ishlatiladigan vaqtni qaytaruvchi amaliyot modeli yoki tashqi API yoki ma'lumotlar ombori bilan bog'lanadigan modellarni misol qilb keltirishimiz mumkin.
Biz bu integratsion modellarni "brokerlar" (dallol) deb ataymiz. Ular amaliyot modellari va tashqi sistemalarni bog'lashga xizmat qiliadi. Quyidagi misolga e'tiboringizni qarating:
Boshqa amaliyot modellari kabi, ular ham hech qanday ma'lumot o'zi bilan tashimaydi, aksincha ichki va tashqariga taqdim qilinadigan metodlari uchun konstanta yoki ichki qiymatlardan foydalanadi.
Har qanday tashqi manba yoki sistema bilan aloqa qila oladigan brokerlar yaratish qoidalari va maslahatlar haqida kelgusi boblarimizda batafsil gaplashib o'tamiz.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Ish Bajaruvchi (Amaliyot Modellari)
* Tashqi Texnologiya bilan Bog'lanadigan Modellar (Integratsion yoki broker modeller)
Integratsion amaliyot modellarining asosiy vazifasi mavjud sistemani tashqi manbaalar bilan bog'lashdir. Bunga sistemaga notanish bo'lgan vaqt qiymatini mahalliylashtirish uchun ishlatiladigan vaqtni qaytaruvchi amaliyot modeli yoki tashqi API yoki ma'lumotlar ombori bilan bog'lanadigan modellarni misol qilb keltirishimiz mumkin.
Biz bu integratsion modellarni "brokerlar" (dallol) deb ataymiz. Ular amaliyot modellari va tashqi sistemalarni bog'lashga xizmat qiliadi. Quyidagi misolga e'tiboringizni qarating:
public partial class ApiBrokerTepada ko'rsatilgan integratsion model tashqi API ni chaqirish imkoniyatini beradi. Shu vaqtning o'zi amaliyot modellari tashqi API bilan bog'lanish uchun sozlamalardan xabardor bo'lishlari shart emas. Bu vazifani integratsion model o'z bo'yniga oladi.
{
public async ValueTask<Student> PostStudentAsync(Student student) =>
this.apiBroker.PostAsync<Student>(student, url);
}
Boshqa amaliyot modellari kabi, ular ham hech qanday ma'lumot o'zi bilan tashimaydi, aksincha ichki va tashqariga taqdim qilinadigan metodlari uchun konstanta yoki ichki qiymatlardan foydalanadi.
ApiBroker
model sifatida tashqi sistemalar bilan bog'lanish jarayonini namoyish qiladi. Har qanday tashqi manba yoki sistema bilan aloqa qila oladigan brokerlar yaratish qoidalari va maslahatlar haqida kelgusi boblarimizda batafsil gaplashib o'tamiz.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (VII qism)
Ish Bajaruvchi (Amaliyot Modellari)
* Tashqi Texnologiya bilan Bog'lanadigan Modellar (Integratsion yoki broker modellar)
* Ishlov Berish Modellari (Servislar)
Ishlov berish modellari barcha biznes-g'oyaga bog'liq simulyatsiya jarayonlarini egasidir. Talabani ro'yxatdan o'tkazish, yangi kutubxona obuna kartasini so'rovini yaratish yoki bir talaba ma'lumotlarini ma'lum mezonga asoslanib o'qish amaliyotlari bunga misol bo'lishi mumkin. Ishlov berish modellari quyidagi turlarga bo'linadi: sodda (asos), yuqori-mantiqli (ishlov beruvchi), yoki murakkab (boshqaruvchi).
Ishlov berish modellari odatda o'z-o'ziga (hisoblab servislari kabi), integratsion modellarga yoki bir-biriga bog'liq bo'lishi mumkin.
1-kod parchasida sodda (asos) servisiga misolni ko'rishingiz mumkin.
Yuqori-mantiqli (ishlov beruvchi) servis 2-kod parchasi kabi bo'ladi.
Murakkabroq (boshqaruvchi) servislar bir nechta yuqori-mantiqli (ishlov beruvchi) yoki sodda (asos) servislari orasida mantiqni boshqaradi. 3-kod parchasi e'tiboringizni qarating.
Odatda, amaliyot modellari ma'lumot tashuvchi modellar ustida bo'ladigan ishlov berish yoki simulyatsiya jarayorini ma'suldir. Ular ma'lumotni ushlab turish yoki holatini saqlab turish vazifasini bajarmaydi. Ko'p hollarda, amaliyot bajaruvchi modellar holatni saqlab qolmaydi. Aksincha, bu ishni loglash yoki loglar (dastur jurnalini yuritish) yoki kuzatish brokerlariga o'tkazib berishadi.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Ish Bajaruvchi (Amaliyot Modellari)
* Tashqi Texnologiya bilan Bog'lanadigan Modellar (Integratsion yoki broker modellar)
* Ishlov Berish Modellari (Servislar)
Ishlov berish modellari barcha biznes-g'oyaga bog'liq simulyatsiya jarayonlarini egasidir. Talabani ro'yxatdan o'tkazish, yangi kutubxona obuna kartasini so'rovini yaratish yoki bir talaba ma'lumotlarini ma'lum mezonga asoslanib o'qish amaliyotlari bunga misol bo'lishi mumkin. Ishlov berish modellari quyidagi turlarga bo'linadi: sodda (asos), yuqori-mantiqli (ishlov beruvchi), yoki murakkab (boshqaruvchi).
Ishlov berish modellari odatda o'z-o'ziga (hisoblab servislari kabi), integratsion modellarga yoki bir-biriga bog'liq bo'lishi mumkin.
1-kod parchasida sodda (asos) servisiga misolni ko'rishingiz mumkin.
Yuqori-mantiqli (ishlov beruvchi) servis 2-kod parchasi kabi bo'ladi.
Murakkabroq (boshqaruvchi) servislar bir nechta yuqori-mantiqli (ishlov beruvchi) yoki sodda (asos) servislari orasida mantiqni boshqaradi. 3-kod parchasi e'tiboringizni qarating.
Odatda, amaliyot modellari ma'lumot tashuvchi modellar ustida bo'ladigan ishlov berish yoki simulyatsiya jarayorini ma'suldir. Ular ma'lumotni ushlab turish yoki holatini saqlab turish vazifasini bajarmaydi. Ko'p hollarda, amaliyot bajaruvchi modellar holatni saqlab qolmaydi. Aksincha, bu ishni loglash yoki loglar (dastur jurnalini yuritish) yoki kuzatish brokerlariga o'tkazib berishadi.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (VIII qism)
Ish Bajaruvchi (Amaliyot Modellari)
* Tashqi Texnologiya bilan Bog'lanadigan Modellar (Integratsion yoki broker modellar)
* Ishlov Berish Modellari (Servislar)
* Taqdimot Modellar (Taqdim Etuvchilar)
Taqdimot modellari Inson-Kompyuter Muloqoti jarayoning barcha jihatlarini qamrab oladi. Ular RESTful API, SDK, Veb-Sahifa yoki terminal/qora oyna kabi kompyuter dasturlari ko'rinishida bo'lishi mumkin.
Taqdim etuvchi amaliyot modellari integratsion modellarga o'xshab, tashqi dunyo va sizning sistemangiz o'rtasida ko'priq vazifasini o'taydi. Ular sistemaning tashqi qavat tomonda turib, tashqaridan kelayotgan so'rovni qabul qilib unga mos keluvchi amaliyot modeliga uzatadi. Taqdim etuvchi modellar hech qachon integratsion modellar bilan to'g'ridan-to'gri aloqa qilmaydi yoki hech qanday sozlamarni o'zida saqlamaydi. Ular faqatgina konstruktor orqali ular bog'liq bo'lgan klasslarnigina qabul qilib olishi mumkin.
Taqdim etuvchi modellar ishlash jarayonida o'zining tiliga ega bo'lishi mumkin. Misol uchun, integratsion model TalabaJoylash (
Quyida taqdim etuvchi modelga misol ko'rishingiz mumkin:
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Ish Bajaruvchi (Amaliyot Modellari)
* Tashqi Texnologiya bilan Bog'lanadigan Modellar (Integratsion yoki broker modellar)
* Ishlov Berish Modellari (Servislar)
* Taqdimot Modellar (Taqdim Etuvchilar)
Taqdimot modellari Inson-Kompyuter Muloqoti jarayoning barcha jihatlarini qamrab oladi. Ular RESTful API, SDK, Veb-Sahifa yoki terminal/qora oyna kabi kompyuter dasturlari ko'rinishida bo'lishi mumkin.
Taqdim etuvchi amaliyot modellari integratsion modellarga o'xshab, tashqi dunyo va sizning sistemangiz o'rtasida ko'priq vazifasini o'taydi. Ular sistemaning tashqi qavat tomonda turib, tashqaridan kelayotgan so'rovni qabul qilib unga mos keluvchi amaliyot modeliga uzatadi. Taqdim etuvchi modellar hech qachon integratsion modellar bilan to'g'ridan-to'gri aloqa qilmaydi yoki hech qanday sozlamarni o'zida saqlamaydi. Ular faqatgina konstruktor orqali ular bog'liq bo'lgan klasslarnigina qabul qilib olishi mumkin.
Taqdim etuvchi modellar ishlash jarayonida o'zining tiliga ega bo'lishi mumkin. Misol uchun, integratsion model TalabaJoylash (
InsertStudent
) tilidan foydalansa, xuddi shu API imkoniyatini taqdim etuvchi model TalabaYuklash (PostStudent
) so'zlarini ishlatishi mumkin.Quyida taqdim etuvchi modelga misol ko'rishingiz mumkin:
public class StudentsControllerTepada ko'rsatilgan model talaba ma'lumotlarini maktab boshqarish sistemasida saqlash uchun API imkoniyatini RESTful aloqa protokoli orqali taqdim etadi. Taqdim etuvchi modellar haqida keyingi bo'limlarda batafsil gaplashib o'tamiz.
{
private readonly IStudentOrchestrationService studentOrchestrationService;
[HttpPost]
public async ValueTask<ActionResult<Student>> PostStudentAsync(Student student)
{
Student registeredStudent = await this.studentOrchestrationService
.RegisterStudentAsync(student);
return Ok(registeredStudent);
}
}
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
C# da Modellar va Ularning Turlari (IX qism)
Sozlama Modellari
Har qanday sistemada uchrashi mumkin bo'lgan modellarning eng oxirgi turi bu - sozlama modellari. Sistemaga kirish, uning bog'liq klasslarini ro'yxatdan o'tkazish yoki o'rtakash (midleveyr) ko'rinishida havolalarni taqdimot modelidagi u mos bo'lgan funksiyalarga to'g'rilash kabi vazifalarni o'z bo'yniga oladi.
Sozlama modellari odatda dasturni ishga tushirish jarayonining boshida - kiruvchi va chiquvchi so'rovlar, xotira keshlash, boshqarish va shu kabi ichki sistema amaliyotlarini tartibga soladi.
Sodda API loyihasida, quyidagicha modelga duch kelishingiz mumkin:
Tepadagi kod parchasiga binoan,
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Sozlama Modellari
Har qanday sistemada uchrashi mumkin bo'lgan modellarning eng oxirgi turi bu - sozlama modellari. Sistemaga kirish, uning bog'liq klasslarini ro'yxatdan o'tkazish yoki o'rtakash (midleveyr) ko'rinishida havolalarni taqdimot modelidagi u mos bo'lgan funksiyalarga to'g'rilash kabi vazifalarni o'z bo'yniga oladi.
Sozlama modellari odatda dasturni ishga tushirish jarayonining boshida - kiruvchi va chiquvchi so'rovlar, xotira keshlash, boshqarish va shu kabi ichki sistema amaliyotlarini tartibga soladi.
Sodda API loyihasida, quyidagicha modelga duch kelishingiz mumkin:
public class StartupAs you can see from the code snippet above, the configuration model Startup offers capabilities to handle dependency injection-based registration of contracts to their concrete implementations. They may handle adding security or setting up a middleware pipeline. Configuration models are technology-specific. They may differ from a Play framework in Scala to a Spring or Flex in Python or Java. We will outline high-level rules according to The Standard for configuration models, but we will not dive deeper into the details of implementing any of them.
{
public void ConfigureServices(IServices services)
{
services.AddTransient<IStorageBroker, StorageBroker>();
services.AddOAuth();
}
}
Tepadagi kod parchasiga binoan,
Startup
deb nomlanuvchi sozlama modeli klasslarning shartnomasini ularning ijrosi bilan bog'lash imkoniyatini taqdim qiladi. Sozlama modellar ma'lum texnologiyaga bog'liq bo'ladi. Ular Play
nomlanuvchi Scala
tilining freymvorkida boshqacha yoki Python
yoki Java
dagi Flex
yoki `Spring`larda butunlay boshqacha bo'lishi mumkin.(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Simulyatsiya
Loyihalar yaratishda, simulyatsiya jarayoni modellarga va ular bilan bog'liq amaliyotlarni ko'rsata olish qobiliyatidir. Oziq-ovqat do'koni misolida, mahsulotni sotish amaliyoti simulyatsiya bo'ladi. Ya'ni, sotish o'z ichida qolgan mahsulatlardan sotilgan mahsulotlar sonini ayirish, shuningdek qolgan mahsulotlarni qiymatiga qarab saralash ishlarini o'z ichiga oladi.
Simulyatsiya jarayonini modellar orasidagi munosabat ko'rinishida tasvirlashimiz mumkin, ular dasturlashda funksiya, metod yoki "harakat yo'llari" kabi so'zlar bilan ifodalanishi mumkin, lekin bir xil ma'no anglatadi. Mahsulotlar savdosiga mas'ul service yozganimizda, simulyatsiya jarayoni quyidagicha bo'lar edi:
Obyekt aloqasi, umuman olib qaraganda, uch xil holatda kuzatilishi mumkin. Bir model boshqa model ustida amal olib borishi. Misol uchun, SavdoServisi (SellServis) sotish (Sell) amalini mahsulot ustida olib boryapti. Bu bir modelning ikkinchi model ustida amaliyot bajarishiga misol bo'ladi. Xuddi shu misolda, mahsulot (item) nuqata-i nazaridan qaralsa tashqi model uning ustida amaliyot bajaryapti. Va niyohat, kerak bo'lmaganda o'z-o'zini yo'q qila olish ham simulyatsiyaning eng oxirgi bosqichi.
Loyihalar yaratishning eng oxirgi bosqichi bu simulyatisya jarayonidir. Dasturlash sanoatida loyihalarni modellashtirish va simulyatsiya qilish jarayonlari haqida batafsil brokerlar, servislar va taqdim etuvchilar haqida gaplashganimizda chuqurroq to'xtalib o'tamiz.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
P.S. Bugungi tarjimani ko'rib takliflaringizni yozib qoldirish uchun bu havola ustiga bosing.
Telegram | YouTube | Linkedin
Loyihalar yaratishda, simulyatsiya jarayoni modellarga va ular bilan bog'liq amaliyotlarni ko'rsata olish qobiliyatidir. Oziq-ovqat do'koni misolida, mahsulotni sotish amaliyoti simulyatsiya bo'ladi. Ya'ni, sotish o'z ichida qolgan mahsulatlardan sotilgan mahsulotlar sonini ayirish, shuningdek qolgan mahsulotlarni qiymatiga qarab saralash ishlarini o'z ichiga oladi.
Simulyatsiya jarayonini modellar orasidagi munosabat ko'rinishida tasvirlashimiz mumkin, ular dasturlashda funksiya, metod yoki "harakat yo'llari" kabi so'zlar bilan ifodalanishi mumkin, lekin bir xil ma'no anglatadi. Mahsulotlar savdosiga mas'ul service yozganimizda, simulyatsiya jarayoni quyidagicha bo'lar edi:
public class SaleServiceYoqorida ko'rsatilgan misolda, mahsulot (item) ustida hatimizdagi sotuv amaliyotini namoyish qiluvchi SaleService (SavdoServis)ni ko'rishingiz mumkin. Aynan shu tarzda har qanday amaliyotni obyektga yo'naltirilgan dasturlash yordamida ifodalaysiz. Hammasi obyektdir (model mahsuli) va ular bir-biri bilan aloqa qiladi.
{
public void Sell(Item item) => Items.Remove(item);
}
Obyekt aloqasi, umuman olib qaraganda, uch xil holatda kuzatilishi mumkin. Bir model boshqa model ustida amal olib borishi. Misol uchun, SavdoServisi (SellServis) sotish (Sell) amalini mahsulot ustida olib boryapti. Bu bir modelning ikkinchi model ustida amaliyot bajarishiga misol bo'ladi. Xuddi shu misolda, mahsulot (item) nuqata-i nazaridan qaralsa tashqi model uning ustida amaliyot bajaryapti. Va niyohat, kerak bo'lmaganda o'z-o'zini yo'q qila olish ham simulyatsiyaning eng oxirgi bosqichi.
Loyihalar yaratishning eng oxirgi bosqichi bu simulyatisya jarayonidir. Dasturlash sanoatida loyihalarni modellashtirish va simulyatsiya qilish jarayonlari haqida batafsil brokerlar, servislar va taqdim etuvchilar haqida gaplashganimizda chuqurroq to'xtalib o'tamiz.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
P.S. Bugungi tarjimani ko'rib takliflaringizni yozib qoldirish uchun bu havola ustiga bosing.
Telegram | YouTube | Linkedin
Inson Ustuvorligi
Endilikda "Me'yor" tamoyillarini o'rganamiz. Ushbu tamoyillar me'yorga mos keladigan tizimning barcha komponentlariga taalluqlidir, xoh ushbu komponentlar brokerlar, xizmatlar yoki taqdim etuvchilar bo'lsin.
Birinchi tamoyil bu - inson ustuvorligi.
Ushbu tamoyilning asosiy g'oyasi odamlarni hisobga olgan holda me'yorga mos keladigan tizimlarni qurish va loyihalashdir. Nafaqat tizimdan foydalanmoqchi bo'lganlar, balki uni saqlab qoladigan va rivojlantiradigan odamlarni ham hisobga olgan holda me'yorga mos keladigan tizimlarni qurish va loyihalashdir.
Tizim "Inson Ustuvorligi" tamoyiliga amal qilishi uchun u murakkablikdan ko'ra oddiylikni hurmat qilishi kerak. Oddiylik qayta yozish imkoniyatini beradi. Bu monolit (yakka-asosli) sistemalarni umumiy andazasida haqiqiy bo'laklana olish xususiyati berish uchun xayolan mayda parchalarga bo'lib loyihalashni taqazo qiladi.
Shuningdek, "Me'yor" murakkab muhandislik tushunchalari ko'pchilik dasturchilar tomonidan hazm qila olinishilikni ta'minlaydi. Sanoatdagi yangi muhandislar ertangi kunning yetakchilaridir. Agar ular biron bir tizimga kerakli vaqtda ishonishmasa, ular oxir-oqibat taslim bo'lishadi va uni qayta-qayta yozadilar.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Endilikda "Me'yor" tamoyillarini o'rganamiz. Ushbu tamoyillar me'yorga mos keladigan tizimning barcha komponentlariga taalluqlidir, xoh ushbu komponentlar brokerlar, xizmatlar yoki taqdim etuvchilar bo'lsin.
Birinchi tamoyil bu - inson ustuvorligi.
Ushbu tamoyilning asosiy g'oyasi odamlarni hisobga olgan holda me'yorga mos keladigan tizimlarni qurish va loyihalashdir. Nafaqat tizimdan foydalanmoqchi bo'lganlar, balki uni saqlab qoladigan va rivojlantiradigan odamlarni ham hisobga olgan holda me'yorga mos keladigan tizimlarni qurish va loyihalashdir.
Tizim "Inson Ustuvorligi" tamoyiliga amal qilishi uchun u murakkablikdan ko'ra oddiylikni hurmat qilishi kerak. Oddiylik qayta yozish imkoniyatini beradi. Bu monolit (yakka-asosli) sistemalarni umumiy andazasida haqiqiy bo'laklana olish xususiyati berish uchun xayolan mayda parchalarga bo'lib loyihalashni taqazo qiladi.
Shuningdek, "Me'yor" murakkab muhandislik tushunchalari ko'pchilik dasturchilar tomonidan hazm qila olinishilikni ta'minlaydi. Sanoatdagi yangi muhandislar ertangi kunning yetakchilaridir. Agar ular biron bir tizimga kerakli vaqtda ishonishmasa, ular oxir-oqibat taslim bo'lishadi va uni qayta-qayta yozadilar.
(c) Hassan Habib, Me'yor Kitobidan tarjima
#meyor #csharp
Telegram | YouTube | Linkedin
Broker nima?
Brokerlar biznes g'oyasi (mantig'i) va tashqi dunyo o'rtasidagi dalloldir. Ular ixtiyoriy bir manba yoki tashqi kutubxonaga bog'lanib qolishni oldini olgan holda mahalliy interfeysni qoniqtirib tashqi kutubxonalar, manbalar, xizmatlar va "API"lar o'rab oladi. Interfeyslar biznes talablarini o'zida saqlaydi.
Brokerlar, umuman olib qaraganda, bir martalik va almashinuvchan texnologiya. Ular doimiy rivojlanadi va o'zgaradi degan tushuncha asosida yaratilgan. Shuning uchun, dastur hayotining ma'lum bir nuqtasiga kelib, ular ishni tezroq bajaradigan zamonaviy texnologiyaga o'zgaritiriladi.
Shuningdek, brokerlar sizning biznes dasturingiz maqsadiga tashqi manbaga bog'lanib qolmagan holda ulanuvchanligini ta'minlaydi.
Misol uchun, siz API loyihasi tuzyapsiz va ushbu loyiha SQL ma'lumotlar bazasidan ma'lumotni o'qiydi va kiritadi. Ma'lum vaqt kelib, siz yaxshiroq, arzonroq variantni tanladingizda, NoSQL dan API loyihangiz uchun ishlatishni boshlamoqchisiz. SQL ga bog'liqlikni ajratib turuvchi broker qavati bo'lishi, NoSQL ga o'tish jarayonini juda oson va tez bo'lishini ta'minlaydi.
(c) Hassan Habib, Me'yor kitobi - Diyorjon tarjima qildilar
#meyor #csharp
Telegram | YouTube | Linkedin
Brokerlar biznes g'oyasi (mantig'i) va tashqi dunyo o'rtasidagi dalloldir. Ular ixtiyoriy bir manba yoki tashqi kutubxonaga bog'lanib qolishni oldini olgan holda mahalliy interfeysni qoniqtirib tashqi kutubxonalar, manbalar, xizmatlar va "API"lar o'rab oladi. Interfeyslar biznes talablarini o'zida saqlaydi.
Brokerlar, umuman olib qaraganda, bir martalik va almashinuvchan texnologiya. Ular doimiy rivojlanadi va o'zgaradi degan tushuncha asosida yaratilgan. Shuning uchun, dastur hayotining ma'lum bir nuqtasiga kelib, ular ishni tezroq bajaradigan zamonaviy texnologiyaga o'zgaritiriladi.
Shuningdek, brokerlar sizning biznes dasturingiz maqsadiga tashqi manbaga bog'lanib qolmagan holda ulanuvchanligini ta'minlaydi.
Misol uchun, siz API loyihasi tuzyapsiz va ushbu loyiha SQL ma'lumotlar bazasidan ma'lumotni o'qiydi va kiritadi. Ma'lum vaqt kelib, siz yaxshiroq, arzonroq variantni tanladingizda, NoSQL dan API loyihangiz uchun ishlatishni boshlamoqchisiz. SQL ga bog'liqlikni ajratib turuvchi broker qavati bo'lishi, NoSQL ga o'tish jarayonini juda oson va tez bo'lishini ta'minlaydi.
(c) Hassan Habib, Me'yor kitobi - Diyorjon tarjima qildilar
#meyor #csharp
Telegram | YouTube | Linkedin
Brokerlar Tasvirda
Ixtiyoriy dasturda, xoh u mobil, kompyuter, veb-ilova bo'lsin, xoh sodda bir API loyihasi bo'lsin, brokerlar bu dasturning "dumi"da joylashadi, chunki ular biz yozgan kod va tashqi dunyo o'rtasidagi aloqaning oxirgi nuqtasidir.
Aytib o'tilgan tashqi dunyo xoh sodda ma'lumotlar ba'zasi bo'lsin, yoki API loyihasi ortida turuvchi mustaqil bir sistema bo'lsin, bularning barchasi Brokerlarning ortida bo'lishi kerak har qanday dasturda.
Yuqorida berilgan tasvirda ixtiyoriy bir APIning sodda arxitekturasini ko'rishingiz mumkin - unda Brokerlar biznes g'oyasi va tashqi resurslar o'rtasida joylashlashgan.
(c) Hassan Habib, Me'yor kitobi - Diyorjon tarjima qildilar
#meyor #csharp
Telegram | YouTube | Linkedin
Ixtiyoriy dasturda, xoh u mobil, kompyuter, veb-ilova bo'lsin, xoh sodda bir API loyihasi bo'lsin, brokerlar bu dasturning "dumi"da joylashadi, chunki ular biz yozgan kod va tashqi dunyo o'rtasidagi aloqaning oxirgi nuqtasidir.
Aytib o'tilgan tashqi dunyo xoh sodda ma'lumotlar ba'zasi bo'lsin, yoki API loyihasi ortida turuvchi mustaqil bir sistema bo'lsin, bularning barchasi Brokerlarning ortida bo'lishi kerak har qanday dasturda.
Yuqorida berilgan tasvirda ixtiyoriy bir APIning sodda arxitekturasini ko'rishingiz mumkin - unda Brokerlar biznes g'oyasi va tashqi resurslar o'rtasida joylashlashgan.
(c) Hassan Habib, Me'yor kitobi - Diyorjon tarjima qildilar
#meyor #csharp
Telegram | YouTube | Linkedin
👍1
Learn .NET
.NET ni o'rganish uchun bitta mana shu vebsayt endi yetarli. Darslar, vazifa va mavzuga doir qo'shimcha resurslar hammasi bir joyda.
https://learn.net.uz
Bu siz uchun tayyorlagan resurslarimizning atigi 10%, loyiha sizlarga ma'qul kelganidan so'ng qolgan materiallarni ham qo'shib boramiz. O'ylaymanki, .NET o'rganuvchilari uchun juda manfaatli loyihani taqdim qilyapmiz.
P.S. Ushbu vebsaytni do'stlaringiz bilan ulashing!
#csharp
Telegram | YouTube | Linkedin
.NET ni o'rganish uchun bitta mana shu vebsayt endi yetarli. Darslar, vazifa va mavzuga doir qo'shimcha resurslar hammasi bir joyda.
https://learn.net.uz
Bu siz uchun tayyorlagan resurslarimizning atigi 10%, loyiha sizlarga ma'qul kelganidan so'ng qolgan materiallarni ham qo'shib boramiz. O'ylaymanki, .NET o'rganuvchilari uchun juda manfaatli loyihani taqdim qilyapmiz.
P.S. Ushbu vebsaytni do'stlaringiz bilan ulashing!
#csharp
Telegram | YouTube | Linkedin
👍46👎2
📦 C# da Boxing va Unboxing nima?
C# da boxing va unboxing — bu value type va reference type lar o‘rtasidagi aylantirishlar.
🔹 Boxing — bu int, double, bool kabi value type qiymatni object tipiga aylantirish.
🔹 Unboxing — bu object tipidagi qiymatni yana value type ga qaytarish.
🎯 Real hayotiy misol:
🧠 Nimaga kerak bo‘ladi?
Tasavvur qiling, sizda faqat object qabul qiladigan metod bor. Ammo siz unga int, double yoki bool yubormoqchisiz.
⚠️ Nima muhim?
- Boxing/unboxing sekin ishlaydi: chunki bu operatsiyalar qo‘shimcha xotira ishlatadi.
- Tez ishlaydigan kod yozmoqchi bo‘lsangiz, boxing dan qochganingiz yaxshi.
✅ Yaxshi amaliy yechim:
Agar siz object ishlatishga majbur bo‘lsangiz, genericlardan foydalaning:
🎓 Xulosa:
Boxing/unboxing — C# ning kuchli, lekin ehtiyotkorlik bilan ishlatilishi kerak bo‘lgan xususiyatlaridan biri. Ularni tushunsangiz, siz optimallashtirilgan va samarali kod yozishingiz mumkin!
@NodirxonCSharpDarslari
📌 #CSharp #DotNet #Boxing #Unboxing #Backend #OOP
C# da boxing va unboxing — bu value type va reference type lar o‘rtasidagi aylantirishlar.
🔹 Boxing — bu int, double, bool kabi value type qiymatni object tipiga aylantirish.
🔹 Unboxing — bu object tipidagi qiymatni yana value type ga qaytarish.
🎯 Real hayotiy misol:
int age = 25;
// 🔄 Boxing — int dan object ga
object boxedAge = age;
// 🔄 Unboxing — object dan yana int ga
int unboxedAge = (int)boxedAge;
Console.WriteLine(unboxedAge); // ➡️ 25
🧠 Nimaga kerak bo‘ladi?
Tasavvur qiling, sizda faqat object qabul qiladigan metod bor. Ammo siz unga int, double yoki bool yubormoqchisiz.
void Log(object data)
{
Console.WriteLine($"Data: {data}");
}
int score = 90;
Log(score); // ⚠️ Bu yerda avtomatik boxing bo'ladi
⚠️ Nima muhim?
- Boxing/unboxing sekin ishlaydi: chunki bu operatsiyalar qo‘shimcha xotira ishlatadi.
- Tez ishlaydigan kod yozmoqchi bo‘lsangiz, boxing dan qochganingiz yaxshi.
✅ Yaxshi amaliy yechim:
Agar siz object ishlatishga majbur bo‘lsangiz, genericlardan foydalaning:
void Print<T>(T value)
{
Console.WriteLine(value);
}
Print(100); // 🚀 No boxing
Print("Hi!"); // 🚀 No boxing
🎓 Xulosa:
Boxing/unboxing — C# ning kuchli, lekin ehtiyotkorlik bilan ishlatilishi kerak bo‘lgan xususiyatlaridan biri. Ularni tushunsangiz, siz optimallashtirilgan va samarali kod yozishingiz mumkin!
@NodirxonCSharpDarslari
📌 #CSharp #DotNet #Boxing #Unboxing #Backend #OOP
🔥8👍3🤩1