OOPにおけるインタフェースの意味が分かってすっきり

ActionScript2.0におけるインタフェースについての解説記事です。

第54回 インタフェースを使ってクラスを整理してみよう

http://itpro.nikkeibp.co.jp/article/COLUMN/20070822/280133/


「自分はオブジェクト指向が分かってないなー」って思うときの理由の1つが,インタフェースが理解できていないことです。「インタフェースって何だよ!?それ使って何がどう良いの?」って感じでした。


でも,上記の記事を読んで少し分かりました。


「継承」と「インタフェース」を同時に勉強したときに,「インタフェース」を「継承」の仲間だと覚えちゃったからいけなかったんだな,きっと。


親クラスを継承(extends)したときは,自分の実装にすぐに役立つ感じがする。それに比べて,インタフェースクラスを実装(implements)したときは,特に役立つような感じはしない。どちらかと言えば,実装に一定の縛りがかかるので,面倒くさいという感じだった。


コーディングを便利にしてくれるわけでもないし,「インタフェース」というよく分からない名称で余計に僕を混乱させる。今までの僕にとっては「は?インタフェースって何ですか??インタフェースってことは,僕に何か提供してくれるんですか?」って感じだった。でも,記事を読んで分かった。


今まで1人でコーディングすることが多かったから,他人が自分の作ったクラスを使うなんてことはほとんど意識したことがなかったけど,「インタフェース」ってのは,自分に提供されるインタフェースではなく,クラスを利用する人への「インタフェース」なんだな。(※自分もまた,クラスを利用する人になり得る)


インタフェースの仕組みによって,「お前の作ったクラス,あとでこの部分でこうやって,ああやって使うから,こんな風に実装してくれ」っていう作業分担が可能になるんだ。


自分1人で使うものを作るときに,わざわざ細かくインタフェースを作って実装するかっていうと分からないけど,同じような役目のクラスを複数作る時には便利かもしれない。


http://bookoffonline.co.jp/で買ったデザインパターンの本がなかなか届かない・・。