Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos

Atributos

Una clase vacía no es muy útil. Para que un objeto lleve consigo datos propios, se dan a la clase unos atributos. Un atributo se declara dentro de la clase con la palabra clave has:

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

Cada objeto de la clase recibe su propia copia de estos atributos. Sus valores se fijan al crear el objeto, pasándolos a new como argumentos con nombre:

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

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

El $. de has $.name hace dos cosas a la vez: declara un atributo y crea un método con el mismo nombre — un accesor — que devuelve el valor del atributo:

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

Objetos distintos guardan valores propios, independientes entre sí:

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

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

Los temas siguientes muestran cómo hacer modificables los atributos y cómo darles valores por defecto. (También existe una manera de declarar atributos privados, ocultos al exterior; volveremos a ella una vez introducidos los métodos.)

Temas de esta sección

Práctica

Resuelve 1 cuestionario sobre el contenido de esta sección.

Ejercicios

Esta sección contiene 4 ejercicios. Mira todos los temas de esta sección antes de empezar los ejercicios.

  1. Una clase punto
  2. Un contador
  3. Un libro
  4. Una etiqueta modificable

Solución: Nombre el tipo   |   Atributos de lectura y escritura