La programmazione orientata agli oggetti (OOP) è un paradigma di programmazione che si basa sull’idea di “oggetti”, che possono contenere dati e codice: dati sotto forma di proprietà (spesso noti come attributi o campi) e codice come metodi (funzioni o procedure).
Sebbene JavaScript non sia un linguaggio di programmazione orientato agli oggetti nel senso tradizionale, supporta molti concetti di OOP, come gli oggetti e l’ereditarietà, anche se li implementa in modo diverso rispetto alla maggior parte dei linguaggi di programmazione OOP.
Ecco come eseguire la programmazione OOP in JavaScript:
1. Definizione degli oggetti: In JavaScript, gli oggetti possono essere definiti come istanze di una classe o come oggetti letterali. Un oggetto letterale è un modo semplice per creare un singolo oggetto. Per esempio:
```
var auto = {
marca: ‘Toyota’,
modello: ‘Corolla’,
anno: 2005,
avvia: function() {
console.log(‘Auto avviata’);
}
};
```
1. Classi: JavaScript supporta la nozione di “classi” come un modello per la creazione di oggetti. Le classi sono un concetto introdotto in ES6 (la versione del 2015 di JavaScript) e ci permettono di organizzare il nostro codice in maniera più strutturata. Esempio:
```
class Auto {
constructor(marca, modello, anno) {
this.marca = marca;
this.modello = modello;
this.anno = anno;
}
var miaAuto = new Auto(‘Toyota’, ‘Corolla’, 2005);
miaAuto.avvia(); // Stampa “Auto avviata“
```
1. Ereditarietà: JavaScript supporta l’ereditarietà, che permette di creare nuove “classi” che ereditano proprietà e metodi da classi esistenti. Lo fa attraverso un meccanismo chiamato “prototipazione”. Esempio:
```
class AutoSportiva extends Auto {
constructor(marca, modello, anno, velocitaMax) {
super(marca, modello, anno);
this.velocitaMax = velocitaMax;
}
var miaAutoSportiva = new AutoSportiva(‘Ferrari’, ’488 GTB’, 2015, 330);
miaAutoSportiva.avvia(); // Stampa “Auto avviata” e “Auto sportiva avviata“
```
Ricorda che le best practice della programmazione OOP, come l’incapsulamento e l’astrazione, dovrebbero essere rispettate anche in JavaScript, anche se il linguaggio non forza a farlo.