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:
- Incapsulamento: Nascondere dati e metodi all'interno di un oggetto, accessibili solo tramite interfacce specifiche. Questo garantisce la sicurezza dei dati e la modularità.
- Ereditarietà: Permette di creare nuove classi (sottoclassi) basate su classi esistenti (superclassi), ereditando proprietà e metodi. Favorisce il riutilizzo del codice.
- 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).
- 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.