添付ファイルの追加

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

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 6 changed 3 lines
Java、C#、VBなどにおける
*Interface (インタフェース)
はこの多態性を実現するための一機能です。
多態性とは、処理(関数またはメソッド)の定義(呼び出し名+型+引数)が同一であっても、処理内部の動きをクラスごとに替えられる機能のことです。\\
例えばJavaにおいては、
#abstractメソッド
#Interface (インタフェース)
#override(オーバーライド)
という機能として実現されています。\\
At line 13 added 10 lines
!!実体を並べてみないと多態性を定義できない
多態性について注意すべき点は、設計時と実装時で視点を180度替える必要があることです。\\
!【設計時】
#実体(オブジェクト)を先に並べて比較する。
#共通的な処理を抽出する。
#その処理を再定義する(呼び出し名、戻り値、引数を共通化する)。
#インタフェースの場合はインタフェース名を決める。
上記のような流れになりますが、特にインタフェースを決める場合、それよりも先に実体(オブジェクトとクラス)が無いと共通化は出来ません。つまり、\\
*クラス→インタフェース
の順番で設計していくことになります。\\
At line 24 added 13 lines
!【実装時】
#設計時に決めたインタフェースまたはabstractメソッドを実装する。
#それらを実現するためのクラスを実装する。
言うまでもありませんが、インタフェースやabstractメソッドが先に無いと実現クラスの実装は出来ません。つまり、\\
*インタフェース→クラス
の順番で実装していくことになります。\\
設計者のほとんどは実装を先に経験するためだと思いますが、
*多態性を利用する際は、まず最初に個別の実体(クラス)を並べてみて共通化する必要がある
ことに気付いていない人が多いように思います。インタフェースやabstractメソッドはクラスよりも先に出来るものと思っているようなのです。\\
視点を180度替える必要があるというのはこのことです。\\
!!インタフェースは役割
At line 13 changed one line
と理解して下さい。
と理解して下さい。一つ例を出します。
#自転車
#バイク
#自動車
#電車
#飛行機
これらの役割は何でしょうか? 答えは簡単、
*乗り物
ですね。いずれも、人を乗せて運ぶことがその役割です。\\
少し考えてみれば判りますが、
*「今日は乗り物を使って移動した。」
と聞いた時に、
*「何に乗ったの?」
という疑問が起こると思います。一方で、\\
*「今日は電車で来た。」
と聞いて、「何に乗ったの?」とは誰も思いません。これは、\\
*役割では実体を決められない
からです。
*責務でクラスは決まらない
と同じ事です。\\
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