Algoritmik tillar va dasturlash. Ma’ruza mashg’ulotlari uchun o’quv qo’llanma. X. E. Xolmirzayev, M. N. Ikromova, M. M. Bahromova Annotatsiya



Yüklə 2,87 Mb.
səhifə54/56
tarix19.12.2023
ölçüsü2,87 Mb.
#184841
1   ...   48   49   50   51   52   53   54   55   56
O`quv qo`llanma11 (2)

13.2. Havola turlar.
Kompozit turlari. Endi qiymat turi va mos yozuvlar turi kompozit turlarni - struktura va sinfni ifodalovchi vaziyatni ko'rib chiqamiz:
State state1 = new State(); //State - struktura, uning ma'lumotlari stekga joylashtirilgan
Country country1 = new Country(); // Country - sinf, heapdagi manzilga havola stekga suriladi
// va heap ccountry1 ob'ektining barcha ma'lumotlarini o'z ichiga oladi
struct State
{
public int x;
public int y;
}
class Country
{
public int x;
public int y;
}
Bu yerda Main metodida xotira state1 obyekti uchun stekga ajratiladi. Keyinchalik, country1 (Country country1) ob'ekti uchun stekda havola yaratiladi va konstruktorni new kalit so'zi bilan chaqirish orqali heap (new Country()) da bo'sh joy ajratiladi. country1 ob'ekti uchun stekdagi ma'lumotnoma ushbu ob'ekt joylashgan heapdagi joylashuv manzilini ko'rsatadi.

13.3-rasm.
Shunday qilib, stek state1 strukturasining barcha maydonlarini va heapdagi country1 ob'ektiga havolani o'z ichiga oladi.
Ammo, State strukturasida Country mos yozuvlar tipidagi o'zgaruvchi ham aniqlangan. Agar u qiymat turida aniqlangan bo'lsa, u o'z qiymatini qayerda saqlaydi?
State state1 = new State();
Country country1 = new Country();
struct State
{
public int x;
public int y;
public Country country = new();
}
class Country
{
public int x;
public int y;
}
state1.country o‘zgaruvchisining qiymati heapda saqlanadi, chunki bu o‘zgaruvchi mos yozuvlar turini ifodalaydi:

13.4-rasm.
Qiymatlarni nusxalash. Qiymatlarni nusxalashda ma'lumotlar turini hisobga olish kerak. Qiymat turidagi ob'ektga ma'lumotlarni tayinlaganingizda, u ma'lumotlarning nusxasini oladi. Ma'lumotni mos yozuvlar turidagi ob'ektga tayinlashda u ob'ektning nusxasini emas, balki heapda ushbu ob'ektga havolani oladi. Masalan:
State state1 = new State(); // State strukturasi
State state2 = new State();
state2.x = 1;
state2.y = 2;
state1 = state2;
state2.x = 5; // state1.x = 1 harakatsiz
Console.WriteLine(state1.x); // 1
Console.WriteLine(state2.x); // 5
Country country1 = new Country(); // Country sinfi
Country country2 = new Country();
country2.x = 1;
country2.y = 4;
country1 = country2;
country2.x = 7; // bu yerda country1.x = 7, chunki country1 va country2 ikkala havola ham heapdagi bir xil ob'ektga ishora qiladi.
Console.WriteLine(country1.x); // 7
Console.WriteLine(country2.x); // 7

state1 struktura bo'lgani uchun siz state1 = state2 ni tayinlaganingizda, u state2 strukturasining nusxasini oladi. Va country1 sinfining ob'ekti country1=country2 tayinlanganda; country2 tomonidan ko'rsatilgan bir xil ob'ektga havola oladi. Shuning uchun, country2 o'zgarganda, country1 ham o'zgaradi.



Yüklə 2,87 Mb.

Dostları ilə paylaş:
1   ...   48   49   50   51   52   53   54   55   56




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin