1-Mavzu 1-Mavzu Reja: Klass a’zolariga ruxsatni boshqarish


Download 116.94 Kb.
bet32/100
Sana02.01.2022
Hajmi116.94 Kb.
#200801
1   ...   28   29   30   31   32   33   34   35   ...   100
Bog'liq
dasturiy injinering

}

}

class RetObj {

static void Main() {

Rect r1 = new Rect(4, 5);

Console.Write("Размеры прямоугольника r1: ");

r1.Show();

Console.WriteLine("Площадь прямоугольника rl: " + r1.AreaO);

Console.WriteLine ();

// r1 to'rtburchagidan ikki barobar katta to'rtburchak yaratish.

Rect r2 = r1.Enlarge(2);

Console.Write("Размеры прямоугольника r2: ");

r2.Show();

Console.WriteLine("Площадь прямоугольника r2: " + r2.Area());

}

}

Ushbu dasturni amalga oshirish quyidagi natijani beradi.

Размеры прямоугольника r1: 4 5

Площадь прямоугольника r1: 20

Размеры прямоугольника r2: 8 10

Площадь прямоугольника r2: 80

Metod ob'ektni qaytarmaguncha, ikkinchi unga aloqador bo`lgan ob`ektga ko`rsatgich mavjud bo`lib turadi. Shundan keyin u "axlat" sifatida yig'iladi. Natijada, ob'ekt faqat uni yaratgan metod tugaganligi sababli yo'q qilinmaydi.

Ob'ekt tipida ma'lumot qaytarishda qo`llaniladigan amaliy misollaridan biri- fabrika sinfi bo'lib, u o'z o`z sinfi ob'ektini qurish uchun mo'ljallangan metodiga ega. Ba'zi hollarda, sinf foydalanuvchilari uning konstruktoriga xavfsizlik yoki ob'ektni qurishdagi ba'zi tashqi omillar sabab kirishlarini xohlashmaydi. Bunday hollarda, fabrika sinf ob'ektlarini qurish uchun ishlatiladi. Keling, oddiy misolga qaraylik.

// Fabrika sinfidan foydalanish.

using System;

class MyClass {

int a, b; // sinfning yopiq a'zolari

// MyClass sinfi uchun fabrikani yaratish.

public MyClass Factory(int i, int j) {

MyClass t = new MyClass();

t.a = i;

t.b = j;

return t; // ob'ektni qaytarish

}

public void Show() {

Console.WriteLine("а и b: " + a + " " + b);

}

}

class MakeObjects {

static void Main() {

MyClass ob = new MyClass ();

int i, j;

// Sinfda fabrikani ishlatib, ob'ektlarni shakllantirish.

for(i=0, j=10; i < 10; i++, j--) {

MyClass anotherOb = ob.Factory(i, j); // ob`ekt yaratish

anotherOb.Show();

}

Console.WriteLine();

}

}

Bu kodning bajarilishi natijasi quyidagicha bo`ladi.

и b: 0 10

и b: 1 9

и b: 2 8

и b: 3 7

и b: 4 6

и b: 5 5

и b: 6 4

и b: 7 3

и b: 8 2

и b: 9 1

Keling, ushbu misolni batafsil ko'rib chiqaylik. Bu misolda, MyClass sinfining konstruktori belgilanmagan, shuning uchun jimlikdagi konstruktor chaqiriladi. Bu shuni anglatadikia va b o'zgaruvchilarining qiymatlari konstruktor yordamida o`rnatilmaydi. Lekin sinf fabrikasi Factory()da ob'ektlar yaratish mumkin va unda a va b o'zgaruvchilar qiymatlari belgilangan. Bundan tashqari, a va b o'zgaruvchilar yopiq bo`lganligi uchun ularning qiymatlari faqat sinf fabrikasining Factory() metodi yordamida berilishi mumkin. Main() metodi MyClass sinf ob'ektining nusxasini oladi va uning fabrika metodi yordamida uning o'nta boshqa ob'ektni yaratish uchun for operatoridan foydalanadi. Quyida ushbu ob'ektlar yaratilgan kod satri mavjud.

MyClass anotherOb = ob.Factory(i, j); // ob`ekt yaratish

Takrorlanish jarayonining har bir qadamida sinf fabrikasi tomonidan anotherOb ob'ektiga havola o'zgaruvchisi yaratiladi va u ob'ektga havola beradi. Iteratsiyaning har bir bosqichi tugagandan so'ng, anotherOb o'zgaruvchisi o`z harakat doirasidan chiqadi va u murojaat qilgan ob'ekt qayta ishlanadi.

Download 116.94 Kb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   ...   100




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