Flashの基礎を無料で習得! ActionScript入門
連載一覧へ
Flashの基礎を無料で習得! ActionScript入門(5)
ActionScript 3なら継承&実装で大規模開発もできる

クラスメソッド株式会社
吉村 美保
2008/5/13


ルールをきっちり決めたいなら「インターフェイス」

- PR -

 オブジェクト指向で大事な概念となる「インターフェイス」についても解説したいと思います。

 Firstクラス内のcookメソッドに注目してください。cookメソッドの引数は「ISoba」というインターフェイスにしています(インターフェイスの名前には頭に「I」を付けることが多いです)。インターフェイスは、継承関係にないクラスに機能を提供するときに使います。構文は以下のとおりです。

インターフェイスの構文
アクセス修飾子 interface インターフェイス名 {
    抽象メソッド;
}

メソッドの型だけが書いてある「抽象メソッド」

 「抽象メソッド」とはメソッドの型だけが書いてあり、処理の中身がないものです。ちなみに普通のクラスでは、中身のないメソッドを書くことは許されません。

 ISobaインターフェイスに「precook」という抽象メソッドを用意しました。メソッドの中身がないのが分かると思います。

public interface ISoba {
    function precook():void;
}

「implements」で行う「実装」とは?

 Firstクラスを見ていただくと、フィールドkakeはKakeSobaクラス、フィールドkitsuneはKitsuneSobaクラス、フィールドtanukiはTanukiSobaクラスの型になっています。これらのクラスにISobaインターフェイスの機能を追加します。クラスでインターフェイスを利用できるようにすることを「実装」といいます。実装には、「implements」というキーワードを使います。

package{
public class KakeSoba implements ISoba{
    public function KakeSoba(){
    }

    public function precook():void{
        // かけそばの下ごしらえ

    }
}
}

 インターフェイスを実装したクラスでは、インターフェイスの抽象メソッドの中身を記述するのがルールになっており、記述をしないとコンパイラがエラーを出します。そういった意味で、インターフェイスは継承関係にないクラスに確実に機能を提供し、同時に1つの系統を持たせることができます。

 KakeSoba、KitsuneSoba、TanukiSobaそれぞれのクラスで「かけそばの下ごしらえ処理」「きつねそばの下ごしらえ処理」「たぬきそばの下ごしらえ処理」を記述します。

再利用性や拡張性を高める「ポリモーフィズム」

 Firstクラスのcookメソッドの引数は「soba:ISoba」になっていますね。これは「ISobaインターフェイスを実装したクラスであれば、どのクラスも受け入れる」という意味になります。このように、型を柔軟に受け入れることで再利用性や拡張性を高める考え方を「ポリモーフィズム」(多態性)といいます。

 では、cookメソッドの中身を、以下のようにしてみましょう。

protected function cook ( soba:ISoba ):void {
    soba.precook();
}

 引数に渡されたものが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ジャパン

リッチクライアント & 帳票 フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH