Sobes.tech
Middle

Čo je to polymorfizmus v objektovo orientovanom programovaní (OOP)?

sobes.tech AI

Odpoveď od AI

Polymorfizmus v objektovo orientovanom programovaní (OOP) je vlastnosť objektov, že sa správajú rôzne v závislosti od ich typu, čo umožňuje používať rovnaké rozhranie (metódu) na spracovanie rôznych typov dát. To zabezpečuje flexibilitu a rozšíriteľnosť kódu.

Hlavné typy polymorfizmu:

  1. Polymorfizmus pri kompilácii (statický): Realizuje sa pomocou preťaženia metód (method overloading). Rôzne metódy majú rovnaké meno, ale líšia sa v množine a/alebo typoch parametrov. Kompilátor určuje, ktorú metódu volať na základe podpisu.

    class Calculator {
        // Preťaženie metódy add
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  2. Polymorfizmus pri behu (dynamický): Realizuje sa pomocou prepisovania metód (method overriding). Podtrieda poskytuje svoju špecifickú implementáciu metódy, ktorá je už definovaná v supertriede. Výber konkrétnej implementácie sa deje počas behu, na základe skutočného typu objektu.

    class Animal {
        // Základná metóda
        public void sound() {
            System.out.println("Zviera vydáva zvuk");
        }
    }
    
    class Dog extends Animal {
        // Prepisovanie metódy sound
        @Override
        public void sound() {
            System.out.println("Pes šteká");
        }
    }
    
    // Príklad použitia
    // Animal myDog = new Dog(); // Skutočný typ objektu - Dog
    // myDog.sound(); // Volá sa metóda sound z triedy Dog
    

Polymorfizmus umožňuje písať abstraktnejší a jasnejšie popisujúci problémovú oblasť kód, uľahčuje údržbu a pridávanie nových funkcií bez zmeny existujúceho kódu. V kontexte QA a QA Automation je pochopenie polymorfizmu dôležité pre prácu s rámcami automatizácie, kde sa používajú abstraktné triedy/rozhrania a ich konkrétne implementácie (napríklad pri práci s ovládačmi pre rôzne prehliadače v Selenium).