La relazione «è un»
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 25 di 56.
La relazione "è un" è un semplice test per determinare quando l'ereditarietà ha senso. Se puoi dire "X è un Y" e suona corretto, allora probabilmente X dovrebbe ereditare da Y.
Corretto (usa l'ereditarietà):
- "Un cane è un animale" →
class Dog extends Animal
- "Un'auto è un veicolo" →
class Car extends Vehicle
- "Un libro di testo è un libro" →
class Textbook extends Book
Errato (non usare l’ereditarietà):
- "Un conducente è un’auto" → No, un conducente usa un’auto
- "Una ruota è un automobile" → No, una ruota è parte di un'automobile
- "Uno studente è un aula" → No, uno studente si trova in un’aula
Ad esempio, consideriamo due oggetti:
// Classe base - ciò che sono tutti
class Book {
constructor(title, author, pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
read() {
console.log(`Reading ${this.title} by ${this.author}`);
}
}
// Un Novel è un Book (ereditarietà corretta)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
// Utilizzo delle classi
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - ereditato da Book
Sfida
Ti viene data una classe ElectronicDevice e una classe Smartphone. Uno Smartphone è un tipo di ElectronicDevice con funzionalità aggiuntive. Il tuo compito è creare un oggetto `myPhone` con brand "Samsung" e modello “Galaxy S23”.
Provalo tu
import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';
// TODO: Crea un oggetto `myPhone` con marca "Samsung" e modello “Galaxy S23”.
// Codice di test - non modificare
console.log(myPhone.turnOn()); // Dovrebbe produrre "Samsung Galaxy S23 is now ON"Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Oggetti e la keyword this
Ripasso rapido: oggettiAggiungere metodi agli oggettiCapire la keyword thisFunzioni costruttriciLa keyword newSfida di ripasso7Ereditarietà e parola chiave extends
EreditarietàLa relazione «è un»La parola chiave extendsIl metodo super()Ereditare proprietà e metodiSfida di ripasso13Composizione vs. ereditarietà
«Ha-un» vs. «è-un»I limiti dell’ereditarietà profondaCostruire oggetti2Organizzare il codice
Cosa sono i moduli?Esportare con exportImportare con importExport predefiniti vs. export nominati5Incapsulamento e accesso
IncapsulamentoCampi di classe pubblici e privatiMetodi privatiSfida di riepilogo8Organizzare il codice OOP
Organizzare le classi in moduli11Progetto: Un renderizzatore di forme
Configurazione: classe Shape ed esportazioneEreditarietà della classe CircleOverride e metodo areaContatore statico di Shape14Sistema di gestione della biblioteca
Progettare la bibliotecaClasse Book con composizioneValidazione dell'autore del libroEsercitati da solo: Compilatore JavaScript online