Sobes.tech
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:

  1. 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ść.
  2. 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.
  3. 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).
  4. 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.