Sobes.tech
Junior

რა არის შიდა კლასი?

sobes.tech AI

პასუხი AI-სგან

შიდა კლასები (Nested Classes) — ეს სხვა კლასში განსაზღვრული კლასები. ისინი იყოფიან ორ ძირითად ტიპად:

  1. სტატიკური შიდა კლასები (Static Nested Classes): მსგავსია გარეთა კლასის სტატიკურ წევრებთან. მათ პირდაპირი წვდომა არა აქვთ გარეთა კლასის ნესტატიკ წევრებზე. შექმნიან გარეთა კლასის ინსტანციის გარეშე.

    Java-ის მაგალითი:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // წვდომა OuterClass-ის სტატიკურ წევრზე
                int value = OuterClass.outerStaticField;
            }
    
            // პირდაპირი წვდომა outerInstanceField-ზე არა აქვს
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // კომპილაციის შეცდომა
            // }
        }
    }
    
  2. შიდა კლასები (Inner Classes): ნესტატიკი არაა. აქვთ წვდომა ყველა გარეთა კლასის წევრზე, მათ შორის სტატიკურ და ნესტატიკ, ასევე პირადზე. შიდა კლასი დაკავშირებულია გარეთა კლასის ინსტანციასთან. შექმნილია გარეთა კლასის ინსტანციის გამოყენებით.

    Java-ის მაგალითი:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // წვდომა გარეთა კლასის სტატიკურ და ნესტატიკ წევრებზე
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

კიდევ არსებობს სპეციფიკური ტიპები შიდა კლასების:

  • ლოკალური კლასები (Local Classes): განსაზღვრულია ბლოკის შიგნით (მაგალითად, მეთოდი, კონსტრუქტორი ან ინიციალიზაციის ბლოკი). ხელმისაწვდომია მხოლოდ ამ ბლოკის ფარგლებში.
  • ანონიმური კლასები (Anonymous Classes): სახელწოდება არა აქვს. გამოიყენება ერთჯერადი ინტერფეისის ან კლასის გაფართოების რეალიზაციისთვის. განსაზღვრული და ინიციალიზებულია ერთდროულად.

შიდა კლასების უპირატესობები:

  • ლოგიკური ჯგუფირება: საშუალებას აძლევს ჯგუფად მოათავსოს კლასები, რომლებიც ლოგიკურად დაკავშირებულია, ამით ზრდის კოდის წაკითხულობას.
  • ინკაპსულაცია: შეუძლია წვდომა ჰქონდეს პირად წევრებზე გარეთა კლასში, რაც ამყარებს ინკაპსულაციას.
  • კოდის გამარტივება: ადვილად წერის საშუალებას აძლევს კლასებს, რომლებიც გამოიყენება მხოლოდ ერთ სხვა კლასთან ერთად.

გამოყენება QA ავტომატიზაციაში:

  • Page Object Model: შიდა ან სტატიკური შიდა კლასები შეიძლება გამოყენებულ იქნას გვერდის ელემენტების ორგანიზებისთვის (მაგალითად, სექციები, მოდალური ფანჯრები) მთავარი Page Object კლასის შიგნით.
  • საგზაო დამუშავებლები / Callback-ები: ანონიმური ან ადგილობრივი კლასები შეიძლება გამოყენებულ იქნას ტესტების განხორციელებისთვის callback-ების ან დამუშავებლების გამოყენებით, მაგალითად, UI ელემენტებთან მუშაობისას ან მსმენელებთან.
  • კონფიგურაციის კლასები: სტატიკური შიდა კლასები შეიძლება შეიცავდეს კონსტანტებს ან კონფიგურაციის პარამეტრებს, რომლებიც სპეციფიკურია გარეთა კლასისთვის.