
ActionScript 3なら継承&実装で大規模開発もできる
クラスメソッド株式会社
吉村 美保
2008/5/13
ルールをきっちり決めたいなら「インターフェイス」
- - PR -
オブジェクト指向で大事な概念となる「インターフェイス」についても解説したいと思います。
Firstクラス内のcookメソッドに注目してください。cookメソッドの引数は「ISoba」というインターフェイスにしています(インターフェイスの名前には頭に「I」を付けることが多いです)。インターフェイスは、継承関係にないクラスに機能を提供するときに使います。構文は以下のとおりです。
| インターフェイスの構文 |
アクセス修飾子 interface インターフェイス名 { |
■ メソッドの型だけが書いてある「抽象メソッド」
「抽象メソッド」とはメソッドの型だけが書いてあり、処理の中身がないものです。ちなみに普通のクラスでは、中身のないメソッドを書くことは許されません。
ISobaインターフェイスに「precook」という抽象メソッドを用意しました。メソッドの中身がないのが分かると思います。
public interface ISoba { |
■ 「implements」で行う「実装」とは?
Firstクラスを見ていただくと、フィールドkakeはKakeSobaクラス、フィールドkitsuneはKitsuneSobaクラス、フィールドtanukiはTanukiSobaクラスの型になっています。これらのクラスにISobaインターフェイスの機能を追加します。クラスでインターフェイスを利用できるようにすることを「実装」といいます。実装には、「implements」というキーワードを使います。
package{ |
インターフェイスを実装したクラスでは、インターフェイスの抽象メソッドの中身を記述するのがルールになっており、記述をしないとコンパイラがエラーを出します。そういった意味で、インターフェイスは継承関係にないクラスに確実に機能を提供し、同時に1つの系統を持たせることができます。
KakeSoba、KitsuneSoba、TanukiSobaそれぞれのクラスで「かけそばの下ごしらえ処理」「きつねそばの下ごしらえ処理」「たぬきそばの下ごしらえ処理」を記述します。
再利用性や拡張性を高める「ポリモーフィズム」
Firstクラスのcookメソッドの引数は「soba:ISoba」になっていますね。これは「ISobaインターフェイスを実装したクラスであれば、どのクラスも受け入れる」という意味になります。このように、型を柔軟に受け入れることで再利用性や拡張性を高める考え方を「ポリモーフィズム」(多態性)といいます。
では、cookメソッドの中身を、以下のようにしてみましょう。
protected function cook ( soba:ISoba ):void { |
引数に渡されたものがKakeSobaクラスならばKakeSobaクラスのprecookメソッドが実行され、KitsuneSobaが渡されたのなら、KitsuneSobaクラスのprecookメソッドが実行されるようになっています。
■ もしも、ポリモーフィズムがなかったら……?
ポリモーフィズムが使えなかったら、型ごとのメソッドや、処理分けを記述しなくてはならなくなり、クラス同士の依存性も高くなり、拡張性も低くなります。このポリモーフィズムもオブジェクト指向ではとても大事な概念の1つです。
実は身近なオブジェクト指向で大規模開発も
いかがでしたか? 継承やオーバーライド、ポリモーフィズムなど、オブジェクト指向言語は拡張や修正がしやすいように設計されており、大規模な開発に適しているのが分かっていただけたでしょうか。
オブジェクト指向は実生活に例えやすい概念です。普段身近にあるものをクラスに例えてみると、楽しく覚えることができると思います(携帯電話、クレープ屋のメニュー、花の種類など)。
次回はいままで学んだことの応用編として、楽しいプログラムを作ってみましょう。お楽しみに!
■@IT関連記事
| いまさら聞けないFlex、そして、いまこそ入門のとき!? Flex 3正式版リリース! Flexの過去・現在・未来 先日ついに正式リリースされたFlashベースのRIA技術Flex 3。いまが入門に最適なFlexの過去・現在・未来を一挙に解説 「リッチクライアント & 帳票」フ ォーラム 2008/3/31 |
||
| Flex Builder 3でサクっとActionScriptコーディング! 作って学ぶAIRウィジェットの基礎→応用(3) 今回はAIRウィジェットの処理やロジックをActionScriptでコーディングします。Flex Builder 3を使うと便利な機能が満載です 「リッチクライアント & 帳票」フ ォーラム 2008/3/24 |
||
| いまさら聞けないJavaによるオブジェクト指向の常識 プログラマーの常識をJavaで身につける(11) Javaを学習する際に「オブジェクト指向」という言葉をよく耳にすると思いますが、いまさら聞けない人はぜひ読んでみてください 「Java Solution」フォーラム 2008/5/8 |
| Javaのインターフェイスを理解する Eclipseではじめるプログラミング(10) オブジェクト指向言語のJavaにとってインターフェイスは必須の概念です。難しい理屈は抜きにして、実際に試して初歩を理解します 「Java
Solution」フォーラム 2005/7/13 |
||
| クラスの継承の本質を知る [連載]いまから始めるJava(4) クラスの継承を抽象的に理解しようとすると難しくなってしまいます。メモリの拡張として理解すれば実に簡単であることが分かります 「Java
Solution」フォーラム 2003/3/8 |
||
| メソッドの挙動を変えるオーバーライド [連載]いまから始めるJava(8) 前回作成したHTMLパーサのメソッドの機能をオーバーライドを使い変更します。オーバーライドは同名のメソッドに異なる機能をもたせることができます 「Java
Solution」フォーラム 2003/8/16 |
||
| Javaの抽象クラスとインターフェイス いまから始めるJava(14) 最終回は抽象クラスとインターフェイスを詳しく説明し、Javaプログラミングにおけるクラスと継承の知識を整理します 「Java
Solution」フォーラム 2004/4/23 |
||
| プロフィール:吉村 美保(よしむら みほ) クラスメソッド株式会社 情報システム部 プログラマー ゲーム開発、インストラクターなどの経験を経て、クラスメソッド株式会社に入社。入社後はFlexやAIRによるRIA開発を行っている。 |
| 1-2 |
| INDEX | ||
| Flashの基礎を無料で習得! ActionScript入門(5) ActionScript 3なら継承&実装で大規模開発もできる |
||
| Page1 クラスを「継承」することによって受け継ぐものとは? 受け継ぐだけでは物足りないなら「オーバーライド」 |
||
| Page2 ルールをきっちり決めたいなら「インターフェイス」 再利用性や拡張性を高める「ポリモーフィズム」 実は身近なオブジェクト指向で大規模開発も |
||
| リッチクライアント&帳票 全記事一覧へ |
TechTargetジャパン
- 次のモバイルアプリはどのフレームワークで作る? (2012/5/24)
スマホアプリの開発を容易にするJavaScriptのフレームワークが続々と増えている。それぞれの良さや仕組み、何がどこまでできるのかを徹底解剖する - 「LESS&専用エディター」でCSSをシンプルに書こう (2012/5/23)
「LESS」はCSS初心者に向けた、シンプルなライブラリだ。「LESS」で、変数などのプログラミングの基礎的な考え方もCSSで学ぼう - 学校が世界一のデジタル環境になったら (2012/5/18)
授業はアーカイブに蓄積され、家からも見られる。家族が授業テーマのアイデアを出す。そんな姿が実現されるかもしれない - 1000万ドル調達も夢じゃないクラウドファウンディング (2012/5/15)
クラウドファンディングは、寄付型でも投資型でもない「購入型」が主流。商品を“開発する前に販売”して開発費用を集める逆転のシステムだ
|
|
