ActionScript 3なら継承&実装で大規模開発もできるFlashの基礎を無料で習得! ActionScript入門(5)(2/2 ページ)

» 2008年05月13日 00時00分 公開
[吉村美保クラスメソッド株式会社]
前のページへ 1|2       

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

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

 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つです。

実は身近なオブジェクト指向で大規模開発も

 いかがでしたか? 継承やオーバーライド、ポリモーフィズムなど、オブジェクト指向言語は拡張や修正がしやすいように設計されており、大規模な開発に適しているのが分かっていただけたでしょうか。

 オブジェクト指向は実生活に例えやすい概念です。普段身近にあるものをクラスに例えてみると、楽しく覚えることができると思います(携帯電話、クレープ屋のメニュー、花の種類など)。

 次回はいままで学んだことの応用編として、楽しいプログラムを作ってみましょう。お楽しみに!

プロフィール

吉村 美保(よしむら みほ)

クラスメソッド株式会社 情報システム部 プログラマー
ゲーム開発、インストラクターなどの経験を経て、クラスメソッド株式会社に入社。入社後はFlexやAIRによるRIA開発を行っている。



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。