Sobes.tech
Junior

Cos'è la programmazione orientata agli oggetti (OOP) in Java?

sobes.tech AI

Risposta dell'AI

La programmazione orientata agli oggetti in Java è un paradigma basato sul concetto di "oggetti", che contengono dati (proprietà) e metodi (azioni).

Principi fondamentali della OOP in Java:

  1. Incapsulamento: Nascondere dati e metodi all'interno di un oggetto, accessibili solo tramite interfacce specifiche. Questo garantisce la sicurezza dei dati e la modularità.
  2. Ereditarietà: Permette di creare nuove classi (sottoclassi) basate su classi esistenti (superclassi), ereditando proprietà e metodi. Favorisce il riutilizzo del codice.
  3. Polimorfismo: Permette di usare oggetti di classi diverse tramite un'interfaccia comune. Offre flessibilità ed estensibilità. Si distingue tra polimorfismo in fase di compilazione (overloading dei metodi) e in fase di esecuzione (override dei metodi).
  4. Astrazione: Evidenziare le caratteristiche essenziali di un oggetto e nascondere i dettagli non essenziali. Aiuta a semplificare sistemi complessi.

Esempio di una classe in Java:

public class Car {
    private String marca; // Proprietà incapsulata
    private String modello;
    private int anno;

    public Car(String marca, String modello, int anno) { // Costruttore
        this.marca = marca;
        this.modello = modello;
        this.anno = anno;
    }

    public void displayInfo() { // Metodo
        System.out.println("Marca: " + marca + ", Modello: " + modello + ", Anno: " + anno);
    }

    // Getters e setters (per accedere alle proprietà private)
    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }
}

Esempio di utilizzo dei principi di OOP:

// Ereditarietà
public class ElectricCar extends Car {
    private int capacitàBatteria;

    public ElectricCar(String marca, String modello, int anno, int capacitàBatteria) {
        super(marca, modello, anno); // Chiamata al costruttore della superclasse
        this.capacitàBatteria = capacitàBatteria;
    }

    @Override // Polimorfismo (override del metodo)
    public void displayInfo() {
        super.displayInfo(); // Chiamata al metodo della superclasse
        System.out.println("Capacità Batteria: " + capacitàBatteria + " kWh");
    }
}

// Uso di oggetti
public class Main {
    public static void main(String[] args) {
        Car laMiaAuto = new Car("Toyota", "Camry", 2020);
        Car laMiaAutoElettrica = new ElectricCar("Tesla", "Model 3", 2022, 75);

        laMiaAuto.displayInfo();
        laMiaAutoElettrica.displayInfo(); // Polimorfismo in azione
    }
}

Vantaggi della OOP:

  • Riutilizzo del codice: Attraverso l'ereditarietà.
  • Facilità di manutenzione: Le modifiche interessano solo oggetti o classi specifici.
  • Flessibilità ed estensibilità: Grazie al polimorfismo.
  • Migliore organizzazione del codice: Suddivisione del sistema in moduli (oggetti).
  • Sicurezza dei dati: Attraverso l'incapsulamento.