まとめ - 動物システム
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 56/110。
チャレンジ
簡単ミックスインについて学んだすべての知識を統合して、完全な動物システムを構築しましょう!ベースとなる 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を継承し、FlyingとWalkingミックスインを使用する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()を呼び出してください
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