Menu
Coddy logo textTech

Recapitulação - Sistema Animal

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

challenge icon

Desafio

Fácil

Vamos construir um sistema animal completo que reúne tudo o que você aprendeu sobre mixins! Você criará uma classe base Animal, mixins de comportamento que usam a palavra-chave on e classes de animais específicas que combinam essas capacidades de diferentes maneiras.

Você organizará seu código em três arquivos:

  • animal.dart: Defina sua classe base da qual todos os animais herdarão:
    • Uma classe Animal com uma propriedade String name e um construtor
    • Um método describe() que imprime '$name is an animal'
  • behaviors.dart: Importe o arquivo animal e crie três mixins de comportamento, cada um restrito a Animal usando a palavra-chave on:
    • Um mixin Swimming com um método swim() que imprime '$name is swimming'
    • Um mixin Flying com um método fly() que imprime '$name is flying'
    • Um mixin Walking com um método walk() que imprime '$name is walking'
  • main.dart: Importe ambos os arquivos e crie três classes de animais que combinam herança com diferentes combinações de mixins:
    • Uma classe Duck que estende Animal e usa todos os três mixins (Swimming, Flying, Walking)
    • Uma classe Fish que estende Animal e usa apenas o mixin Swimming
    • Uma classe Bird que estende Animal e usa os mixins Flying e Walking
    Em seguida, demonstre as capacidades de cada animal:
    • Crie um Duck chamado 'Donald', chame describe(), depois swim(), fly() e walk()
    • Imprima uma linha vazia
    • Crie um Fish chamado 'Nemo', chame describe(), depois swim()
    • Imprima uma linha vazia
    • Crie um Bird chamado 'Tweety', chame describe(), depois fly() e walk()

Cada mixin pode acessar a propriedade name por causa da restrição on Animal, garantindo a segurança de tipos enquanto fornece uma composição de comportamento flexível.

Saída esperada:

Donald is an animal
Donald is swimming
Donald is flying
Donald is walking

Nemo is an animal
Nemo is swimming

Tweety is an animal
Tweety is flying
Tweety is walking

Experimente você mesmo

import 'animal.dart';
import 'behaviors.dart';

// TODO: Criar a classe Duck que estende Animal e usa os mixins Swimming, Flying, Walking
class Duck {
  // TODO: Implementar a classe Duck
}

// TODO: Criar a classe Fish que estende Animal e usa apenas o mixin Swimming
class Fish {
  // TODO: Implementar a classe Fish
}

// TODO: Criar a classe Bird que estende Animal e usa os mixins Flying e Walking
class Bird {
  // TODO: Implementar a classe Bird
}

void main() {
  // TODO: Criar um Duck chamado 'Donald'
  // Chamar describe(), swim(), fly(), walk()
  
  // TODO: Imprimir uma linha vazia
  
  // TODO: Criar um Fish chamado 'Nemo'
  // Chamar describe(), swim()
  
  // TODO: Imprimir uma linha vazia
  
  // TODO: Criar um Bird chamado 'Tweety'
  // Chamar describe(), fly(), walk()
}

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