Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten

Attributen

Een lege klasse is niet erg nuttig. Om een object zijn eigen gegevens te laten dragen, geef je de klasse attributen. Een attribuut wordt binnen de klasse gedeclareerd met het sleutelwoord has:

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

Elk object van de klasse krijgt zijn eigen exemplaar van deze attributen. Je stelt hun waarden in wanneer je het object maakt, door ze als benoemde argumenten aan new mee te geven:

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

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

De $. in has $.name doet twee dingen tegelijk: hij declareert een attribuut, en hij maakt een methode met dezelfde naam — een accessor — die de waarde van het attribuut teruggeeft:

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

Verschillende objecten bevatten hun eigen waarden, onafhankelijk van elkaar:

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

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

De volgende onderwerpen laten zien hoe je attributen wijzigbaar maakt en hoe je ze standaardwaarden geeft. (Er is ook een manier om private attributen te declareren, verborgen voor de buitenwereld; daar komen we op terug zodra methoden zijn geïntroduceerd.)

Onderwerpen in deze sectie

Praktijk

Maak de 1 quiz over de inhoud van deze sectie.

Oefeningen

Deze sectie bevat 4 oefeningen. Bekijk alle onderwerpen van deze sectie voordat je aan de oefeningen begint.

  1. Een puntklasse
  2. Een teller
  3. Een boek
  4. Een wijzigbaar label

Cursusnavigatie

Oplossing: Noem het type   |   Lees- en schrijfbare attributen