Sobes.tech
Junior

Co je to objektově orientované programování (OOP) v Java?

sobes.tech AI

Odpověď od AI

Objektově orientované programování v jazyce Java je paradigma založené na konceptu "objektů", které obsahují data (vlastnosti) a metody (akce).

Hlavní principy OOP v Javě:

  1. Zapouzdření: Skrytí dat a metod uvnitř objektu, ke kterým je přístup pouze přes určité rozhraní. To zajišťuje bezpečnost dat a modularitu.
  2. Dědičnost: Umožňuje vytvářet nové třídy (potomky) na základě stávajících (rodičovských), dědí jejich vlastnosti a metody. To podporuje opětovné použití kódu.
  3. Polymorfismus: Umožňuje používat objekty různých tříd přes jedno rozhraní. To zajišťuje flexibilitu a rozšiřitelnost. Rozlišujeme polymorfismus při kompilaci (přetížení metod) a při běhu (přepsání metod).
  4. Abstrakce: Vyčlenění podstatných vlastností objektu a skrytí nepodstatných detailů. To pomáhá zjednodušit složité systémy.

Příklad třídy v Javě:

public class Car {
    private String brand; // Zapouzdřená vlastnost
    private String model;
    private int year;

    public Car(String brand, String model, int year) { // Konstruktor
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    public void displayInfo() { // Metoda
        System.out.println("Brand: " + brand + ", Model: " + model + ", Year: " + year);
    }

    // Gettery a settery (pro přístup k soukromým vlastnostem)
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }
}

Příklad použití principů OOP:

// Dědičnost
public class ElectricCar extends Car {
    private int batteryCapacity;

    public ElectricCar(String brand, String model, int year, int batteryCapacity) {
        super(brand, model, year); // Volání konstruktoru rodičovské třídy
        this.batteryCapacity = batteryCapacity;
    }

    @Override // Polymorfismus (přepsání metody)
    public void displayInfo() {
        super.displayInfo(); // Volání metody rodičovské třídy
        System.out.println("Battery Capacity: " + batteryCapacity + " kWh");
    }
}

// Použití objektů
public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota", "Camry", 2020);
        Car myElectricCar = new ElectricCar("Tesla", "Model 3", 2022, 75);

        myCar.displayInfo();
        myElectricCar.displayInfo(); // Polymorfismus v akci
    }
}

Výhody OOP:

  • Opětovné použití kódu: Přes dědičnost.
  • Snadná údržba: Změny se týkají pouze konkrétních objektů nebo tříd.
  • Flexibilita a rozšiřitelnost: Díky polymorfismu.
  • Lepší organizace kódu: Rozdělení systému na moduly (objekty).
  • Bezpečnost dat: Přes zapouzdření.