Kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi



Download 0,67 Mb.
Pdf ko'rish
bet5/5
Sana14.07.2021
Hajmi0,67 Mb.
#119265
1   2   3   4   5
Bog'liq
DUVP ON

public

 

class

 Department {  

 

3. 



    

private

 string departname;.......  

 

4. 


    

// Accessor.

  

 



5. 

    


public

 string GetDepartname() {  

 

6. 


        

return

 departname;  

 

7. 


    }  

 

8. 



    

// Mutator.

  

 

9. 



    

public

 

void

 SetDepartname(string a) {  

 

10. 



        departname = a;  

 

11. 



    }  

 

12. 



}  

 

Yuqoridagi usul singari biz ham shaxsiy ma'lumotlarni tashqi dunyodan himoya 



qila olamiz. Bu erda kerakli ma'lumotlarni tayinlash va olish uchun ikkita alohida 

usuldan foydalanamiz. 

1. 

public

 

static

 

int

 Main(string[] args) {  

 

2. 


    Department d = 

new

 Department();  

 

3. 


    d.SetDepartname(

"ELECTRONICS"

);  

 

4. 



    Console.WriteLine(

"The Department is :"

 + d.GetDepartname()

);  


 

5. 


    

return

 0;  


 

6. 


}  

 

Yuqoridagi misolda biz ob'ekt nomidan shaxsiy ma'lumotlarning nomiga kira 



olmaymiz. Ma'lumotlarni faqat shu ikkita usul yordamida boshqaramiz. 

XUSUSIYATDAN FOYDALANIShNI QO'LLASH 

Xususiyatlar bu C # bilan kiritilgan yangi til xususiyati. Ushbu xususiyatni faqat 

bir nechta til qo'llab-quvvatlaydi. C # dagi xususiyatlar sinfdagi maydonni o'qish va 

yozish orqali uni himoya qilishga yordam beradi. Birinchi usulning o'zi yaxshi, 

ammo kapsulani xususiyatlariga ko'ra ancha yumshoq bajarish mumkin. 

Endi bir misolni ko'rib chiqamiz. 

1. 

using system;  



 


2. 

public

 

class

 Department {  

 

3. 



    

private

 string departname;  

 

4. 


    

public

 string Departname {  

 

5. 


        get {  

 

6. 



            

return

 departname;  

 

7. 


        }  

 

8. 



        set {  

 

9. 



            departname = value;  

 

10. 



        }  

 

11. 



    }  

 

12. 



}  

 

13. 



public

 

class

 Departmentmain {  

 

14. 



    

public

 

static

 

int

 Main(string[] args) {  

 

15. 


        Department d = 

new

 Department();  

 

16. 


        d.departname = 

"Communication"

;  

 

17. 



        Console.WriteLine(

"The Department is :{0}"

, d.Departname)

;  


 

18. 


        

return

 0;  


 

19. 


    }  

 

20. 



}  

 

Yuqoridagi misoldan Encapsulation-ning xususiyatlaridan foydalangan holda 



foydalanilishini ko'rib chiqamiz. Mulkda ikkita kirish va sozlash mavjud. Get 

accessor ba'zi xususiyatlar maydonining qiymatini qaytaradi. O'rnatilgan ruxsat 

beruvchi ba'zi bir xususiyat maydonining qiymatini "qiymat" tarkibiga kiritadi. 

Xususiyatlar faqat o'qish uchun tayyorlanishi mumkin. Bu mulkni amalga oshirishda 

faqat get accessorga ega bo'lish orqali amalga oshiriladi. 

