Junior
Czym jest programowanie obiektowe (OOP) w Java?
sobes.tech AI
Odpowiedź od AI
Programowanie obiektowe w Java to paradygmat oparty na koncepcji "obiektów", które zawierają dane (właściwości) i metody (akcje).
Podstawowe zasady OOP w Java:
- Enkapsulacja: Ukrywanie danych i metod wewnątrz obiektu, dostęp do nich jest możliwy tylko przez określone interfejsy. Zapewnia to bezpieczeństwo danych i modularność.
- Dziedziczenie: Pozwala tworzyć nowe klasy (podklasy) na podstawie istniejących (nadklas), dziedzicząc ich właściwości i metody. Sprzyja to ponownemu użyciu kodu.
- Polimorfizm: Umożliwia korzystanie z obiektów różnych klas przez jeden interfejs. Zapewnia elastyczność i rozszerzalność. Rozróżnia się polimorfizm w czasie kompilacji (przeciążanie metod) i w czasie wykonywania (nadpisywanie metod).
- Abstrakcja: Wyróżnianie istotnych cech obiektu i ukrywanie nieistotnych szczegółów. Pomaga upraszczać złożone systemy.
Przykład klasy w Java:
public class Car {
private String marka; // Ukryta właściwość
private String model;
private int rok;
public Car(String marka, String model, int rok) { // Konstruktor
this.marka = marka;
this.model = model;
this.rok = rok;
}
public void displayInfo() { // Metoda
System.out.println("Marka: " + marka + ", Model: " + model + ", Rok: " + rok);
}
// Gettery i settery (do dostępu do prywatnych właściwości)
public String getMarka() {
return marka;
}
public void setMarka(String marka) {
this.marka = marka;
}
}
Przykład użycia zasad OOP:
// Dziedziczenie
public class ElectricCar extends Car {
private int pojemnoscBaterii;
public ElectricCar(String marka, String model, int rok, int pojemnoscBaterii) {
super(marka, model, rok); // Wywołanie konstruktora klasy bazowej
this.pojemnoscBaterii = pojemnoscBaterii;
}
@Override // Polimorfizm (nadpisanie metody)
public void displayInfo() {
super.displayInfo(); // Wywołanie metody klasy bazowej
System.out.println("Pojemność baterii: " + pojemnoscBaterii + " kWh");
}
}
// Użycie obiektów
public class Main {
public static void main(String[] args) {
Car mojSamochod = new Car("Toyota", "Camry", 2020);
Car mojElektrycznySamochod = new ElectricCar("Tesla", "Model 3", 2022, 75);
mojSamochod.displayInfo();
mojElektrycznySamochod.displayInfo(); // Polimorfizm w akcji
}
}
Zalety OOP:
- Ponowne użycie kodu: Dzięki dziedziczeniu.
- Łatwość konserwacji: Zmiany dotyczą tylko konkretnych obiektów lub klas.
- Elastyczność i rozszerzalność: Dzięki polimorfizmowi.
- Lepsza organizacja kodu: Podział systemu na moduły (obiekty).
- Bezpieczeństwo danych: Dzięki enkapsulacji.