Menu
CoddyTech

Noções básicas 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 momento da criação.

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

class Dog {
  late String name; // late: definido no corpo do construtor
  late 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

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

class Dog {
  String name;
  String breed;

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

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

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

class Cat {
  String name;
  int age;

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

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

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

Ponto-chave: os construtores garantem que todo objeto seja inicializado corretamente com dados no momento em que é criado, evitando que você precise definir variáveis manualmente depois.

challenge icon

Desafio

Fácil

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

Suas tarefas:

  • Conclua a classe Book em book.dart adicionando um construtor que inicialize 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.

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

Pratique por conta própria: Compilador de Dart online