CodeGym/Corsi/Frontend SELF IT/Costruttori e metodi

Costruttori e metodi

Disponibile

6.1 Costruttori di classi

I costruttori e i metodi delle classi sono elementi fondamentali della programmazione orientata agli oggetti in JavaScript. Consentono di creare e inizializzare oggetti, oltre a definirne il comportamento. Di seguito esamineremo come funzionano i costruttori e i metodi delle classi e come utilizzarli.

Che cos'è un costruttore?

Un costruttore è un metodo speciale di una classe che viene chiamato quando viene creato un nuovo istanza della classe. Viene utilizzato per inizializzare un oggetto, impostare i valori delle sue proprietà ed eseguire altre attività iniziali.

Definizione di un costruttore

Un costruttore è definito utilizzando la parola chiave constructor. All'interno del costruttore, tramite la parola chiave this è possibile accedere alle proprietà e ai metodi dell'oggetto.

Sintassi:

class ClassName {
  constructor(parametri) {
    // Inizializzazione dell'oggetto
  }
}

Esempio:

All'interno della classe Person il metodo constructor accetta due parametri: name e age.

Questi parametri vengono utilizzati per inizializzare le proprietà name e age dell'oggetto creato.

JavaScript
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}

const person1 = new Person('Alice', 30);
const person2 = new Person('Bob', 25);

console.log(person1.name); // Mostrerà: Alice
console.log(person2.age);  // Mostrerà: 25

Costruttore predefinito

Se un costruttore non è definito esplicitamente, JavaScript crea automaticamente un costruttore vuoto predefinito.

Esempio:

JavaScript
class Animal {}

const animal = new Animal();
console.log(animal); // Mostrerà il contenuto della classe Animal {}

4.2 Metodi di classe

I metodi di una classe vengono definiti all'interno del corpo della classe e forniscono funzionalità per gli oggetti creati da quella classe. I metodi vengono automaticamente aggiunti al prototipo della classe, il che consente a tutte le istanze della classe di ereditarli e utilizzarli.

Sintassi:

class ClassName {
  constructor(parametri) { // Inizializzazione dell'oggetto }
  metodo1() { // Corpo del metodo }
  metodo2() { // Corpo del metodo }
}

Esempio:

JavaScript
class Car {
  constructor(brand, model) {
    this.brand = brand;
    this.model = model;
    this.mileage = 0;
  }

  drive(distance) {
    this.mileage += distance;
    console.log(`${this.brand} ${this.model} drove ${distance} miles. Total mileage: ${this.mileage}`);
  }

  getDetails() {
    return `${this.brand} ${this.model}, Mileage: ${this.mileage}`;
  }
}

const myCar = new Car('Toyota', 'Camry');
myCar.drive(50); // "Toyota Camry ha percorso 50 miglia. Chilometraggio totale: 50"

console.log(myCar.getDetails()); // "Toyota Camry, Chilometraggio: 50"

Spiegazione:

  • Nella classe Car sono definiti due metodi: drive() e getDetails()
  • Il metodo drive() aumenta il chilometraggio dell'auto e mostra informazioni sulla distanza percorsa
  • Il metodo getDetails() restituisce una stringa con informazioni sull'auto

6.3 Metodi privati

Con l'introduzione delle nuove specifiche ECMAScript, è diventato possibile creare metodi e proprietà private, che non sono accessibili al di fuori della classe. Per fare ciò, si utilizza il simbolo # come parte del nome.

Esempio di metodi e proprietà private:

JavaScript
class BankAccount {
  #balance = 0;

  constructor(initialBalance) {
    this.#balance = initialBalance;
  }

  #validateAmount(amount) {
    if (amount <= 0) {
      throw new Error('L\'importo deve essere positivo.');
    }
  }

  deposit(amount) {
    this.#validateAmount(amount);
    this.#balance += amount;
    console.log(`Deposited ${amount}. New balance: ${this.#balance}`);
  }

  withdraw(amount) {
    this.#validateAmount(amount);
    if (amount > this.#balance) {
      throw new Error('Fondi insufficienti.');
    }
    this.#balance -= amount;
    console.log(`Withdrew ${amount}. New balance: ${this.#balance}`);
  }

  getBalance() {
    return this.#balance;
  }
}

const account = new BankAccount(100);
account.deposit(50); // Mostrerà: Deposited 50. New balance: 150
account.withdraw(30); // Mostrerà: Withdrew 30. New balance: 120
console.log(account.getBalance()); // Mostrerà: 120

// Tentativo di accesso a un metodo o proprietà privata causerà un errore
account.#balance; // SyntaxError
account.#validateAmount(50); // SyntaxError
1
Compito
Frontend SELF IT,  livello 39lezione 5
Bloccato
Classe Product
Classe Product
1
Compito
Frontend SELF IT,  livello 39lezione 5
Bloccato
Classe Library
Classe Library
Commenti
  • Popolari
  • Nuovi
  • Vecchi
Devi avere effettuato l'accesso per lasciare un commento
Questa pagina non ha ancora commenti