2010年03月31日

OOP その5 インターフェイス

ん〜、いつになったらクラスのお勉強ができるのだろうか・・・
まだまだ意味不明な言葉だらけで、意識が朦朧としてきた(笑)

【注意】素人が迷走しながら書いてる記事なので参考にしないで下さい(苦笑)

インターフェイス


これはどうやら、「継承」と関係がある模様。
スーパークラスもポリモーフィズムも継承に関係する要素だったけど、
これらはカスタムクラスを作成する際に重要になってくるんだろうな。
でも、未だにカスタムクラスを使うようなプログラムを組んだことがないんだけどな(苦笑)
でも知ってて損はないだろうから、頑張ってみる。。。

「インターフェイス」って言葉自体は、聞いたことある。
このソフトのインターフェイスは、シンプルでかっこいいとか。
でもこのインターフェイスと、オブジェクト指向でいうインターフェイスは、少し違うみたい。
インターフェイスとは、異なる2つのモノの間を通信するための仲介役みたいなもので、やり取りする方法を定めた規格のことらしい。
これには3種類あって

「ハードウェアインターフェイス」
複数の装置間で通信するための規格

「ソフトウェアインターフェイス」
プログラム間でデータをやり取りするための規格

「ユーザーインターフェイス」
コンピュータとユーザー間で情報を表示/入力するための規格。
また、グラフィック表示やマウス操作などを用いたものを「グラフィカルユーザーインターフェイス」という。

よく耳にする「インターフェイス」は、ユーザーインターフェイスのことだったのね。
でも、ここで勉強するのは「ソフトウェアインターフェイス」になる。


さて、ここで継承をおさらい。
スーパークラスの機能をサブクラスへ引き継ぎ・追加・変更できる。
サブクラスを作成するときに、スーパークラスを既存のクラスから指定することができる。

で、ここがポイント。
「アクションスクリプトでは、指定できるスーパークラスは一つだけ」
二つ以上のスーパークラスから継承することを「多重継承」というらしいのだが、この多重継承はアクションスクリプトでは認められないとのこと。

でも、カスタムクラスでイベントリスナー使いたいんだけど、スーパークラスにはaddEventListenerメソッドがないのよ!ってな場合に、インターフェイスを使うとaddEventListenerメソッドが使えるようになる。

使えるようにするには、
1、インターフェイスを定義する
「このインターフェイスを使いますよ〜」って書くだけで、具体的な指示は書かない。

2、インターフェイスの実装
実装できるのはクラスに対してのみ。
複数のインターフェイスを実装することができる。
細かい書き方の規則があるようだが、それはまたの機会に。

3、クラスのインスタンスを生成
実際にタイムライン上で使うには、当然インスタンスを生成しなくちゃいけない。


では、インターフェイスってどんなの?ってことだが、
ActionSctipr3.0 コンポーネントリファレンスガイドを見ると
I (大文字アイ)で始まる斜体文字がインターフェイスらしい。
コンポーネントの中にあるので、探すの大変なんだけど、例に出したイベントリスナーを含むインターフェイスは
こちら

なんつーか、正直わからん(苦笑)
使ってみてはじめて理解できるのかもしれない。
ってこれでは今までと変わらないじゃないか!
前途多難だな。。。


とりあえず、結論。
・サブクラスで継承または拡張ができない場合に、インターフェイスを実装することで、そのインターフェイスに含まれるメソッドが使えるようになる。
・一つのクラスに複数のインターフェイスを実装できる。


例に出したaddEventLitenerメソッドは、EventDispatcherクラスにもある。
で、なにが違うのか調べてみた。

EventDispatcherクラスをみると、
EventDispatcher クラスは、IEventDispatcher インターフェイスを実装し、DisplayObject クラスの基本クラスです。

と書かれてある。
つまり、このクラスのaddEventListenerメソッドは、IEventDispatcherインターフェイスを実装することで使えるようにしてあるよってことだと思う。


リファレンスのインターフェイスの記事を見ると、次のように書かれてある。
インターフェイスは、関連しないオブジェクトの相互の通信を可能にするメソッド宣言の集合です。

この「相互の通信を可能にするメソッド」をインターフェイスにしているんだと思う。



posted by K at 15:03| Comment(5) | OOP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんにちはー

Kさんの迷走をさらに後ろで迷走しながら追従していますー
Kさんほどの方が、迷走されるものに挑もうとしている私はかなりのチャレンジャーのようです^^;

「参考にしないでください」とありますが、参考にさせていただきます♪
Posted by みい at 2010年04月01日 19:08
こんばんはー。

たまにGUIって言葉聞きませんか?
グラフィカルユーザーインターフェースのことなんです。
クラスとポインタ(VC++だけかも)を理解したらオブジェクト指向プログラミングの7割はOKですよ(^^)/

動的なものはアロックとかするんですかね?
開放しないとメモリが暴走しますのでそこだけ注意が必要です。
もし暴走したらメモリは揮発性なので電源を切って、数十秒待ってから電源を入れてください。

あんまりやるとOSのDLLが壊れるので、定期的なOS再インストールをおすすめします(^^;
Posted by すえぞう at 2010年04月01日 22:04
>みいさん
こんばんは^^
CS4使ってるけど、まだAS2.0なんです。
AS3.0勉強しようかと思ったのですが、どうせやるならオブジェクト指向からと思ってしまったんですよね。
AS3.0使うだけなら、こんなこと知らなくてもOKだと思います。
で、ほんとに迷走してるんで、間違った解釈もあると思いますのでご注意を!!

>すえぞうさん
こんばんは〜^^アドバイスありがとうございます。
でもポインタって何??ってレベルです^^;
CGIとかじゃないので、メモリの暴走は無いと思います。
AS3.0を理解するために、オブジェクト指向の概要くらいは理解しようと思う程度でして、「こういうもん」ってわかればOKなんです。
ってそれが解らなくて迷走してるんですけどね(苦笑)
Posted by 管理人@K at 2010年04月01日 23:44
>すえぞうさん
あ!記事中のGUIが、グラフィカルインターフェイスになってた。
”ユーザー”が抜けてましたわ。
すえぞうさんのおかげで気づけました。ありがとうございます!
Posted by 管理人@K at 2010年04月01日 23:57
こんばんは。

例えば、あなたが道に迷っていて、知らない人に出会ったとします。
あなたは、その人がどんな人でどんな能力の持ち主なのかは知らないのに、迷わず道を尋ねる事と思います。
つまり、相手の詳細は知らなくとも、相手に一定の条件さえそなわっていれば、最低でも、その相手とコミュニケーションする事はできます:その代わり、結果は相手次第です。

このように、あらかじめコミュニケーションの仕方だけ決めたものを、インターフェースと言います。ここで、コミュニケーションの「仕方」というのは、メソッドの名前とそのパラメーターの渡し方の事を言います。
Posted by くろょ at 2012年06月10日 00:39
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。