1-amaliy ish. Abstrakt sinflar yaratish va ishlatish. Oddiy darslarga qo'shimcha ravishda C# ning mavhum sinflari


Download 25.88 Kb.
bet1/4
Sana21.09.2023
Hajmi25.88 Kb.
#1683325
  1   2   3   4

1-amaliy ish.Abstrakt sinflar yaratish va ishlatish.
Oddiy darslarga qo'shimcha ravishda C# ning mavhum sinflari mavjud . Ular nima uchun kerak? Sinflar odatda qandaydir ob'ekt yoki ob'ekt uchun qandaydir rejani ifodalaydi. Masalan, biz avtomobillarni ifodalash uchun Car sinfini yoki odamlarni ifodalash uchun Person sinfini ushbu sinflarga ushbu ob'ektlarni tavsiflovchi tegishli xususiyatlar, maydonlar va usullarni joylashtirish orqali belgilashimiz mumkin. Biroq, biz dasturlash tilidan foydalangan holda ifodalamoqchi bo'lgan ba'zi ob'ektlar o'ziga xos dasturga ega bo'lmasligi mumkin. Masalan, aslida bunday geometrik shakl yo'q. Doira, to'rtburchak, kvadrat bor, lekin oddiygina raqam yo'q. Biroq, aylana ham, to'rtburchak ham umumiy narsaga ega va ular raqamlardir. Va aniq amalga oshirishga ega bo'lmagan bunday ob'ektlarni tavsiflash uchun mavhum sinflar mo'ljallangan.
Abstrakt sinf oddiy sinfga o'xshaydi. Bundan tashqari, o'zgaruvchilar, usullar, konstruktorlar, xususiyatlar bo'lishi mumkin. Yagona narsa shundaki, mavhum sinflarni belgilashda mavhum kalit so'z ishlatiladi . Masalan, transport vositasini ifodalovchi mavhum sinfni aniqlaymiz:
abstract class Transport
{
public void Move()
{
Console.WriteLine("Транспортно средство движется");
}
}
Avtomobil ma'lum bir amalga oshirishga ega bo'lmagan ba'zi mavhumlikni ifodalaydi. Ya'ni, mashinalar va yuk mashinalari, samolyotlar, kemalar bor, kimdir kosmik kemaga minishni yaxshi ko'radi, lekin bunday transport vositasi yo'q. Biroq, barcha transport vositalarining umumiy jihati bor - ular harakatlana oladi. Va buning uchun sinfda harakatga taqlid qiluvchi Move usuli aniqlanadi.
Ammo mavhum sinflar va oddiy sinflar o'rtasidagi asosiy farq shundaki, biz sinfning namunasini yaratish uchun mavhum sinf konstruktoridan foydalana olmaymiz . Masalan, quyidagicha:

Transport tesla = new Transport();

Biroq, mavhum sinflar olingan sinflar meros qilib olishi va foydalanishi mumkin bo'lgan ba'zi umumiy funktsiyalarni tavsiflash uchun foydalidir:

Transport car = new Car();
Transport ship = new Ship();
Transport aircraft = new Aircraft();
car.Move();
ship.Move();
aircraft.Move();
abstract class Transport
{
public void Move()
{
Console.WriteLine("Транспортное средство движется");
}
}
// класс корабля
class Ship : Transport { }
// класс самолета
class Aircraft : Transport { }
// класс машины
class Car : Transport { }

Bunday holda, Transport klassi har xil turdagi transport vositalarini ifodalovchi uchta sinfni meros qilib oladi. Biroq, ularning bitta umumiy tomoni bor - ular yordamida navigatsiya qilish mumkin Move().
Yuqorida mavhum sinfning konstruktoridan foydalanib, ushbu sinfning namunasini yaratish mumkin emasligi haqida yozilgan edi. Biroq, bunday sinf konstruktorlarni ham belgilashi mumkin:

Transport car = new Car("машина");
Transport ship = new Ship("корабль");
Transport aircraft = new Aircraft("самолет");
car.Move(); // машина движется
ship.Move(); // корабль движется
aircraft.Move(); // самолет движется
abstract class Transport
{
public string Name { get; }
// конструктор абстрактного класса Transport
public Transport(string name)
{
Name = name;
}
public void Move() =>Console.WriteLine($"{Name} движется");
}
// класс корабля
class Ship : Transport
{
// вызываем конструктор базового класса
public Ship(string name) : base(name) { }
}
// класс самолета
class Aircraft : Transport
{
public Aircraft(string name) : base(name) { }
}
// класс машины
class Car : Transport
{
public Car(string name) : base(name) { }
}

Bunday holda, konstruktor mavhum Transport sinfida aniqlanadi - parametrdan foydalanib, u avtomobil nomini saqlaydigan Name xususiyatining qiymatini o'rnatadi. Va bu holda, hosila sinflar o'zlarining konstruktorlarida ushbu konstruktorni chaqirishlari kerak.

Download 25.88 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




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