Menu
Coddy logo textTech

Rückblick – Tiersystem

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

challenge icon

Aufgabe

Einfach

Erstellen wir ein vollständiges Tiersystem, das alles zusammenführt, was du über Mixins gelernt hast! Du erstellst eine Animal-Basisklasse, Verhaltens-Mixins, die das Schlüsselwort on verwenden, und spezifische Tierklassen, die diese Fähigkeiten auf unterschiedliche Weise kombinieren.

Du organisierst deinen Code in drei Dateien:

  • animal.dart: Definiere deine Basisklasse, von der alle Tiere erben werden:
    • Eine Animal-Klasse mit einer String name-Eigenschaft und einem Konstruktor
    • Eine Methode describe(), die [name] is an animal ausgibt
  • behaviors.dart: Importiere die Tierdatei und erstelle drei Verhaltens-Mixins, die jeweils mithilfe des Schlüsselworts Animal auf on beschränkt sind:
    • Ein Swimming-Mixin mit einer Methode swim(), die [name] is swimming ausgibt
    • Ein Flying-Mixin mit einer Methode fly(), die [name] is flying ausgibt
    • Ein Walking-Mixin mit einer Methode walk(), die [name] is walking ausgibt
  • main.dart: Importiere beide Dateien und erstelle drei Tierklassen, die Vererbung mit unterschiedlichen Mixin-Kombinationen verbinden:
    • Eine Duck-Klasse, die Animal erweitert und alle drei Mixins verwendet (Swimming, Flying, Walking)
    • Eine Fish-Klasse, die Animal erweitert und nur das Swimming-Mixin verwendet
    • Eine Bird-Klasse, die Animal erweitert und die Mixins Flying und Walking verwendet
    Zeige anschließend die Fähigkeiten jedes Tiers:
    • Erstelle eine Duck namens 'Donald', rufe describe() auf und danach swim(), fly() und walk()
    • Gib eine leere Zeile aus
    • Erstelle einen Fish namens 'Nemo', rufe describe() auf und danach swim()
    • Gib eine leere Zeile aus
    • Erstelle einen Bird namens 'Tweety', rufe describe() auf und danach fly() und walk()

Jedes Mixin kann aufgrund der name-Einschränkung auf die on Animal-Eigenschaft zugreifen. Dadurch wird Typsicherheit gewährleistet und gleichzeitig eine flexible Kombination von Verhaltensweisen 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

Übe selbstständig: Online-Dart-Compiler