📢 Nuovo Corso Laravel API disponibile!

Esercizi Costruttori JavaScript

Ecco degli esercizi con soluzione per praticare l’uso dei costruttori delle classi in JavaScript.

Esercizio 1: Creare una Classe Semplice

Creare una classe `Persona` con un costruttore che accetta il nome e l'età, e metodi per ottenere il nome e l'età.
class Persona {
constructor(nome, eta) {
this.nome = nome;
this.eta = eta;
}
getNome() {
return this.nome;
}
getEta() {
return this.eta;
}
}
const persona = new Persona("Mario", 30);
console.log(persona.getNome()); // Mario
console.log(persona.getEta()); // 30

Esercizio 2: Aggiungere Metodi alla Classe

Aggiungere un metodo `saluta` alla classe `Persona` che restituisce un messaggio di saluto.
class Persona {
constructor(nome, eta) {
this.nome = nome;
this.eta = eta;
}
getNome() {
return this.nome;
}
getEta() {
return this.eta;
}
saluta() {
return `Ciao, mi chiamo ${this.nome} e ho ${this.eta} anni.`;
}
}
const persona = new Persona("Mario", 30);
console.log(persona.saluta()); // Ciao, mi chiamo Mario e ho 30 anni.

Esercizio 3: Creare una Sottoclasse

Creare una sottoclasse `Studente` che eredita da `Persona` e aggiungere una proprietà `corso`.
class Persona {
constructor(nome, eta) {
this.nome = nome;
this.eta = eta;
}
getNome() {
return this.nome;
}
getEta() {
return this.eta;
}
}
class Studente extends Persona {
constructor(nome, eta, corso) {
super(nome, eta);
this.corso = corso;
}
getCorso() {
return this.corso;
}
}
const studente = new Studente("Mario", 20, "Informatica");
console.log(studente.getNome()); // Mario
console.log(studente.getEta()); // 20
console.log(studente.getCorso()); // Informatica

Esercizio 4: Metodo Override

Override del metodo `saluta` nella sottoclasse `Studente` per includere il corso di studi nel saluto.
class Persona {
constructor(nome, eta) {
this.nome = nome;
this.eta = eta;
}
saluta() {
return `Ciao, mi chiamo ${this.nome} e ho ${this.eta} anni.`;
}
}
class Studente extends Persona {
constructor(nome, eta, corso) {
super(nome, eta);
this.corso = corso;
}
saluta() {
return `${super.saluta()} Studio ${this.corso}.`;
}
}
const studente = new Studente("Mario", 20, "Informatica");
console.log(studente.saluta()); // Ciao, mi chiamo Mario e ho 20 anni. Studio Informatica.

Esercizio 5: Uso di Valori Predefiniti nel Costruttore

Aggiungere un valore predefinito per l'età nel costruttore della classe `Persona`.
class Persona {
constructor(nome, eta = 18) {
this.nome = nome;
this.eta = eta;
}
getNome() {
return this.nome;
}
getEta() {
return this.eta;
}
}
const persona1 = new Persona("Mario");
const persona2 = new Persona("Luigi", 25);
console.log(persona1.getNome(), persona1.getEta()); // Mario 18
console.log(persona2.getNome(), persona2.getEta()); // Luigi 25

Esercizio 6: Classe con Metodi Statici

Aggiungere un metodo statico `creaPersona` che accetta un nome e un'età e restituisce un'istanza della classe `Persona`.
class Persona {
constructor(nome, eta) {
this.nome = nome;
this.eta = eta;
}
static creaPersona(nome, eta) {
return new Persona(nome, eta);
}
getNome() {
return this.nome;
}
getEta() {
return this.eta;
}
}
const persona = Persona.creaPersona("Mario", 30);
console.log(persona.getNome()); // Mario
console.log(persona.getEta()); // 30

Esercizio 7: Costruttore con Controllo degli Argomenti

Aggiungere un controllo nel costruttore della classe `Persona` per assicurarsi che l'età sia un numero positivo.
class Persona {
constructor(nome, eta) {
if (eta <= 0) {
throw new Error("L'età deve essere un numero positivo.");
}
this.nome = nome;
this.eta = eta;
}
getNome() {
return this.nome;
}
getEta() {
return this.eta;
}
}
try {
const persona = new Persona("Mario", -5);
} catch (e) {
console.log(e.message); // L'età deve essere un numero positivo.
}
const personaValida = new Persona("Luigi", 25);
console.log(personaValida.getNome(), personaValida.getEta()); // Luigi 25