Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti

Attributi

Una classe vuota non è molto utile. Per permettere a un oggetto di portare con sé dati propri, si danno alla classe degli attributi. Un attributo si dichiara dentro la classe con la parola chiave has:

class Dog {
    has $.name;
    has $.age;
}

Ogni oggetto della classe riceve la propria copia di questi attributi. I loro valori si impostano quando crei l’oggetto, passandoli a new come argomenti nominati:

class Dog {
    has $.name;
    has $.age;
}

my $rex = Dog.new(name => 'Rex', age => 3);

Il $. in has $.name fa due cose insieme: dichiara un attributo e crea un metodo con lo stesso nome — un accessore — che restituisce il valore dell’attributo:

say $rex.name; # Rex
say $rex.age;  # 3

Oggetti diversi contengono valori propri, indipendenti l’uno dall’altro:

my $rex  = Dog.new(name => 'Rex',  age => 3);
my $fido = Dog.new(name => 'Fido', age => 5);

say $rex.name;  # Rex
say $fido.name; # Fido

Gli argomenti che seguono mostrano come rendere modificabili gli attributi e come dare loro dei valori predefiniti. (C’è anche un modo per dichiarare attributi privati, nascosti all’esterno; ci torneremo una volta introdotti i metodi.)

Argomenti di questa sezione

Pratica

Risolvi 1 quiz sul contenuto di questa sezione.

Esercizi

Questa sezione contiene 4 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.

  1. Una classe punto
  2. Un contatore
  3. Un libro
  4. Un’etichetta modificabile

Soluzione: Indicate il tipo   |   Attributi in lettura e scrittura