Menu
Coddy logo textTech

Conceptos básicos de constructores

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 8 de 110.

Un constructor es un método especial que se ejecuta automáticamente cuando creas un objeto nuevo. Inicializa las variables de instancia del objeto justo en el momento de la creación.

Aquí hay un ejemplo de una clase con un constructor:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

El constructor tiene el mismo nombre que la clase. Los parámetros se pasan al crear el objeto.

Crea objetos pasando argumentos al constructor:

Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');

Accede a las variables establecidas por el constructor:

print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);

Salida:

Rex
German Shepherd
Buddy
Golden Retriever

Dart también ofrece una sintaxis de constructor abreviada utilizando this.variableName directamente en la lista de parámetros:

class Dog {
  String name;
  String breed;

  // Abreviatura: asigna automáticamente los parámetros a las variables de instancia
  Dog(this.name, this.breed);
}

Ambas versiones producen el mismo resultado. La forma abreviada es una característica popular de Dart que elimina la necesidad de escribir this.name = name manualmente.

También puedes añadir valores de parámetros por defecto:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // la edad por defecto es 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // la edad por defecto es 1

print('${fluffy.name} is ${fluffy.age}');    // Fluffy is 3
print('${whiskers.name} is ${whiskers.age}'); // Whiskers is 1

Punto clave: Los constructores aseguran que cada objeto se inicialice correctamente con datos en el momento en que se crea, evitándote tener que configurar las variables manualmente después.

challenge icon

Desafío

Fácil

Se te proporcionan archivos PHP (book.dart y driver.dart) para implementar un sistema de libros.

Tus tareas:

  • Completa la clase Book en book.dart agregando un constructor que inicialice title, author y pages — utiliza la sintaxis abreviada de Dart Book(this.title, this.author, this.pages);
  • En driver.dart, crea un objeto Book para 'Harry Potter' de 'J.K. Rowling' con 400 páginas

Sigue los comentarios TODO en cada archivo.

Hoja de referencia

Un constructor es un método especial que se ejecuta automáticamente al crear un nuevo objeto. Inicializa las variables de instancia del objeto en el momento de la creación.

El constructor tiene el mismo nombre que la clase:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

Cree objetos pasando argumentos al constructor:

Dog rex = Dog('Rex', 'German Shepherd');

Dart ofrece una sintaxis abreviada para constructores utilizando this.variableName directamente en la lista de parámetros:

class Dog {
  String name;
  String breed;

  Dog(this.name, this.breed);
}

Puede añadir valores de parámetros por defecto utilizando parámetros posicionales opcionales:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age por defecto es 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age por defecto es 1

Pruébalo tú mismo

import 'book.dart';

void main() {
  // TODO: Crea un objeto Book con:
  // title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
  Book myBook = ?;

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos