Sobes.tech
Junior

Genişləndirmə (extended) nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Obyekt yönümlü proqramlaşdırma və irsiyyət kontekstində genişlənmə, bir sinfin başqa bir sinfinin xüsusiyyətlərini və metodlarını miras alması deməkdir. Miras alan sinif, əsas sinifin alt növü olur və onun funksionallığından istifadə edə bilər, həmçinin öz xüsusiyyətlərini əlavə edə və ya miras alınmış metodları yenidən yaza bilər.

Java-da tətbiqi:

Java-da irsiyyət üçün extends açar sözü istifadə olunur.

// Əsas sinif
class Animal {
    void eat() {
        System.out.println("Heyvan yeyir");
    }
}

// Dog sinfi Animal-dan irs alır
class Dog extends Animal {
    void bark() {
        System.out.println("İt hürür");
    }
}

Burada, Dog Animal-ı genişləndirir, eat() metoduna çıxış əldə edir və öz bark() metodunu əlavə edir.

Genişlənmənin (irsiyyətin) üstünlükləri:

  • Kodun təkrar istifadəsi: Əsas sinfin funksionallığı irsən alanlar tərəfindən istifadə edilə bilər.
  • Polimorfizm: İrsən alan obyektlər, əsas sinif obyektləri kimi işlənə bilər.
  • Sinif hierarxiyası: Məntiqi obyekt hierarxiyalarını yaratmağa imkan verir.

Məhdudiyyətlər:

  • Çoxlu irsiyyət: Bəzi dillərdə (məsələn, Java) birbaşa çoxlu irsiyyət dəstəklənmir, "elmas problemi" ni qarşısını almaq üçün. Bunun yerinə, interfeyslər istifadə olunur.
  • Güclü əlaqə: İrsiyyət, əsas sinif və irsən alan arasında güclü asılılıq yaradır, bu da əsas sinifdə dəyişiklikləri çətinləşdirə bilər.

QA kontekstində, obyekt yönümlü yanaşmaları istifadə edən sistemləri test edərkən irsiyyət anlayışını başa düşmək vacibdir. Miras alınan metodların davranışını, yenidən yazılmış metodları və obyektlərin müxtəlif səviyyələrdəki qarşılıqlı əlaqəsini nəzərə almaq lazımdır. Test avtomatlaşdırmasında, test çərçivələri adətən əsas funksionallığı genişləndirmək üçün irsiyyətdən istifadə edir (məsələn, test sinifləri).