🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi Costruttori JavaScript

Codegrind Team•Jul 12 2024

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