• CallArea
  • Ushbu holat quyidagicha
  • Matematika va kompyuter ilmlari fakulteti amaliy matimatika kafedrasi dasturlash asoslari fanidan




    Download 114,28 Kb.
    bet9/11
    Sana17.05.2024
    Hajmi114,28 Kb.
    #239885
    1   2   3   4   5   6   7   8   9   10   11
    Bog'liq
    KURS IWI

    protected int width, height;
    public Shakl( int a = 0, int b = 0) {
    width = a;
    height = b;
    }
    public virtual int area() {
    Console.WriteLine("Tayanch sinf a’zosi: ");
    return 0;
    }
    }
    class Turtburchak: Shakl {
    public Turtburchak( int a = 0, int b = 0): base(a, b) {
    }
    public override int area () {
    Console.WriteLine("Turtburchak sinf a’zosi: ");
    return (width * height);
    }
    }
    class Uchburchak: Shakl {
    public Uchburchak(int a = 0, int b = 0): base(a, b) {
    }
    public override int area() {
    Console.WriteLine("Uchburchak sinf a’zosi: ");
    return (width * height / 2);
    }
    }
    class Caller {
    public void CallArea(Shakl sh) {
    int a;
    a = sh.area();
    Console.WriteLine("Maydon: {0}", a);
    }
    }
    class Tester {
    static void Main(string[] args) {
    Caller c = new Caller();
    Turtburchak r = new Turtburchak(10, 7);
    Uchburchak t = new Uchburchak(10, 5);
    c.CallArea(r);
    c.CallArea(t);
    Console.ReadKey();
    }
    }
    }
    Yuqoridagi kod kompilyatsiya qilinganda va bajarilganda, quyidagi natijani beradi:
    Runtime polimorfizmi yoki kech ulanish polimorfizmi deb ham atash mumkin. Polimorfizmning ushbu turida statik polimorfizmdan farqli tarzda bir sinfga tegishli metodlarni ushbu sinfdan voris oluvchi boshqa sinflarda qayta aniqlaymiz. Bu nima degani ? Misol tariqasida real bir voqeani qaraymiz. Geometrik shakl deganimizda uchuburchak, to’rtburchak, piramida va yana boshqa shakllar ko’z oldimizdan o’tadi. Lekin aynan bir shaklni tasavvur qila olmaymiz. Uchburchak deganimizda esa aksincha. Ushbu holat quyidagicha:
    namespaceUzbekDevs
    {
    classShakl
    {
    publicvirtualvoidChizish()
    {
    Console.WriteLine("Men shakl chizaman.");
    }
    }

    classUchburchak : Shakl


    {
    publicoverridevoidChizish()
    {
    Console.WriteLine("Men uchburchak chizaman.");
    }
    }

    classAylana : Shakl


    {
    publicoverridevoidChizish()
    {
    Console.WriteLine("Men aylana chizaman.");
    }
    }
    Yuqoridagi holatda “Shakl” sinfi ajdod sinf va unda Chizish() metodi mavjud, “Aylana” va “Uchburchak” sinflari esa uning voris sinflari va Chizish() metodini esa ularda qayta yozdik.
    namespaceUzbekDevs
    {
    classShakl
    {
    publicvirtualvoidChizish()
    {
    Console.WriteLine("Men shakl chizaman.");
    }
    }

    classUchburchak : Shakl


    {
    publicoverridevoidChizish()
    {
    Console.WriteLine("Men uchburchak chizaman.");
    }
    }

    classAylana : Shakl


    {
    publicoverridevoidChizish()
    {
    Console.WriteLine("Men aylana chizaman.");
    }
    }

    classProgram


    {
    staticvoidMain(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();


    }
    }
    }
    Dastur natijasi:

    Download 114,28 Kb.
    1   2   3   4   5   6   7   8   9   10   11




    Download 114,28 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Matematika va kompyuter ilmlari fakulteti amaliy matimatika kafedrasi dasturlash asoslari fanidan

    Download 114,28 Kb.