(FAQAT MULKNI O'QING) 

1. 

using system;   



2. 

public

 

class

 ReadDepartment {  

 



3. 

    


private

 string departname;  

 

4. 


    

public

 ReadDepartment(string avalue) {  

 

5. 


        departname = avalue;  

 

6. 



    }  

 

7. 



    

public

 string Departname {  

 

8. 


        get {  

 

9. 



            

return

 departname;  

 

10. 


        }  

 

11. 



    }  

 

12. 



}  

 

13. 



public

 

class

 ReadDepartmain {  

 

14. 



    

public

 

static

 

int

 Main(string[] args) {  

 

15. 


ReadDepartment d = 

new

 ReadDepartment(

"

COMPUTERSCIENCE



"

);

 



16. 

     Console.WriteLine(

"The Department is: {0}"

, d.Departname);  

 

17. 


        

return

 0;  


 

18. 


    }  

}   


Yuqoridagi misolda biz faqat o'qish uchun xususiyatni qanday amalga oshirishni 

ko'rib chiqamiz. ReadDepartment sinfida faqat get accessorini amalga oshiradigan 

Departname xususiyati mavjud. U o'rnatilgan aksessuarni qoldiradi. Ushbu maxsus 

sinf konstruktorga ega, u string parametrini qabul qiladi. ReadDepartmain sinfining 

Asosiy usuli d nomli yangi ob'ekt yaratadi. D ob'ektining instansiyasida mag'lubiyat 

parametrini qabul qiladigan ReadDepartment konstruktoridan foydalaniladi. 

Yuqoridagi dastur faqat o'qish uchun mo'ljallanganligi sababli, biz maydon nomini 

qiymatini o'rnatolmaymiz va biz faqat maydondan ma'lumotlarni o'qiymiz yoki 

qiymatini olamiz. Xususiyatlar faqat yozish uchun ham yaratilishi mumkin. Bunga 

mulkni amalga oshirishda faqat o'rnatilgan ruxsat beruvchi ega bo'lish orqali 

erishiladi.(FAQAT MULKNI YOZING) 

1. 


using system;  

 

2. 



public

 

class

 WriteDepartment {  

 



3. 

    


private

 string departname;  

 

4. 


    

public

 string Departname {  

 

5. 


        set {  

 

6. 



            departname = value;  

 

7. 



            Console.WriteLine(

"The Department is :{0}"

, departname)

;  


 

8. 


        }  

 

9. 



    }  

 

10. 



}  

 

11. 



public

 

class

 WriteDepartmain {  

 

12. 



    

public

 

static

 

int

 Main(string[] args) {  

 

13. 


        WriteDepartment d = 

new

 WriteDepartment();  

 

14. 


        d.departname = 

"COMPUTERSCIENCE"

;  

 

15. 



        

return

 0;  


 

16. 


    }  

 

17. 



}  

 

Yuqoridagi misolda biz faqat "Faqat yozish" xususiyatini qanday amalga 



oshirishni ko'rib chiqamiz. Hozir WriteDepartment sinfida faqat o'rnatilgan kiruvchi 

vositani amalga oshiradigan Departname xususiyati mavjud. Get accessorini 

qoldiradi. Belgilangan Accessor usuli biroz o'zgarib turadi, chunki u tayinlanganidan 

keyin nom nomining qiymatini nashr etadi.

 

           Meros olish:

 

 Merosxo'rlik OOPning asosiy xususiyatlaridan biri bo'lib, eskilariga asoslangan 

yangi ma'lumotlar tuzilmalarini yaratish uchun ishlatiladi. Keling, oddiy misolni 

ko'rib chiqaylik: Tasavvur qiling, biz hayvonot bog'ida hayvonlarni kuzatib boradigan 

ma'lumotlar bazasini yaratish uchun yollandik :) Bizning tizimda 

foydalanuvchilarning ikki turi bo'ladi: foydalanuvchilar va ma'murlar. 

Foydalanuvchilar hayvonlar haqida ma'lumotni tahrirlashga qodir bo'lgan oddiy 

hayvonot bog'i xodimlari bo'ladi, masalan. ularning vazni yoki qanotlari. Ma'mur 




hayvonlarga oid ma'lumotlarni o'zgartirishi va ma'lumotlar bazasidan hayvonlarni 

qo'shishi yoki o'chirishi mumkin. Ma'murlarda qo'shimcha maydon, telefon raqami 

bo'ladi, shuning uchun ular tizim ishlamay qolganda ular bilan bog'lanishlari 

mumkin. Ikkala sinfni ham to'liq belgilash ma'nosiz va chalkash bo'lar edi, chunki 

ularning umumiy sohalari va usullari ko'p. Ham foydalanuvchi, ham ma'mur ismlari, 

yoshi va kirish va chiqish imkoniyatiga ega bo'ladi. Bugun asosan tushunchalarni 

o'rganish haqida bo'lamiz, keyingi darsda to'liq ishlaydigan misolni dasturlashtiramiz 

(quyidagi kod shunchaki qoralama): 



class

 User 


    


private

 

string

 name; 

    


private

 

string

 password; 

    


private

 

int

 age; 

 

    



public

 

bool

 LogIn(

string

 password) 

    { 

        


// ...

 

    } 



 

    


public

 

bool

 LogOut() 

    { 


        

// ...


 

    } 


 

    


public

 

void

 SetWeight(Animal animal) 

    { 


        

// ...


 

    } 


 

    


// ...

 

 



Hozirgina biz sinfning umumiy sxemasini tuzdik, ammo ishonchim komilki, siz 

u haqida tushuncha berasiz. Meros nima ekanligini bilmasdan, biz Admin sinfimizni 

quyidagicha belgilab olamiz: 



class

 Admin 


    


private

 

string

 name; 

    


private

 

string

 password; 

    


private

 

int

 age; 

    


private

 

string

 telNumber; 

 

    



public

 

bool

 LogIn(

string

 password) 

    { 

        


// ...

 

    } 



 

    


public

 

bool

 LogOut() 



    { 

        


// ...

 

    } 



 

    


public

 

void

 SetWeight(Animal animal) 

    { 


        

// ...


 

    } 


 

    


public

 

void

 AddAnimal(Animal animal) 

    { 


 

    } 


 

    


public

 

void

 RemoveAnimal(Animal animal) 

    { 


 

    } 


 

    


// ...

 

 



Ushbu sinfda bizning kodimiz juda keraksiz ekanligini ko'rishimiz mumkin. 

Boshqa barcha o'zgarishlar ikkala sinfda ham o'z o'rnini egallashi kerak edi, bu kodni 

saqlashni juda qiyinlashtiradi. Endi biz meros yordamida administrator sinfini e'lon 

qilamiz. Biz Admin sinfini User sinfidan meros qilib olishga ruxsat beramiz. Biz 

maydonlarni va usullarni qayta e'lon qilishimiz shart emas, C # ularni avtomatik 

ravishda qo'shib qo'yadi: 

class

 Admin: User 

    


private

 

string

 telNumber; 

 

    



public

 

void

 AddAnimal(Animal animal) 

    { 


 

    } 


 

    


public

 

void

 RemoveAnimal(Animal animal) 

    { 


 

    } 


 

    


// ...

 



Biz meros uchun ":" operatoridan foydalanganligimizni ko'ramiz. 

Yuqoridagi misolda, shaxsiy maydonlar naslga kira olmaydi. Faqat ommaviy 

o'zgartiruvchiga ega bo'lgan maydonlar va usullar bo'ladi. Shaxsiy maydonlar va 

usullar ma'lum bir sinfga tegishli bo'lgan maxsus mantiq sifatida tushuniladi. Buning 

ma'nosi shundaki, ular avlodlardan yashiringan - hatto avlod ham ushbu mantiqdan 



foydalanmoqda, uni o'zgartira olmaydi. Istalgan natijaga erishish uchun biz xuddi 

shaxsiy kabi ishlaydigan, ammo ushbu maydonlarni meros qilib olishga imkon 

beradigan yangi kirish modifikatoridan foydalanamiz. 

Foydalanuvchi sinfining boshlanishi quyidagicha ko'rinadi:



 class

 User 


    


protected

 

string

 name; 

    


protected

 

string

 password; 

    


protected

 

int

 age; 

 

    



// ...

 

Endi biz foydalanuvchi va administrator misollarini yaratgan bo'lsak, ularning 



ikkalasida ham nom maydonlari va LogIn () usullari mavjud edi. C # foydalanuvchi 

sinfini egallaydi va barcha maydonlarini avtomatik ravishda qayta e'lon qiladi. 

Merosdan foydalanishning afzalliklari aniq. Biz bir xil maydonlarni ikkita sinfga 

nusxalashimiz shart emas. Biz qilishimiz kerak bo'lgan narsa - yangilarini e'lon qilish. 

Qolganlari meros qilib olinadi. Foyda juda katta, biz mavjud bo'lgan yangi 

usullarning tarkibiy qismlarini kengaytirib, ularni qayta ishlatishimiz mumkin. Biz 

juda ko'p ortiqcha kod yozishimiz shart emas, eng muhimi - ota-ona sinfidagi bitta 

maydonni o'zgartirganda, bu o'zgarish hamma joyda avtomatik ravishda meros qilib 

olinadi. 20 ta darsda xatolarni keltirib chiqarishi mumkin bo'lgan narsani qo'lda 

o'zgartirishimiz shart emas. Biz odamlarmiz va har doim ham xatolarga yo'l 

qo'yamiz, iloji boricha kamroq xato qilish uchun to'g'ri dasturlash usullarini 

tanlashimiz kerak. 

Ota-onalar sinfini ba'zan ota-bobo, bizning foydalanuvchi sinfimiz va undan 

meros qolgan sinf, avlod, Admin sinfimiz deb atashadi. Avlodlar yangi usullarni 

qo'shishi yoki ota-ona sinfining mavjud usullarini bekor qilishi mumkin (quyida 

keltirilgan misolga qarang). Ba'zan, asosan bir xil narsani anglatadigan superklass va 

