« インターフェイスとは | メイン | 複数のインターフェイスを適用する »

インターフェイスの定義

これをActionScriptで書くと次のようになります。インターフェイスはinterfaceキーワードで定義します。インターフェイスで指定できるのはメソッドだけで、プロパティの指定やfunctionブロックなどを書くことはできません。

sample→ex04-05/interfaceフォルダ

インターフェイス定義:RocketInterface.as
interface RocketInterface {
function fire():Void;
}

インターフェイスの取り決めを守るクラスでは、implementsキーワードでインターフェイス定義ファイルを指定し、実際にインターフェイスで指定されているメソッドを実装します。インターフェイスを指定しているにも関わらず、インターフェイスで指定されているメソッドを実装していなかったり、メソッドの引数や戻り値のデータ型が一致していないとコンパイルエラーになります。インターフェイスRocketInterfaceを使うクラスRocket1は次のようなクラス定義になります。

インターフェイスを守るクラス定義:Rocket1.as
class Rocket1 implements RocketInterface {
//コンストラクタ
function Rocket1() {
}
//インターフェイスで取り決められているメソッド
function fire():Void {
trace("ロケット点火処理");
}
/*
以下、ロケット1号機の内部処理が続く
*/
}


同様に別の開発者はインターフェイスRocketInterface.asを譲り受ければロケット2号機の開発に着手できます。

インターフェイスを守るクラス定義:Rocket2.as
class Rocket2 implements RocketInterface {
//コンストラクタ
function Rocket2() {
}
//インターフェイスで取り決められているメソッド
function fire():Void {
trace("ロケット点火処理");
}
/*
以下、ロケット2号機の内部処理が続く
*/
}

一方、Rocket1クラス、Rocket2クラスと連携する発射装置側のLauncherクラスは次のように定義することができます。

クラス定義:Launcher.as
class Launcher {
var myRocket;
//コンストラクタ
function Launcher(rocket) {
myRocket = rocket;
}
//ロケットに点火する
function startrocket():Void {
/*
準備処理
*/
//点火
myRocket.fire();
}
/*
以下、発射装置の内部処理が続く
*/
}

実際のテストはフレームアクションで次のように行うことができます。

フレームアクション:rockettest.fla
//ロケット1号機を作る
var rocket:Rocket1 = new Rocket1();
//発射台にセット
var theLauncher:Launcher = new Launcher(rocket);
//点火
theLauncher.startrocket(); // 出力→ ロケット点火処理


note:
インターフェイスは、インターフェース、インタフェースと多様な日本語表記が流通しています。サイト等の検索の際には注意してください。

投稿者 oshige : 2005年02月25日 11:23

トラックバック

このエントリーのトラックバックURL:
http://oshige.com/mt/mt-tb.cgi/1152

コメント

コメントしてください




保存しますか?