Sobes.tech
Junior

Šta su ugnježdene klase?

sobes.tech АИ

Одговор од АИ

Ugnježdene klase (Nested Classes) su klase definisane unutar druge klase. Delе se na dva osnovna tipa:

  1. Statičke ugnježdene klase (Static Nested Classes): Slično statičkim članovima spoljašnje klase. Nemaju direktan pristup nestatickim članovima spoljašnje klase. Kreiraju se bez instance spoljašnje klase.

    Primer na Javi:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Pristup statičkom članu OuterClass
                int value = OuterClass.outerStaticField;
            }
    
            // Nemaju direktan pristup outerInstanceField
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Greška pri kompilaciji
            // }
        }
    }
    
  2. Unutrašnje klase (Inner Classes): Nestaticke. Imaju pristup svim članovima spoljašnje klase, uključujući statičke i nestaticke, čak i privatne. Instanca unutrašnje klase je povezana sa instancom spoljašnje klase. Kreiraju se korišćenjem instance spoljašnje klase.

    Primer na Javi:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Pristup statičkim i nestatickim članovima OuterClass
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Takođe postoje specifične vrste unutrašnjih klasa:

  • Lokalne klase (Local Classes): Definišu se unutar bloka (npr. metoda, konstruktora ili inicijalizacionog bloka). Dostupne su samo unutar tog bloka.
  • Anonimne klase (Anonymous Classes): Nemaju ime. Koriste se za kreiranje jednokratne implementacije interfejsa ili proširenja klase. Definišu se i instanciraju istovremeno.

Prednosti ugniježdenih klasa:

  • Logičko grupisanje: Omogućavaju grupisanje klasa koje su logički povezane, povećavajući čitljivost koda.
  • Inkapzulacija: Mogu imati pristup privatnim članovima spoljašnje klase, obezbeđujući jaču inkapsulaciju.
  • Jednostavniji kod: Olakšavaju pisanje koda za klase koje koriste samo jedan drugi klasa.

Primena u QA automatizaciji:

  • Page Object Model: Unutrašnje ili statičke ugnježdene klase mogu se koristiti za organizaciju elemenata stranice (npr. sekcija, modalnih prozora) unutar glavne klase Page Object.
  • Obrađivači događaja / Callback-ovi: Anonimne ili lokalne klase mogu se koristiti za implementaciju testova koristeći callback-ove ili obrađivače događaja, na primer, pri radu sa UI elementima ili slušačima.
  • Konfiguracione klase: Statičke ugnježdene klase mogu sadržati konstante ili konfiguracione parametre, specifične za spoljašnju klasu.