Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Java
  3. Java-da Inheritance və Composition: hansını, nə zaman istifadə etməliyik?

Java-da Inheritance və Composition: hansını, nə zaman istifadə etməliyik?

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb Java
compositioninheritanceoopis-ahas-a
1 Yazı 1 Yazarlar 10 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    yazdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    Java proqramlaşdırma dilində obyekt yönlü proqramlaşdırmanın (OOP) iki əsas anlayışı olan inheritance və composition proqramın strukturlaşdırılması və kodun təkrar istifadəsi baxımından çox vacib rol oynayır.

    Bu məqalədə hər iki anlayışı dərin təhlil edəcək, onların fərqlərini, üstünlüklərini və real nümunələr əsasında hansı vəziyyətdə hansının seçilməli olduğunu izah edəcəyik.


    🔷 Inheritance nədir?

    Inheritance - bir class-ın başqa bir class-ın xüsusiyyətlərini və metodlarını miras almasına imkan verən OOP prinsiplərindən biridir.

    Sadə nümunə:

    class Animal {
        void sound() {
            System.out.println("Heyvan səsi");
        }
    }
    
    class Dog extends Animal {
        void bark() {
            System.out.println("Hürmək");
        }
    }
    

    Burada Dog class-ı Animal class-ından miras alır və həm sound() metodunu istifadə edə bilir, həm də özünə məxsus bark() metoduna sahibdir.

    Inheritance-ın əsas xüsusiyyətləri:

    • extends açar sözü ilə yazılır.
    • Java-da çoxlu irsilik (multiple inheritance) yalnız interfeyslərlə mümkündür.
    • super açar sözü parent class-a müraciət etmək üçün istifadə olunur.

    ✅ Inheritance-ın üstünlükləri

    • Kod təkrarını azaldır. Eyni funksionallığı müxtəlif class-larda yenidən yazmağa ehtiyac yoxdur.
    • Quruluşlu ierarxiya yaradır. Class-lar arasında əlaqə vizual və konseptual cəhətdən aydın olur.
    • Yenidən istifadə imkanı. Mövcud kod bazasından yeni class-lar yaradıla bilər.

    ⚠️ Inheritance-ın çatışmazlıqları

    • Sıx bağlılıq (tight coupling). Əsas class-dakı dəyişikliklər törəmə class-lara təsir edə bilər.
    • Dizaynın çevikliyi azalır. Törəmə class-lar əsas class-ın strukturu ilə məhdudlaşır.
    • “Fragile base class” problemi. Əsas class-dakı dəyişikliklər bütün sistemə gözlənilməz təsir göstərə bilər.

    🧩 Composition nədir?

    Composition, bir class-ın başqa bir class-ı öz daxilində obyekt kimi saxlaması və onun metodlarından istifadə etməsi prinsipi üzərində qurulub.

    Yəni burada class-lar arasında “has-a” münasibəti olur.

    Sadə nümunə:

    class Engine {
        void start() {
            System.out.println("Mühərrik işə düşdü");
        }
    }
    
    class Car {
        private Engine engine = new Engine();
    
        void drive() {
            engine.start();
            System.out.println("Maşın hərəkət edir");
        }
    }
    

    Bu nümunədə Car class-ı Engine class-ını istifadə edir, lakin ondan irs almır.


    ✅ Composition-nun üstünlükləri

    • Sərbəstlik (loose coupling). Composition olunan class asanlıqla dəyişdirilə və əvəz edilə bilər.
    • Test etmək daha asandır. Mock obyektlər ilə testlər daha effektiv yazılır.
    • Dizayn daha çevik olur. Dinamik davranışlar asanlıqla idarə olunur.

    ⚠️ Composition-nun çatışmazlıqları

    • Dizaynın mürəkkəbləşməsi. Əgər çoxlu class-lar bir-birini compose edirsə, oxumaq və başa düşmək çətinləşə bilər.
    • Əlavə kod yazmaq tələb oluna bilər. Composition inheritance-ə nisbətən bir qədər daha çox konfiqurasiya tələb edir.

    🧠 Hansını nə zaman seçməli?

    Məsələ Inheritance Composition
    Münasibət “is-a” “has-a”
    Kod təkrarını azaltmaq ✔️ ✔️
    Çevik dizayn ❌ ✔️
    Test ediləbilərlik Orta Yüksək
    Valideyn dəyişiklikləri təsiri Yüksək Aşağı

    Sadə qayda:

    Əgər class-lar arasında “is-a” münasibəti varsa — Inheritance,
    “has-a” münasibəti varsa — Composition istifadə edin.


    🎯 Best Practice: “Prefer composition over inheritance”

    Məşhur dizayn prinsiplərindən biri də budur:

    “Composition-u Inheritance-dan üstün tutun”

    Çoxlu məşhur dizayn nümunələri (design patterns) də bu prinsipi əsas götürür:

    • Strategy pattern
    • Decorator pattern
    • Observer pattern və s.

    🔚 Nəticə

    Java proqramlarında Inheritance və Composition hər biri öz yerində çox faydalı vasitələrdir. Əsas məsələ — onları düzgün kontekstdə istifadə etməkdir. Inheritance daha sadə görünsə də, zamanla sistemin çevikliyinə zərər verə bilər. Ona görə də çox vaxt Composition-a üstünlük vermək daha sağlam yanaşmadır.

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar