共有型によるポリモーフィズム
クラスではなく型を対象にプログラミングする
「共有型によるポリモーフィズム」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
ポリモーフィズムとは
ポリモーフィズムを使うと、1つの型で複数の型を表せます。共通の型に対してメソッドを呼び出すと、各オブジェクトがそれぞれの方法で応答します。
型に対してプログラミングする
具体的なクラス名を指定する代わりに、共通のスーパータイプに依存します。コードは、その形に適合するどの型とも動作します。
void render(Shape s) => print(s.area());共通の基底型
まず、すべてのサブタイプがそれぞれ異なる方法で提供する共通メソッドを宣言する抽象基底クラスを作成します。
abstract class Shape {
double area();
}複数のサブタイプ、1つの形
各サブタイプは独自の方法でareaを実装しますが、どれも Shape として扱えます。
class Circle extends Shape {
double area() => 28.3;
}動的ディスパッチ
実行時に、Dartは実際のオブジェクトのメソッドを選択します。このディスパッチにより、同じ呼び出しでもオブジェクトごとに異なるコードが実行されます。
Shape s = Circle();
s.area(); // runs Circle.area異なる Shape のリスト
同じ型を共有しているため、異なるオブジェクトを1つのListにまとめ、統一的に扱えます。
List<Shape> shapes = [Circle(), Square()];ポリモーフィックにループする
1つのループであらゆる Shape を処理できます。具体的なクラスによる分岐は必要なく、適切なareaが実行されます。
for (var s in shapes) {
print(s.area());
}拡張に開かれている
後からまったく新しい Shape のサブタイプを追加しても、既存のループはすぐにそれを利用できます。ポリモーフィズムによって、コードは成長に対して開かれた状態になります。
class Triangle extends Shape {
double area() => 12.0;
}インターフェースも同じように機能する
共通の型はimplementsから作ることもできます。インターフェースを実装するクラスなら、どれでも同じコードにそのまま組み込めます。
void log(Printable p) => p.printOut();型チェックは不要
優れたポリモーフィックコードでは、isチェックをほとんど使いません。共通の型によってメソッドの存在がすでに保証されるため、ロジックをすっきり保てます。
なぜ重要なのか
ポリモーフィズムを使うと、長い if-else の連鎖や繰り返しの switch をなくせます。変更を加えなくても新しい型に対応できる、柔軟なコードを書けます。🌱
クイックチェック
ポリモーフィズムについての簡単な問題です。
まとめ
ポリモーフィズムとは、共通の型を対象にプログラミングしながら、各オブジェクトが独自の方法で振る舞うことです。コードを柔軟に保ち、新しいサブタイプにも対応しやすくします。✨
よくある質問
「共有型によるポリモーフィズム」レッスンは無料ですか?
はい。「共有型によるポリモーフィズム」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「共有型によるポリモーフィズム」で何を学びますか?
クラスではなく型を対象にプログラミングする ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「共有型によるポリモーフィズム」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 抽象クラスと抽象メソッド
- 暗黙的インターフェースとimplements
- 共有型によるポリモーフィズム
- 継承よりコンポジション