Sobes.tech
Middle

Šta je polimorfizam u objektno-orijentisanom programiranju (OOP)?

sobes.tech АИ

Одговор од АИ

Polimorfizam u objektno-orijentisanom programiranju (OOP) je svojstvo objekata da se ponašaju različito u zavisnosti od njihovog tipa, omogućavajući korišćenje istog interfejsa (metoda) za obradu različitih tipova podataka. Ovo obezbeđuje fleksibilnost i proširivost koda.

Glavni tipovi polimorfizma:

  1. Polimorfizam u vreme kompilacije (staticki): Realizuje se pomoću preopterećenja metoda (method overloading). Različite metode imaju isto ime, ali se razlikuju u skupu i/ili tipovima parametara. Kompajler određuje koju metodu da pozove na osnovu potpisa.

    class Calculator {
        // Preopterećenje metode add
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  2. Polimorfizam u vreme izvršenja (dinamički): Realizuje se pomoću preklapanja metoda (method overriding). Podklasa pruža svoju specifičnu implementaciju metode, koja je već definisana u superklasi. Izbor konkretne implementacije vrši se tokom izvršenja, na osnovu stvarnog tipa objekta.

    class Animal {
        // Osnovna metoda
        public void sound() {
            System.out.println("Životinja pravi zvuk");
        }
    }
    
    class Dog extends Animal {
        // Preklapanje metode sound
        @Override
        public void sound() {
            System.out.println("Pas laje");
        }
    }
    
    // Primer korišćenja
    // Animal myDog = new Dog(); // Stvarni tip objekta - Dog
    // myDog.sound(); // Poziva se metoda sound iz klase Dog
    

Polimorfizam omogućava pisanje apstraktnijeg i jasnije opisujućeg problematiku koda, olakšava održavanje i dodavanje novih funkcija bez promene postojećeg koda. U kontekstu QA i QA Automation, razumevanje polimorfizma je važno za rad sa okvirima za automatizaciju, gde se koriste apstraktne klase/interfejsi i njihove konkretne implementacije (npr. pri radu sa drajverima za različite pretraživače u Seleniumu).