MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
URGANCH FILIALI
KOMPYUTER INJINIRINGI FAKULTЕTI
962-21 guruh
talabasi Vaisova Nodiraning
Dasturlash fanidan yozgan
Tоpshirdi:
_______________________________
Qabul qildi:
_______________________________
Urganch – 2022
Bazaviy sinf a'zolariga murojaatni boshqarish.
Sinf – bu maxsus turlar bo‗lib, o‗zida maydon, usullar va xossalarni mujassamlashtiradi.
Sinf murakkab struktura bo‗lib, ma‘lumotlar ta‘riflaridan tashqari, protsedura va funksiyalar
ta‘riflarini o‗z ichiga oladi. Sodda sinf ta‘rifiga misol: TPerson = class private fname: string[15];
faddress: string[35]; public procedure Show; end; Sinf ma‘lumotlari
maydonlar, protsedura va
funksiya usullarI deb ataladi. Keltirilgan misolda TPerson – sinf nomi, fname va faddress –
maydonlar nomlari, show – usul nomi. Maydon – bu sinfga birlashtirilgan ma‘lumotlardir.
Sinfga qarashli maydonlar oddiy yozuv maydoni kabi bo‗lib, ularning farqi har xil turda
bo‗lishidir. Masalan, Type TchildClass=Class Fore: Integer; Ftwo: String; Fthree: Tobject; End;
Maydonlarga murojaat qilish sinf xossalari va usullari yordamida amalga oshiriladi. Maydonga
murojaat qilish uchun oldin sinf nomi yozilib, keyin ajratuvchi nuqta qo‗yilib
maydon nomi
yoziladi. Masalan: Var MyObject: TchildClass;
Begin MyObject.Fone:=16; MyObject.Ftwo:=‗qator qiymati‘; End; Maydon nomi unga
mos xossa nomining birinchi harfi ―F‖ bo‗lishi bilan farqlanadi. Delphi da qabul qilingan
kelishuv bo‗yicha maydonlar nomlari f (field — maydon so‗zidan) harfidan boshlanishi lozim.
5.2. Usullar Sinfga birlashtirilgan protsedura va funksiyalarga usullar deyiladi. Masalan: Type
TchildClass=Class
Fore:
Integer;
Ftwo:
String;
Fthree:
Tobject;
Function
FirstFunc(x:Real):Real; Procedure SecondProc; End; Sinf usullari (sinf ta‘rifiga kiritilgan
protsedura va funksiyalar) sinf ob‘yektlari ustida amal bajaradi. Usul bajarilishi uchun ob‘yekt
nomi va nuqtadan so‗ng usul nomi ko‗rsatilishi lozim. Masalan: professor. Show;
Sinf usuli
ta‘riflanganda sinf nomi va usul nomi ko‗rsatiladi. Masalan: // TPerson sinfi Show usuli
procedure TPerson.Show; begin Write ( ‗Nom:‘ + fname + #13+ ‗Adres:‘ + faddress ); end;
Usul tanasida ob‘yekt maydonlariga murojaat qilinganda ob‘yekt nomi korsatilmaydi.
Usulga murojaat qilish dasturda uning nomini ko‗rsatish bilan bajariladi. Masalan:
Var
MyObject: TchildClass;
y: Real; Begin
. . . . . . . . . . . . . . .
MyObject. SecondProc;
y:=MyObject.FirstFunc(3.14);
End;
Usullar chaqirilganda chaqirgan ob‘yektga ilova uzatiladi. Bu ilovaga usul ichida self
so‗zi orqali murojaat qilish mumkin. procedure TPerson.Tproc(Fore:Integer); begin
self.Fore:=Fore; end; 5.3. Ob’yekt Ob‘yekt – bu sinfning real nusxasi bo‗lib, ma‘lumotlar va
funksiyalardan tashkil topadi. U dasturning var bo‗limida e‘lon qilinadi. Masalan: var student:
TPerson; professor: TPerson; Ob‘yekt – bu dinamik strukturadir. O‗zgaruvchi-ob‘yekt
ma‘lumotlarni emas, ob‘yekt ma‘lumotlariga ilovani o‗z ichiga oladi. Shuning uchun dasturchi
bu ma‘lumotlarga xotiradan joy ajratishni ko‗zda tutishi lozim. Joy ajratish sinf maxsus usuli –
konstruktor yordamida amalga oshiriladi. Bu usul odatda Create (yaratish) nomiga ega bo‗ladi.
Sinf ta‘rifida konstruktor uchun procedure so‗zi o‗rniga constructor so‗zi ishlatiladi.
Quyida
tarkibida konstruktor qatnashgan TPerson sinfi ta‘rifi keltirilgan:
TPerson = class private
fname: string [ 15 ];
faddress: string[35];
constructor Create; // konstruktor
public
procedure show; // usul
end;
Xotiradan joy ajratish konstruktor sinfga qo‗llash natijasini qiymat sifatida berish orqali
amalga oshiriladi. Misol uchun professor := TPerson.Create; instruksiyasi bajarilishi natijasida
professor ob‘yektiga xotiradan joy ajratiladi. Xotiradan joy ajratishdan tashqari konstruktor,
odatda ob‘yekt maydonlariga boshlang‗ich qiymatlar berish ya‘ni ob‘yekt initsializatsiyasi
vazifasini ham bajaradi. Quyida TPerson ob‘yekti uchun konstruktor misoli keltirilgan:
constructor TPerson.Create;
begin fname := ‗‗;
faddress := ‗‗;
end;
Ob‘yekt maydoniga murojaat qilish uchun ob‘yekt nomi va nuqtadan so‗ng
maydon
nomi ko‗rsatiladi. Masalan: professor.fname Ob‘yektga ajratilgan xotira qismini bo‗shatish
uchun maxsus usul destruktor free ishlatiladi. Masalan: professor.free;. Inkapsulyatsiya va
ob’yekt xossalari Inkapsulyatsiya deyilganda ob‘yekt maydonlariga to‗g‗ridan to‗g‗ri emas,
faqat sinf usullari orqali murojaat qilishga aytiladi. Ob‘yekt maydonlariga murojaat ob‘yekt
xossalari orqali amalga oshiriladi. Ob‘yekt xossasiga murojaat qilish uchun ikki usuldan
foydalaniladi. O‗qish uchun ishlatiladigan funksiya nomi
Get
bo’lib,
unga mos xossa nomi qo‗shilib yoziladi. Yozish uchun ishlatiladigan usul bitta parametrli Set
nomi qism dastur bo‗lib, uning nomiga ham mos xossa nomi qo‗shilib yoziladi. O‗qish va
yozish usullari va uning parametri ham bir xil xossaga ega bo‗lishi lozim. Xossani e‘lon qilish
uchun Property, Read va Write so‗zlari ishlatiladi. Read va Write usul nomlari bo‗lib, ular mos
ravishda o‗qish va yozish uchun mo‗ljallangan. Quyida ikkita Name va Address xossalarini o‗z
ichiga oluvchi TPerson sinfi ta‘rifi keltirilgan:
type
TName = string[15];
TAddress = string[35];
TPerson =
class private
FName: TName;
FAddress: TAddress;
Constructor Create(Name:Tname);
Procedure Show;
Function GetName: TName;
Function GetAddress: TAddress;
Procedure SetAddress(NewAddress:TAddress); public
Property Name: Tname read GetName;
Property Address: TAddress
read GetAddress
write SetAddress;
end;
Dasturda student ob‘yektining, Address xossasiga qiymat berishini quyidagicha yozish mumkin:
student.Address := ‗Toshkent, Yunusobod 21, kv.3‘; Tashqi tomondan dasturda xossalardan
foydalanish ob‘yekt maydonlaridan foydalanishdan farq qilmaydi. Lekin xossalar va ob‘yekt
xossalari orasida prinsipial farq bor: xossaga qiymat berish yoki xossa qiymatini o‗qishda
avtomatik ravishda biror vazifa bajaruvchi protsedura chaqiriladi. Dasturda xossa usullariga
qo‗shimcha vazifalar yuklash mumkin. Masalan usullar yordamida xossaga berilayotgan
qiymatlar to‗g‗riligini
tekshirish, yordamchi protseduralarni chaqirish. Ob‘yekt maydonlarini
xossa sifatida ta‘riflash maydonlarga murojaatni cheklashga imkon beradi: masalan, faqat
o‗qishga ruxsat berish mumkin. Buning uchun xossa ta‘rifida faqat o‗qish usulini ko‗rsatish
kerak. Yuqorida keltirilgan TPerson sinfi ta‘rifida Name xossasini faqat o‗qish mumkin,
Address — xossasi esa o‗qish va yozish uchun mo‗ljallangan. Yozuvdan himoyalangan xossa
qiymatini ob‘yekt initsializatsiyasida o‗rnatish mumkin. Quyida Tperson sinfi usullari
keltirilgan. Bu usullar TPerson sinfi ob‘yektini yaratish va xossalariga murojaatni ta‘minlaydi.
Constructor TPerson.Create(Name:TName);
begin
FName:=Name;
end;
Function TPerson.GetName;
begin
Result:=FName;
end;
function TPerson.GetAddress;
begin
Result:=FAddress; end;
Procedure TPerson.SetAddress(NewAddress:TAddress);
begin
if FAddress =’ ‘
then FAddress := NewAddress;
end;
Sinf ob‘yektini yaratish va xossa qiymatini o‗rnatishga misol:
student := TPerson.Create(‗Tolipov‘);
student.Address := ‗‗Toshkent, Yunusobod 21, kv.3‘;