|
Matematika va kompyuter ilmlari fakulteti amaliy matimatika kafedrasi dasturlash asoslari fanidan
|
bet | 7/11 | Sana | 17.05.2024 | Hajmi | 114,28 Kb. | | #239885 |
Bog'liq KURS IWI1 – xato: Chizish() metodini ajdod sinfda, ya’ni, Shakl sinfida qayta yozish imkoniyati bor ekanligini aytmadik. (virtual so’zi bilan hal qilamiz)
2 – xato : Chizish() metodini voris sinflarda qayta yozayotganimizni ham aytib o’tmadik. (override so’zi bilan hal qilamiz)
Dasturga muammolarimizni hal qiluvchi kalit so’zlarni qo’shamiz:
namespace PolymorphismDemoApp
{
class Shakl
{
public virtual void Chizish()
{
Console.WriteLine("Men shakl chizaman");
}
}
class Uchburchak : Shakl
{
public override void Chizish()
{
Console.WriteLine("Men uchburchak chizaman");
}
}
class Aylana : Shakl
{
public override void Chizish()
{
Console.WriteLine("Men aylana chizaman");
}
}
class Program
{
static void Main(string[] args)
{
//konstruktorlar e'loni
Shakl shakl = new Shakl();
Shakl uchburchak = new Uchburchak();
Shakl aylana = new Aylana();
//Metodni chaqirish
shakl.Chizish();
uchburchak.Chizish();
aylana.Chizish();
Console.ReadKey();
}
}
}
Xatolarimizni hal qila oldikmi ?
Natija
Xayriyat, endi natija biz xohlagan ko’rinishda !
Yuqorida biz geometrik shakl deganda aynan bir shakl ko’z oldimizga kelishini va uni chizish mumkin emasligini tushunib yetdik. Demak, “Shakl” sinfi mavhum (abstract) sinf va uning “Chizish” metodi ham mavhum (abstract). Voris sinflarda esa bu metodning qiladigan ishi tayin.
namespace PolymorphismDemoApp
{
abstract class Shakl
{
public abstract void Chizish();
}
class Uchburchak : Shakl
{
public override void Chizish()
{
Console.WriteLine("Uchburchak chizaman");
}
}
class Aylana : Shakl
{
public override void Chizish()
{
Console.WriteLine("Aylana chizaman");
}
}
class Program
{
static void Main(string[] args)
{
//konstruktorlar e'loni
//Shakl shakl = new Shakl(); endi Shakl sinfining kostruktrini yaratib bo'lmaydi
Shakl uchburchak = new Uchburchak();
Shakl aylana = new Aylana();
//Metodni chaqirish
uchburchak.Chizish();
aylana.Chizish();
Console.ReadKey();
}
}
}
OOP ni amalda yaxshi qo’llashni istasangiz quyidagi 3 qoidani doimo yodda tuting:
|
| |