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ě:
- 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.
- 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.
- 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).
- 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í.