Cos'è la Programmazione Orientata agli Oggetti
La Programmazione Orientata agli Oggetti (OOP) è un paradigma di programmazione che organizza il software attorno a oggetti anziché funzioni e logica. Un oggetto combina dati (attributi) e comportamenti (metodi) in un'unica entità, rispecchiando il modo in cui pensiamo al mondo reale.
💡 Concetti Fondamentali
- Classe: Blueprint (modello) per creare oggetti
- Oggetto: Istanza di una classe con dati specifici
- Attributi: Dati/proprietà dell'oggetto
- Metodi: Funzioni/comportamenti dell'oggetto
Dal Procedurale alla OOP
Nella programmazione procedurale, dati e funzioni sono separati. Nella OOP, sono incapsulati insieme, rendendo il codice più modulare e intuitivo.
Approccio Procedurale:
// Dati separati
let userName = "Mario";
let userAge = 30;
// Funzioni separate
function printUser(name, age) {{ '{' }}
console.log(name, age);
{{ '}' }}
Approccio OOP:
// Dati e comportamenti insieme
class User {{ '{' }}
name: string;
age: number;
print() {{ '{' }}
console.log(this.name, this.age);
{{ '}' }}
{{ '}' }}
I Quattro Pilastri della OOP
1. Incapsulamento
Nasconde i dettagli interni, esponendo solo ciò che è necessario attraverso modificatori di accesso (private, protected, public).
class BankAccount {{ '{' }}
private balance: number = 0;
deposit(amount: number) {{ '{' }}
if (amount > 0) this.balance += amount;
{{ '}' }}
getBalance() {{ '{' }}
return this.balance;
{{ '}' }}
{{ '}' }}
const account = new BankAccount();
account.deposit(100);
console.log(account.getBalance()); // 100
// account.balance = 999; // ❌ Errore: balance è private
2. Ereditarietà
Permette di creare nuove classi basate su classi esistenti, riutilizzando e estendendo funzionalità.
class Animal {{ '{' }}
protected name: string;
constructor(name: string) {{ '{' }}
this.name = name;
{{ '}' }}
move() {{ '{' }}
console.log(`






