Menu
Coddy logo textTech

Constructores nombrados

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy. Lección 11 de 110.

Los constructores con nombre le permiten crear múltiples constructores para una clase, cada uno con un nombre descriptivo que aclara su propósito. Esto es especialmente útil cuando necesita diferentes formas de inicializar un objeto.

La sintaxis utiliza el nombre de la clase seguido de un punto y el nombre del constructor:

class Point {
  int x;
  int y;

  // Constructor regular
  Point(this.x, this.y);

  // Constructor con nombre para el punto de origen
  Point.origin() : x = 0, y = 0;

  // Constructor con nombre a partir de un solo valor
  Point.diagonal(int value) : x = value, y = value;
}

Cada constructor con nombre proporciona una forma clara y legible de crear objetos:

Point p1 = Point(3, 5);
Point p2 = Point.origin();
Point p3 = Point.diagonal(10);

print('p1: (${p1.x}, ${p1.y})'); // p1: (3, 5)
print('p2: (${p2.x}, ${p2.y})'); // p2: (0, 0)
print('p3: (${p3.x}, ${p3.y})'); // p3: (10, 10)

Los constructores con nombre hacen que tu código sea más expresivo. En lugar de adivinar qué significa Point(0, 0), Point.origin() comunica inmediatamente la intención. Este patrón es común en las librerías de Dart y ayuda a crear código autodocumentado.

challenge icon

Desafío

Fácil

Construyamos un convertidor de temperatura que muestre el poder de los constructores con nombre. Crearás una clase Temperature que se puede inicializar de distintas maneras según la unidad con la que comiences.

Organizarás tu código en dos archivos:

  • temperature.dart: Define una clase Temperature con una variable de instancia double celsius. Tu clase debe proporcionar tres maneras de crear una temperatura:
    • Un constructor normal Temperature(this.celsius) que recibe directamente un valor en Celsius
    • Un constructor con nombre Temperature.fromFahrenheit que acepta un valor en Fahrenheit y lo convierte a Celsius usando la fórmula: (fahrenheit - 32) * 5 / 9
    • Un constructor con nombre Temperature.freezing() que crea una temperatura en el punto de congelación (0 grados Celsius)
    Añade un método display() que muestre: [celsius]C
  • main.dart: Importa tu clase de temperatura y crea tres objetos de temperatura:
    • Uno usando el constructor normal con 25.0
    • Uno usando fromFahrenheit con 98.6
    • Uno usando freezing()
    Llama a display() en cada temperatura en el orden indicado arriba.

Formato de salida esperado:

25.0C
37.0C
0.0C

Pruébalo tú mismo

import 'temperature.dart';

void main() {
  // TODO: Crea una Temperature usando el constructor regular con 25.0
  
  // TODO: Crea una Temperature usando fromFahrenheit con 98.6
  
  // TODO: Crea una Temperature usando freezing()
  
  // TODO: Llama a display() en cada temperatura en orden
}
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

Practica por tu cuenta: Compilador de Dart online