subklass atamalariga duch kelishingiz mumkin. 



Ob'ekt modelini loyihalashtirishning yana bir usuli - yagona maqsadi meros 

bo'lib qoladigan User ota-sinfini yaratishdir. Keyinchalik foydalanuvchi Attendant va 

Admin sinflari tomonidan meros bo'lib olinadi. Agar bizda juda 

ko'p foydalanuvchi turlari bo'lsa, ushbu uslub foydali bo'ladi. 

Bunday holda, biz ushbu sinf kursi haqida gaplashamiz, bu haqda 

biz ushbu onlayn-kursda davom ettiramiz. Bizning misolimiz 

oddiy edi, shuning uchun ikkita dars etarli edi. Umumiy 

vaziyatlarda ishlatiladigan ob'ekt modellari o'rnatilgan va 

tasdiqlangan dizayn naqshlari ham mavjud. Bularning barchasi 

ilg'or va qiziqarli, va'da beraman, keyinroq ularga ham etib 

boramiz. Ob'ektlarni modellashtirishda biz merosni ota-sinfga 

yo'naltirilgan bo'sh o'q sifatida chizamiz. Bizning holatlarimizda 

grafik yozuv quyidagicha ko'rinadi: 

Polimorfizm 

Ushbu texnikaning noma'lum nomidan qo'rqmang, aslida bu juda oddiy. 

