CodeGym /Corsi /Frontend SELF IT /Costruttori e metodi

Costruttori e metodi

Frontend SELF IT
Livello 39 , Lezione 5
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
Опрос
Introduzione ai Classi,  39 уровень,  5 лекция
недоступен
Introduzione ai Classi
Introduzione ai Classi
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION