Menu
Coddy logo textTech

Riepilogo - Sistema animale

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 56 di 110.

challenge icon

Sfida

Facile

Costruiamo un sistema completo di animali che riunisce tutto ciò che hai imparato sui mixin! Creerai una classe base Animal, mixin di comportamento che usano la parola chiave on e classi specifiche per gli animali che combinano queste capacità in modi diversi.

Organizzerai il codice in tre file:

  • animal.dart: definisci la classe base da cui erediteranno tutti gli animali:
    • Una classe Animal con una proprietà String name e un costruttore
    • Un metodo describe() che stampa [name] is an animal
  • behaviors.dart: importa il file degli animali e crea tre mixin di comportamento, ciascuno vincolato a Animal usando la parola chiave on:
    • Un mixin Swimming con un metodo swim() che stampa [name] is swimming
    • Un mixin Flying con un metodo fly() che stampa [name] is flying
    • Un mixin Walking con un metodo walk() che stampa [name] is walking
  • main.dart: importa entrambi i file e crea tre classi di animali che combinano l'ereditarietà con diverse combinazioni di mixin:
    • Una classe Duck che estende Animal e usa tutti e tre i mixin (Swimming, Flying, Walking)
    • Una classe Fish che estende Animal e usa solo il mixin Swimming
    • Una classe Bird che estende Animal e usa i mixin Flying e Walking
    Poi mostra le capacità di ciascun animale:
    • Crea una Duck chiamata 'Donald', chiama describe(), poi swim(), fly() e walk()
    • Stampa una riga vuota
    • Crea un Fish chiamato 'Nemo', chiama describe(), poi swim()
    • Stampa una riga vuota
    • Crea un Bird chiamato 'Tweety', chiama describe(), poi fly() e walk()

Ciascun mixin può accedere alla proprietà name grazie al vincolo on Animal, garantendo la sicurezza dei tipi e consentendo al contempo una composizione flessibile dei comportamenti.

Output previsto:

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

Provalo tu

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

// TODO: Crea la classe Duck che estende Animal e usa i mixin Swimming, Flying e Walking
class Duck {
  // TODO: Implementa la classe Duck
}

// TODO: Crea la classe Fish che estende Animal e usa solo il mixin Swimming
class Fish {
  // TODO: Implementa la classe Fish
}

// TODO: Crea la classe Bird che estende Animal e usa i mixin Flying e Walking
class Bird {
  // TODO: Implementa la classe Bird
}

void main() {
  // TODO: Crea un Duck chiamato 'Donald'
  // Chiama describe(), swim(), fly(), walk()
  
  // TODO: Stampa una riga vuota
  
  // TODO: Crea un Fish chiamato 'Nemo'
  // Chiama describe(), swim()
  
  // TODO: Stampa una riga vuota
  
  // TODO: Crea un Bird chiamato 'Tweety'
  // Chiama describe(), fly(), walk()
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online