Menu
Coddy logo textTech

Zusammenfassung - Tiersystem

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy — Lektion 56 von 110.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein komplettes Tiersystem bauen, das alles zusammenbringt, was Sie über Mixins gelernt haben! Sie werden eine Basisklasse Animal erstellen, Verhaltens-Mixins, die das Schlüsselwort on verwenden, und spezifische Tierklassen, die diese Fähigkeiten auf unterschiedliche Weise kombinieren.

Sie werden Ihren Code in drei Dateien organisieren:

  • animal.dart: Definieren Sie Ihre Basisklasse, von der alle Tiere erben werden:
    • Eine Klasse Animal mit einer Eigenschaft String name und einem Konstruktor
    • Eine Methode describe(), die '$name is an animal' ausgibt
  • behaviors.dart: Importieren Sie die Tier-Datei und erstellen Sie drei Verhaltens-Mixins, die jeweils mit dem Schlüsselwort on auf Animal beschränkt sind:
    • Ein Mixin Swimming mit einer Methode swim(), die '$name is swimming' ausgibt
    • Ein Mixin Flying mit einer Methode fly(), die '$name is flying' ausgibt
    • Ein Mixin Walking mit einer Methode walk(), die '$name is walking' ausgibt
  • main.dart: Importieren Sie beide Dateien und erstellen Sie drei Tierklassen, die Vererbung mit verschiedenen Mixin-Kombinationen verbinden:
    • Eine Klasse Duck, die Animal erweitert und alle drei Mixins (Swimming, Flying, Walking) verwendet
    • Eine Klasse Fish, die Animal erweitert und nur das Mixin Swimming verwendet
    • Eine Klasse Bird, die Animal erweitert und die Mixins Flying und Walking verwendet
    Demonstrieren Sie dann die Fähigkeiten jedes Tieres:
    • Erstellen Sie eine Duck namens 'Donald', rufen Sie describe() auf, dann swim(), fly() und walk()
    • Geben Sie eine Leerzeile aus
    • Erstellen Sie einen Fish namens 'Nemo', rufen Sie describe() auf, dann swim()
    • Geben Sie eine Leerzeile aus
    • Erstellen Sie einen Bird namens 'Tweety', rufen Sie describe() auf, dann fly() und walk()

Jedes Mixin kann aufgrund der on Animal-Einschränkung auf die Eigenschaft name zugreifen, was Typsicherheit gewährleistet und gleichzeitig eine flexible Verhaltenskomposition ermöglicht.

Erwartete Ausgabe:

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

Probier es selbst

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

// TODO: Erstelle die Klasse Duck, die Animal erweitert und die Mixins Swimming, Flying und Walking verwendet
class Duck {
  // TODO: Implementiere die Klasse Duck
}

// TODO: Erstelle die Klasse Fish, die Animal erweitert und nur das Mixin Swimming verwendet
class Fish {
  // TODO: Implementiere die Klasse Fish
}

// TODO: Erstelle die Klasse Bird, die Animal erweitert und die Mixins Flying und Walking verwendet
class Bird {
  // TODO: Implementiere die Klasse Bird
}

void main() {
  // TODO: Erstelle eine Duck namens 'Donald'
  // Rufe describe(), swim(), fly(), walk() auf
  
  // TODO: Gib eine Leerzeile aus
  
  // TODO: Erstelle einen Fish namens 'Nemo'
  // Rufe describe(), swim() auf
  
  // TODO: Gib eine Leerzeile aus
  
  // TODO: Erstelle einen Bird namens 'Tweety'
  // Rufe describe(), fly(), walk() auf
}

Alle Lektionen in Objektorientierte Programmierung