Sobes.tech
Middle

Obyekt yönümlü proqramlaşdırmada (OOP) polimorfizm nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Obyekt yönümlü proqramlaşdırmada (OOP) polimorfizm obyektlərin növündən asılı olaraq müxtəlif davranışlar göstərmə xüsusiyyətidir və eyni interfeys (metod) istifadə edərək müxtəlif məlumat tiplərini işləməyə imkan verir. Bu, kodun çevikliyini və genişləndirilə bilməsini təmin edir.

Polimorfizmin əsas növləri:

  1. Təhlil vaxtında polimorfizm (statik): Metodların yüklənməsi (method overloading) vasitəsilə həyata keçirilir. Müxtəlif metodlar eyni adı daşıyır, lakin parametrlərin toplusu və ya tipləri ilə fərqlənir. Kompilyator hansı metodun çağırılacağını imza əsasında müəyyən edir.

    class Calculator {
        // add metodunun yüklənməsi
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  2. İcrada vaxtında polimorfizm (dinamik): Metodların üst-üstə yazılması (method overriding) vasitəsilə həyata keçirilir. Alt sinif özünəməxsus metod tətbiqini təmin edir, bu artıq super sinifdə müəyyən olunub. Konkret tətbiqin seçimi icra zamanı, obyektin faktiki növünə əsaslanır.

    class Animal {
        // Əsas metod
        public void sound() {
            System.out.println("Heyvan səs çıxarır");
        }
    }
    
    class Dog extends Animal {
        // sound metodunun üst-üstə yazılması
        @Override
        public void sound() {
            System.out.println("İt havlayır");
        }
    }
    
    // İstifadə nümunəsi
    // Animal myDog = new Dog(); // Obyektin faktiki növü - Dog
    // myDog.sound(); // Dog sinifinin sound metodunu çağırır
    

Polimorfizm daha abstrakt və problem sahəsini aydın şəkildə təsvir edən kod yazmağa imkan verir, onun dəstəklənməsini və yeni funksiyaların əlavə edilməsini asanlaşdırır, mövcud kodu dəyişmədən. QA və QA Automation kontekstində, polimorfizmi anlamaq avtomatlaşdırma çərçivələri ilə işləmək üçün vacibdir, burada abstrakt siniflər/interfeyslər və onların konkret tətbiqləri istifadə olunur (məsələn, Selenium-da müxtəlif brauzerlər üçün sürücülərlə işləyərkən).