Menu
Coddy logo textTech

まとめ - 動物システム

CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 56/110。

challenge icon

チャレンジ

簡単

ミックスインについて学んだすべての知識を統合して、完全な動物システムを構築しましょう!ベースとなる Animal クラス、on キーワードを使用した振る舞いのミックスイン、そしてこれらの機能をさまざまな方法で組み合わせる特定の動物クラスを作成します。

コードを3つのファイルに整理します:

  • animal.dart: すべての動物が継承するベースクラスを定義します:
    • String name プロパティとコンストラクタを持つ Animal クラス
    • [name] is an animal と出力する describe() メソッド
  • behaviors.dart: animal ファイルをインポートし、on キーワードを使用して Animal に制限された3つの振る舞いミックスインを作成します:
    • [name] is swimming と出力する swim() メソッドを持つ Swimming ミックスイン
    • [name] is flying と出力する fly() メソッドを持つ Flying ミックスイン
    • [name] is walking と出力する walk() メソッドを持つ Walking ミックスイン
  • main.dart: 両方のファイルをインポートし、継承と異なるミックスインの組み合わせを統合した3つの動物クラスを作成します:
    • Animal を継承し、3つすべてのミックスイン(Swimming, Flying, Walking)を使用する Duck クラス
    • Animal を継承し、Swimming ミックスインのみを使用する Fish クラス
    • Animal を継承し、FlyingWalking ミックスインを使用する Bird クラス
    次に、各動物の機能を実演します:
    • 'Donald' という名前の Duck を作成し、describe() を呼び出し、続いて swim()fly()walk() を呼び出します
    • 空行を出力します
    • 'Nemo' という名前の Fish を作成し、describe() を呼び出し、続いて swim() を呼び出します
    • 空行を出力します
    • 'Tweety' という名前の Bird を作成し、describe() を呼び出し、続いて fly()walk() を呼び出します

各ミックスインは on Animal 制約があるため、name プロパティにアクセスでき、柔軟な振る舞いの構成を提供しながら型安全性を確保します。

期待される出力:

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

自分で試してみよう

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

// TODO: Animalを継承し、Swimming、Flying、Walkingのミックスインを使用するDuckクラスを作成してください
class Duck {
  // TODO: Duckクラスを実装してください
}

// TODO: Animalを継承し、Swimmingミックスインのみを使用するFishクラスを作成してください
class Fish {
  // TODO: Fishクラスを実装してください
}

// TODO: Animalを継承し、FlyingとWalkingのミックスインを使用するBirdクラスを作成してください
class Bird {
  // TODO: Birdクラスを実装してください
}

void main() {
  // TODO: 'Donald'という名前のDuckを作成してください
  // describe()、swim()、fly()、walk()を呼び出してください
  
  // TODO: 空行を出力してください
  
  // TODO: 'Nemo'という名前のFishを作成してください
  // describe()、swim()を呼び出してください
  
  // TODO: 空行を出力してください
  
  // TODO: 'Tweety'という名前のBirdを作成してください
  // describe()、fly()、walk()を呼び出してください
}

オブジェクト指向プログラミングのすべてのレッスン