Menu
Coddy logo textTech

Podsumowanie – system zwierząt

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 56 z 110.

challenge icon

Wyzwanie

Łatwy

Stwórzmy kompletny system zwierząt, który łączy wszystko, czego nauczysz się o mixinach! Utworzysz bazową klasę Animal, mixiny zachowań wykorzystujące słowo kluczowe on oraz konkretne klasy zwierząt, które łączą te możliwości na różne sposoby.

Podzielisz swój kod na trzy pliki:

  • animal.dart: Zdefiniuj klasę bazową, po której będą dziedziczyć wszystkie zwierzęta:
    • Klasa Animal z właściwością String name i konstruktorem
    • Metoda describe(), która wyświetla [name] is an animal
  • behaviors.dart: Zaimportuj plik ze zwierzętami i utwórz trzy mixiny zachowań, z których każdy będzie ograniczony do klasy Animal za pomocą słowa kluczowego on:
    • Mixin Swimming z metodą swim(), która wyświetla [name] is swimming
    • Mixin Flying z metodą fly(), która wyświetla [name] is flying
    • Mixin Walking z metodą walk(), która wyświetla [name] is walking
  • main.dart: Zaimportuj oba pliki i utwórz trzy klasy zwierząt, które łączą dziedziczenie z różnymi kombinacjami mixinów:
    • Klasa Duck, która dziedziczy po Animal i używa wszystkich trzech mixinów (Swimming, Flying, Walking)
    • Klasa Fish, która dziedziczy po Animal i używa tylko mixinu Swimming
    • Klasa Bird, która dziedziczy po Animal i używa mixinów Flying oraz Walking
    Następnie zademonstruj możliwości każdego zwierzęcia:
    • Utwórz obiekt Duck o nazwie 'Donald', wywołaj describe(), a następnie swim(), fly() i walk()
    • Wyświetl pusty wiersz
    • Utwórz obiekt Fish o nazwie 'Nemo', wywołaj describe(), a następnie swim()
    • Wyświetl pusty wiersz
    • Utwórz obiekt Bird o nazwie 'Tweety', wywołaj describe(), a następnie fly() i walk()

Każdy mixin może uzyskać dostęp do właściwości name dzięki ograniczeniu on Animal, co zapewnia bezpieczeństwo typów i jednocześnie umożliwia elastyczne łączenie zachowań.

Oczekiwany wynik:

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

Spróbuj swoich sił

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

// TODO: Utwórz klasę Duck, która dziedziczy po Animal i używa domieszek Swimming, Flying, Walking
class Duck {
  // TODO: Zaimplementuj klasę Duck
}

// TODO: Utwórz klasę Fish, która dziedziczy po Animal i używa tylko domieszki Swimming
class Fish {
  // TODO: Zaimplementuj klasę Fish
}

// TODO: Utwórz klasę Bird, która dziedziczy po Animal i używa domieszek Flying i Walking
class Bird {
  // TODO: Zaimplementuj klasę Bird
}

void main() {
  // TODO: Utwórz obiekt klasy Duck o nazwie 'Donald'
  // Wywołaj describe(), swim(), fly(), walk()
  
  // TODO: Wypisz pustą linię
  
  // TODO: Utwórz obiekt klasy Fish o nazwie 'Nemo'
  // Wywołaj describe(), swim()
  
  // TODO: Wypisz pustą linię
  
  // TODO: Utwórz obiekt klasy Bird o nazwie 'Tweety'
  // Wywołaj describe(), fly(), walk()
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online