添付ファイルの追加

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

添付ファイル一覧

Kind Attachment Name Size Version Date Modified Author Change note
png
aggregation.png 1.4 kB 2 19-9-2011 00:08 ytp
png
aggregation2.png 3.2 kB 1 18-7-2011 01:13 ytp
png
aggregation3.png 3.2 kB 1 18-7-2011 01:13 ytp
png
association.png 1.0 kB 1 20-9-2011 00:04 ytp
png
composite.png 1.4 kB 1 18-7-2011 01:13 ytp
png
extend.png 1.4 kB 1 18-7-2011 01:13 ytp
png
generalize.png 3.2 kB 1 18-7-2011 02:28 ytp
png
implement.png 1.9 kB 1 18-7-2011 01:13 ytp

This page (revision-39) was last changed on 14-8-2016 22:52 by ytp

This page was created on 25-1-2011 00:33 by ytp

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 10 changed 2 lines
これらはオブジェクト指向の特徴を確かに言い表していますが、オブジェクト指向的な設計や実装をするための役に立たないとytpは考えています。少なくとも初心者にとっては百害有って一理無しです。
%%commentbox
これらはオブジェクト指向の特徴を確かに言い表していますが、オブジェクト指向的な設計や実装をするための役に立たないとytpは考えています。少なくとも初心者にとっては百害有って一理無しです。\\
\\
At line 13 removed 48 lines
%%
!!クラスを見つけるのがオブジェクト指向設計
オブジェクト指向にはクラスが必要です。オブジェクト指向的に設計しようとすることはクラスを見つけることに他なりません。
!!AクラスとBクラスが異なるクラスとして必要な理由は何?
クラスを見つけるというのはつまりクラスを定義することですが、では、AクラスとBクラスという2つの異なるクラスが必要になる時の理由は何でしょうか?
#処理が異なる
#責務が異なる
#データ構造が異なる
正解は「データ構造が異なる」です。\\
クラスの根本は、構造体(データ構造)とそれを扱う処理(関数orメソッド)を一体化させたものです。
次のリンクはSunのJava入門のページですが、そこにある図を参照して下さい。
[What Is an Object?|http://download.oracle.com/javase/tutorial/java/concepts/object.html]\\
Fieldsというのが構造体のことで、その周りをMethods(処理)が取り巻いています。この図は、クラスを基に生成されたオブジェクトの概念を書いたものですが、オブジェクトの設計図となるクラスの定義も同様な考え方です。\\
この図からも解るように、データ構造を持たないクラスはそもそもクラスとして機能しません。クラスの原理に反するからです。\\
ですが、データ構造を持たないクラスをJavaなどの言語では定義出来てしまうため、単なる関数を定義しただけのclassをクラスと勘違いしている設計者/プログラマーが大勢います。
public staticなメソッドのみのクラスがそれです。ユーティリティクラスとも呼ばれます。
!!責務がクラスを決めるのではないのか?
クラスは「責務」によって定義されるといくつかの解説書には書いてありますが、これは誤りだと私は考えています。誤りが言い過ぎだとしても、初学者に大きな誤解を少なくとも与えています。\\
責務という言葉を言い換えると「しなければならないこと」「出来なければならないこと」となります。クラスを利用する側から見るとそのクラスが何を出来るか(してくれるか)は確かに重要です。\\
ですがそれは使う側から見た場合であって、設計する人はそれだけではクラスを定義出来ません。一つ例を出します。\\
!!「ジュース売り」という責務
「ジュース売り」という責務を考えてみます。\\
ジュース売りがしなければならないことは次のような事です。
#注文を聞く
#金額を伝える
#お金をもらう
#品物とお釣りを渡す
では、この責務を請け負えるモノは何が考えられるでしょうか?\\
!!ジュース売りを請け負えるモノとは?
*人間
*自動販売機
ジュース売りを請け負えるモノとして少なくともこの2つが考えられます。将来的には「ロボット」も入ってくるかもしれません。\\
つまり責務が決まったからと言ってそのモノまでは決められないのです。\\
これは当然で、「何が出来るのか」というのは処理の規定であって、データ構造、つまりそのモノの状態は関係無いからです。\\
Javaなどでは「Interface」として定義するのが責務です。Interfaceはメソッドを規定するだけで中身は実装者任せです。まさに、「責務は決めるがモノは決めない」という機能です。ちなみに私はInterfaceのことを責務ではなく「役割」と呼ぶようにしています。
!!みんななぜ間違うのか?
世間ではクラスと思われているものが実は誤りである。なぜそうなってしまうのでしょうか?\\
クラスを設計する際、その基となるのは顧客からの要求です。要件と呼ばれます。この要件は、「xxxがしたい」「mmmが出来るようになりたい」という実務処理の記述です。言ってしまえば役割を列挙したものです。\\
役割というのは上で書いたように処理に過ぎません。クラスとして必要なデータ構造はそれだけでは出て来ません。\\
そのため、オブジェクト指向に不慣れな設計者・実装者はその要件(処理)だけを頼りに開発してしまいます。データ構造を考えずに処理だけを追いかけてしまうのです。これが誤りの根本です。
!!まとめ
*クラスを規定するのは処理ではなくデータ構造
*役割(責務)をクラスにしてはいけない
Version Date Modified Size Author Changes ... Change note
39 14-8-2016 22:52 3.565 kB ytp to previous
38 12-8-2016 19:46 3.861 kB JimmiXS to previous | to last tMpaWj http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com
37 11-8-2016 14:04 3.713 kB JimmiXS to previous | to last tFpfVw http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com
36 01-5-2016 01:46 3.565 kB ytp to previous | to last
35 01-5-2016 01:37 3.565 kB ytp to previous | to last
34 18-6-2014 13:39 2.862 kB ytp to previous | to last
33 18-5-2014 20:16 2.84 kB ytp to previous | to last
32 24-4-2013 01:38 2.84 kB ytp to previous | to last
31 11-3-2012 23:07 2.834 kB ytp to previous | to last
30 11-3-2012 21:44 2.834 kB ytp to previous | to last
29 11-3-2012 21:40 2.828 kB ytp to previous | to last
28 11-3-2012 21:33 2.823 kB ytp to previous | to last
27 11-3-2012 20:44 2.548 kB ytp to previous | to last
26 31-12-2011 12:46 2.486 kB ytp to previous | to last
25 31-12-2011 01:15 2.438 kB ytp to previous | to last
24 19-9-2011 02:19 2.959 kB ytp to previous | to last
23 19-9-2011 01:56 2.656 kB ytp to previous | to last
22 18-8-2011 00:29 2.525 kB ytp to previous | to last 小物クラス ==> 小粒クラス
21 27-7-2011 15:07 2.525 kB ytp to previous | to last
« This page (revision-39) was last changed on 14-8-2016 22:52 by ytp