添付ファイルの追加

ログイン済のユーザのみが添付ファイルをアップロード出来ます。

This page (revision-10) was last changed on 18-3-2014 00:22 by ytp

This page was created on 09-1-2012 23:32 by ytp

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 2 changed one line
!!!インタフェースは「役割」
!!!インタフェースは多態性の一種
At line 4 changed one line
*多態性 (ポリモーフィズム:Polymorphism)
*多態性 (ポリモーフィズム:polymorphism)
At line 6 changed 3 lines
Java、C#、VBなどにおける
*Interface (インタフェース)
はこの多態性を実現するための一機能です。
多態性とは、処理(関数またはメソッド)の定義(呼び出し名+型+引数)が同一であっても、処理内部の動きをクラスごとに替えられる機能のことです。\\
例えばJavaにおいては、
#abstractメソッド
#Interface (インタフェース)
#override(オーバーライド)
という機能として実現されています。\\
At line 10 changed one line
!!インタフェースは役割
At line 13 changed one line
と理解して下さい。
と理解して下さい。一つ例を出します。
#自転車
#バイク
#自動車
#飛行機
これらの役割は何でしょうか? 答えは簡単、
*乗り物
ですね。人を乗せて運ぶことがいずれもその役割です。それでは、
*「今日は乗り物で来た。」ともし言われたら、
*「何に乗ったの?」という疑問が起こると思います。
一方で、\\
*「今日は自転車で来た。」と聞いて
*「何に乗ったの?」とは誰も思いません。
なぜなら、\\
*役割では実体を決められない
からです。つまり「乗り物」という役割だけを聞いてもその実体が自転車なのかバイクなのかは判断つきません。\\
そしてこれは、
*責務でクラスは決まらない
のと同じ事です。何が出来るのか(責務または役割)だけを決めてもその実体は複数あり得るのです。\\
!!実体を並べてみないと多態性を定義できない
多態性を利用する時に注意すべき点は、設計時と実装時で手順を180度替える必要があることです。\\
!【設計時】
#実体(クラス)を先に並べて比較する。
#共通的な処理を抽出する。
#その処理を再定義する(呼び出し名、戻り値、引数を共通化する)。
#インタフェースの場合はインタフェース名を決める。
上記のような流れになりますが、特にインタフェースを決める場合はそれよりも先に実体(クラス)が無いと共通化は出来ません。乗り物の例と同じです。乗り物という役割が先にあるのではなく、自転車やバイクを並べてみると乗り物という役割が浮き彫りになるのです。つまり、\\
*クラス → インタフェース
の順番で設計していくことになります。\\
実体を並べてみて共通化あるいは抽象化することを
*汎化
と言います。一般的な言葉である__「汎用化」__と同じ意味です。
!【実装時】
#設計時に決めたインタフェースまたは抽象メソッドを実装する。
#それらを実現するためのクラスを実装する。
言うまでもありませんが、インタフェースや抽象メソッドが先に無いと実現クラスの実装は出来ません。つまり、\\
*インタフェース → クラス
の順番で実装していくことになります。\\
*多態性を定義する際は個別の実体(クラス)を先に並べてみて共通化する
ことに注意して下さい。インタフェースや抽象メソッドがクラスよりも先に出来るわけではありません。\\
視点を180度替える必要があるというのはこのことです。\\
Version Date Modified Size Author Changes ... Change note
10 18-3-2014 00:22 1.363 kB ytp to previous
9 11-3-2012 23:07 1.229 kB ytp to previous | to last
8 11-3-2012 19:56 1.229 kB ytp to previous | to last
7 30-1-2012 00:53 1.239 kB ytp to previous | to last
6 16-1-2012 14:41 1.248 kB ytp to previous | to last
5 15-1-2012 23:06 1.184 kB ytp to previous | to last
4 15-1-2012 03:00 1.173 kB ytp to previous | to last
3 13-1-2012 00:13 1.23 kB ytp to previous | to last
2 13-1-2012 00:05 1.235 kB ytp to previous | to last
1 09-1-2012 23:32 0.204 kB ytp to last
« This page (revision-10) was last changed on 18-3-2014 00:22 by ytp