Els constructors són una part fonamental de la programació orientada a objectes en Dart. S'utilitzen per inicialitzar objectes quan es creen. En aquesta secció, aprendrem què són els constructors, com es defineixen i utilitzen, i veurem alguns exemples pràctics.

Què és un Constructor?

Un constructor és una funció especial que es crida automàticament quan es crea una instància d'una classe. El seu propòsit principal és inicialitzar els membres de la classe.

Característiques dels Constructors:

  • Tenen el mateix nom que la classe.
  • No tenen un tipus de retorn, ni tan sols void.
  • Es poden sobrecarregar per proporcionar diferents maneres d'inicialitzar un objecte.

Tipus de Constructors

Constructor per Defecte

Si no es defineix cap constructor en una classe, Dart proporciona un constructor per defecte que no pren cap argument i no fa res especial.

class Persona {
  String nom;
  int edat;
}

void main() {
  var persona = Persona(); // Utilitza el constructor per defecte
  print(persona.nom); // null
  print(persona.edat); // null
}

Constructor Personalitzat

Podem definir un constructor personalitzat per inicialitzar els membres de la classe amb valors específics.

class Persona {
  String nom;
  int edat;

  // Constructor personalitzat
  Persona(String nom, int edat) {
    this.nom = nom;
    this.edat = edat;
  }
}

void main() {
  var persona = Persona('Joan', 30);
  print(persona.nom); // Joan
  print(persona.edat); // 30
}

Constructor Nombrat

Els constructors nombrats permeten crear múltiples constructors per a una classe, cadascun amb un nom diferent.

class Persona {
  String nom;
  int edat;

  // Constructor principal
  Persona(this.nom, this.edat);

  // Constructor nombrat
  Persona.jove(String nom) {
    this.nom = nom;
    this.edat = 18;
  }
}

void main() {
  var persona1 = Persona('Joan', 30);
  var persona2 = Persona.jove('Anna');
  print(persona1.nom); // Joan
  print(persona1.edat); // 30
  print(persona2.nom); // Anna
  print(persona2.edat); // 18
}

Constructor de Redirecció

Un constructor de redirecció crida a un altre constructor de la mateixa classe.

class Persona {
  String nom;
  int edat;

  // Constructor principal
  Persona(this.nom, this.edat);

  // Constructor de redirecció
  Persona.jove(String nom) : this(nom, 18);
}

void main() {
  var persona = Persona.jove('Anna');
  print(persona.nom); // Anna
  print(persona.edat); // 18
}

Constructor Const

Els constructors const creen objectes constants. Tots els membres de la classe han de ser finals per utilitzar un constructor const.

class Punt {
  final int x;
  final int y;

  // Constructor const
  const Punt(this.x, this.y);
}

void main() {
  var punt1 = const Punt(2, 3);
  var punt2 = const Punt(2, 3);
  print(identical(punt1, punt2)); // true
}

Exercicis Pràctics

Exercici 1: Constructor Personalitzat

Defineix una classe Cotxe amb els membres marca i model. Crea un constructor personalitzat per inicialitzar aquests membres.

class Cotxe {
  String marca;
  String model;

  // Constructor personalitzat
  Cotxe(this.marca, this.model);
}

void main() {
  var cotxe = Cotxe('Toyota', 'Corolla');
  print(cotxe.marca); // Toyota
  print(cotxe.model); // Corolla
}

Exercici 2: Constructor Nombrat

Defineix una classe Rectangle amb els membres ample i alt. Crea un constructor principal i un constructor nombrat quadradet que inicialitzi ample i alt amb el mateix valor.

class Rectangle {
  double ample;
  double alt;

  // Constructor principal
  Rectangle(this.ample, this.alt);

  // Constructor nombrat
  Rectangle.quadradet(double costat) : this(costat, costat);
}

void main() {
  var rectangle = Rectangle(4.0, 5.0);
  var quadradet = Rectangle.quadradet(3.0);
  print(rectangle.ample); // 4.0
  print(rectangle.alt); // 5.0
  print(quadradet.ample); // 3.0
  print(quadradet.alt); // 3.0
}

Resum

En aquesta secció, hem après sobre els constructors en Dart, incloent-hi els constructors per defecte, personalitzats, nombrats, de redirecció i const. Els constructors són essencials per inicialitzar objectes i proporcionar flexibilitat en la manera com es creen les instàncies de les classes. Amb els exercicis pràctics, has tingut l'oportunitat de posar en pràctica aquests conceptes i veure com funcionen en codi real.

© Copyright 2024. Tots els drets reservats