Polimorfizm bizga har xil turdagi ob'ektlar bilan ishlash uchun birlashtirilgan 

interfeysdan foydalanishga imkon beradi. Tasavvur qiling, bizda, masalan, geometrik 

shakllarni aks ettiruvchi ko'plab ob'ektlar (doiralar, kvadratlar, uchburchaklar va 

boshqalar). Agar ular boshqacha bo'lsa-da, ular bilan birlashtirilgan tarzda muloqot 

qilishimiz foydalidir. Rang maydoni va render () usulini o'z ichiga olgan 

GeometricShape sinfini yaratishimiz mumkin. Keyinchalik barcha geometrik shakllar 

ushbu sinfdan interfeysni meros qilib oladi. Endi siz shunday deb o'ylashingiz 

mumkin: "Ammo aylana va kvadrat buyum boshqacha ko'rinishda bo'ladi!". 

Polimorfizm har bir kichik sinfda render () usulini bekor qilishga imkon beradi

shunda u biz xohlagan narsani qiladi. Interfeys birlashtirilgan bo'ladi va biz turli xil 

ob'ektlarni ko'rsatish uchun qanday usulni chaqirish kerakligini o'ylamaymiz. 

Polimorfizm ko'pincha hayvonlar yordamida tushuntiriladi. Ularning barchasi 

interfeysida Speak () usuliga ega, ammo har bir hayvon uni turlicha bajaradi.        



 

 

                                          Xulosa: 



Enkapsulatsiya - bu ob'ektga yo'naltirilgan dasturlash bo'yicha birinchi qadam. 

Ushbu maqola sizga Enkapsülasyon haqida bir oz ma'lumot beradi. Aksessuar va 

mutator usullaridan foydalangan holda biz inkapsulyatsiya qilishimiz mumkin. 

Boshqa usullardan biri nomlangan xususiyatdan foydalanishdir. Xususiyatlarning 

foydasi shundaki, sizning ob'ektlaringiz foydalanuvchilari bitta nomlangan element 

yordamida ichki ma'lumotlar nuqtasini boshqarishi mumkin ekan. 



Download 0,67 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish