Menu
Coddy logo textTech

Construtores Nomeados

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy. Lição 11 de 110.

Construtores nomeados permitem que você crie múltiplos construtores para uma classe, cada um com um nome descritivo que esclarece seu propósito. Isso é especialmente útil quando você precisa de diferentes maneiras de inicializar um objeto.

A sintaxe usa o nome da classe seguido por um ponto e o nome do construtor:

class Point {
  int x;
  int y;

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

  // Construtor nomeado para o ponto de origem
  Point.origin() : x = 0, y = 0;

  // Construtor nomeado a partir de um único valor
  Point.diagonal(int value) : x = value, y = value;
}

Cada construtor nomeado fornece uma maneira clara e legível de criar 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)

Construtores nomeados tornam seu código mais expressivo. Em vez de adivinhar o que Point(0, 0) significa, Point.origin() comunica imediatamente a intenção. Este padrão é comum em bibliotecas Dart e ajuda a criar código autodocumentado.

challenge icon

Desafio

Fácil

Vamos construir um conversor de temperatura que demonstra o poder dos construtores nomeados. Você criará uma classe Temperature que pode ser inicializada de diferentes maneiras, dependendo da unidade com a qual você está começando.

Você organizará seu código em dois arquivos:

  • temperature.dart: Defina uma classe Temperature com uma variável de instância double celsius. Sua classe deve fornecer três maneiras de criar uma temperatura:
    • Um construtor regular Temperature(this.celsius) que recebe um valor em Celsius diretamente
    • Um construtor nomeado Temperature.fromFahrenheit que aceita um valor em Fahrenheit e o converte para Celsius usando a fórmula: (fahrenheit - 32) * 5 / 9
    • Um construtor nomeado Temperature.freezing() que cria uma temperatura no ponto de congelamento (0 graus Celsius)
    Adicione um método display() que imprime: '${celsius}C'
  • main.dart: Importe sua classe de temperatura e crie três objetos de temperatura:
    • Um usando o construtor regular com 25.0
    • Um usando fromFahrenheit com 98.6
    • Um usando freezing()
    Chame display() em cada temperatura na ordem listada acima.

Formato de saída esperado:

25.0C
37.0C
0.0C

Experimente você mesmo

import 'temperature.dart';

void main() {
  // TODO: Crie uma Temperature usando o construtor regular com 25.0
  
  // TODO: Crie uma Temperature usando fromFahrenheit com 98.6
  
  // TODO: Crie uma Temperature usando freezing()
  
  // TODO: Chame display() em cada temperatura em ordem
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de Dart online