Menu
Coddy logo textTech

Resumen - Sistema Animal

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 56 de 110.

challenge icon

Desafío

Fácil

¡Vamos a construir un sistema de animales completo que reúna todo lo que has aprendido sobre los mixins! Crearás una clase base Animal, mixins de comportamiento que utilicen la palabra clave on, y clases de animales específicas que combinen estas capacidades de diferentes maneras.

Organizarás tu código en tres archivos:

  • animal.dart: Define tu clase base de la cual heredarán todos los animales:
    • Una clase Animal con una propiedad String name y un constructor
    • Un método describe() que imprima '$name is an animal'
  • behaviors.dart: Importa el archivo de animal y crea tres mixins de comportamiento, cada uno restringido a Animal usando la palabra clave on:
    • Un mixin Swimming con un método swim() que imprima '$name is swimming'
    • Un mixin Flying con un método fly() que imprima '$name is flying'
    • Un mixin Walking con un método walk() que imprima '$name is walking'
  • main.dart: Importa ambos archivos y crea tres clases de animales que combinen la herencia con diferentes combinaciones de mixins:
    • Una clase Duck que extienda Animal y use los tres mixins (Swimming, Flying, Walking)
    • Una clase Fish que extienda Animal y use solo el mixin Swimming
    • Una clase Bird que extienda Animal y use los mixins Flying y Walking
    Luego demuestra las capacidades de cada animal:
    • Crea un Duck llamado 'Donald', llama a describe(), luego a swim(), fly(), y walk()
    • Imprime una línea vacía
    • Crea un Fish llamado 'Nemo', llama a describe(), luego a swim()
    • Imprime una línea vacía
    • Crea un Bird llamado 'Tweety', llama a describe(), luego a fly() y walk()

Cada mixin puede acceder a la propiedad name debido a la restricción on Animal, lo que garantiza la seguridad de tipos al tiempo que proporciona una composición de comportamiento flexible.

Salida 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

Pruébalo tú mismo

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

// TODO: Crear la clase Duck que extienda de Animal y use los mixins Swimming, Flying, Walking
class Duck {
  // TODO: Implementar la clase Duck
}

// TODO: Crear la clase Fish que extienda de Animal y use solo el mixin Swimming
class Fish {
  // TODO: Implementar la clase Fish
}

// TODO: Crear la clase Bird que extienda de Animal y use los mixins Flying y Walking
class Bird {
  // TODO: Implementar la clase Bird
}

void main() {
  // TODO: Crear un Duck llamado 'Donald'
  // Llamar a describe(), swim(), fly(), walk()
  
  // TODO: Imprimir una línea vacía
  
  // TODO: Crear un Fish llamado 'Nemo'
  // Llamar a describe(), swim()
  
  // TODO: Imprimir una línea vacía
  
  // TODO: Crear un Bird llamado 'Tweety'
  // Llamar a describe(), fly(), walk()
}

Todas las lecciones de Programación Orientada a Objetos