Menu
Coddy logo textTech

Fundamentos de Construtores

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy — lição 8 de 110.

Um construtor é um método especial que é executado automaticamente quando você cria um novo objeto. Ele inicializa as variáveis de instância do objeto no exato momento da criação.

Aqui está um exemplo de uma classe com um construtor:

class Dog {
  String name;
  String breed;

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

O construtor tem o mesmo nome que a classe. Os parâmetros são passados ao criar o objeto.

Crie objetos passando argumentos para o construtor:

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

Acesse as variáveis definidas pelo construtor:

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

Saída:

Rex
German Shepherd
Buddy
Golden Retriever

O Dart também oferece uma sintaxe de construtor abreviada usando this.variableName diretamente na lista de parâmetros:

class Dog {
  String name;
  String breed;

  // Abreviação: atribui automaticamente os parâmetros às variáveis de instância
  Dog(this.name, this.breed);
}

Ambas as versões produzem o mesmo resultado. A forma abreviada é um recurso popular do Dart que remove a necessidade de escrever this.name = name manualmente.

Você também pode adicionar valores de parâmetros padrão:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age por padrão é 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age por padrão é 1

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

Ponto Chave: Construtores garantem que cada objeto seja devidamente inicializado com dados no momento em que é criado, poupando você de definir variáveis manualmente depois.

challenge icon

Desafio

Fácil

Você recebeu arquivos PHP (book.dart e driver.dart) para implementar um sistema de livros.

Suas tarefas:

  • Complete a classe Book em book.dart adicionando um construtor que inicializa title, author e pages — use a sintaxe abreviada do Dart Book(this.title, this.author, this.pages);
  • Em driver.dart, crie um objeto Book para 'Harry Potter' de 'J.K. Rowling' com 400 páginas

Siga os comentários TODO em cada arquivo.

Folha de consulta

Um construtor é um método especial que é executado automaticamente quando você cria um novo objeto. Ele inicializa as variáveis de instância do objeto no momento da criação.

O construtor tem o mesmo nome que a classe:

class Dog {
  String name;
  String breed;

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

Crie objetos passando argumentos para o construtor:

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

O Dart oferece uma sintaxe de construtor abreviada usando this.variableName diretamente na lista de parâmetros:

class Dog {
  String name;
  String breed;

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

Você pode adicionar valores de parâmetro padrão usando parâmetros posicionais opcionais:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age assume 1 por padrão
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age assume 1 por padrão

Experimente você mesmo

import 'book.dart';

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

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
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