@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- PR -

オブジェクト指向の理解度を測るためには?

投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-06-08 14:10
msoです。


いろいろな意見ありがとうございます。
稚拙な脳しか持たない私にはいきなり全部を
理解することは無理ですが徐々に吸収していきたいと思っています。
というか、把握しているつもりのオブジェクト指向を
まったく把握してないことに気がつきました。
クラス設計とか結構がんばっていたのに、考えが足りないことを
痛感しております。


んで、仕事もしないでアレコレと

引用:

オブジェクト指向プログラム:データ中心のプログラム
構造化プログラム     :ロジック中心のプログラム


についていろいろと考えていました。
今までは自分の考えと違うので、アノ人の考えは間違っている!と
否定的になっていたのですが、今度は逆にアノ人はあっている!と
仮定して考えることにしました。

そうしたところは以下のように結論付けました。


オブジェクト指向プログラム:データ中心(マルチプルインスタンス)のプログラム
構造化プログラム     :順次、分岐、繰り返しを駆使してのプログラム
#構造化プログラムに関してはどうしても納得できず


えっと、いろいろな意見をいただいてうれしいのですが、
まだ理解できません。
返事はちょっとだけ待ってください。

skulker
ベテラン
会議室デビュー日: 2004/06/08
投稿数: 67
投稿日時: 2004-06-08 15:50
引用:

msoさんの書き込み (2004-06-08 14:10) より:
オブジェクト指向プログラム:データ中心(マルチプルインスタンス)のプログラム
構造化プログラム     :順次、分岐、繰り返しを駆使してのプログラム
#構造化プログラムに関してはどうしても納得できず



構造化プログラミングとは、「機能を実現する為の抽象機械をまず設計して、そこからトップダウンでデータ構造・機能の設計を詳細化していく」(段階的詳細化)という点が主であって、gotoを使わないとか順次・分岐・繰返しだけでコーディングするとかいうのは従たる部分に過ぎないと思います。

データ中心(DOA)なんかは構造化の時代からあった話ですし、オブジェクト指向はやっぱり「オブジェクト中心」なんじゃないかと思います。カプセル化・継承・多態なんてのも結局のところOOの本質ではなく、OOの目的の為の手段に過ぎないのでは。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-06-08 17:39
msoです。

引用:

skulkerさんの書き込み (2004-06-08 15:50) より:
構造化プログラミングとは、「機能を実現する為の抽象機械をまず設計して、そこからトップダウンでデータ構造・機能の設計を詳細化していく」(段階的詳細化)という点が主であって、gotoを使わないとか順次・分岐・繰返しだけでコーディングするとかいうのは従たる部分に過ぎないと思います。



ああ、なるほど。
構造化プログラミングについてかなり勘違いをしていた気がします。
嗚呼、10年ぐらい勘違い・・・

で、
引用:

オブジェクト指向はやっぱり「オブジェクト中心」なんじゃないかと思います。カプセル化・継承・多態なんてのも結局のところOOの本質ではなく、OOの目的の為の手段に過ぎないのでは。


つまるところ私はここが正直説明できないのです。
オブジェクト中心なのはなんとなく分かる気がするのです。
そこでオブジェクト中心→データ中心→マルチプルインスタンスと定義したいのですが、
それはそれで何か違う気がしています。
#本能がちがうって騒ぎます。

何か違うと思ったまま誰かに教えて、そこを説明してくれって言われると
困るのですが、オブジェクト中心→データ中心→マルチプルインスタンスって
ことでいいのでしょうか???

#なんかどんどん理解度を測るとは違うほうに・・・別スレ立てたほうがいいでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-09 10:05
引用:

msoさんの書き込み (2004-06-08 17:39) より:

オブジェクト中心なのはなんとなく分かる気がするのです。
そこでオブジェクト中心→データ中心→マルチプルインスタンスと定義したいのですが、
それはそれで何か違う気がしています。
#本能がちがうって騒ぎます。

#なんかどんどん理解度を測るとは違うほうに・・・別スレ立てたほうがいいでしょうか?


 自分の理解度を測っている、ってことでいいんじゃないでしょうか あ、私の理解度も測られている!?

 私としては、「データ」は“情報”しか含んでおらず、対して「オブジェクト」は“情報”だけでなく“振る舞い”も含んでいます。喩えるなら、Cの構造体は“情報”しかありませんよね。関数へのポインタを持たせて擬似的に“振る舞い”を定義することはできますが、あくまで擬似的なものですから。しかし、クラスにはメソッドという“振る舞い”も定義されます。
 その意味で、msoさんの『オブジェクト中心→データ中心』の矢印が『オブジェクトよりも大きなものとしてのデータ』ということを表しているなら、違和感を憶えます。

 単に「データ中心」ということなら、Cの構造体などで、関連性のある情報を1つにまとめて扱うことで実現されていると思います。「オブジェクト指向」に発展したのは、単に情報を保持するだけではなく、情報の扱い方を内包することで、情報が変更になったときの変更をいかに小さく押さえ込むか、というところにあると思います。
#「結合を疎にする」という、設計手法かな?
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-06-09 10:53
るぱんです。
言葉の確認でレスです。

マルチプルインスタンスで?です。
「片仮名」及び「横文字」は苦手です。

クラスから複数の実体を生み出す事・・・と受け取っていますが、意味合ってます?
一つのソースコードから複数の「違う」実体を意図的にメモリ上に作り出す事・・・?
こんな意味で捉えています。

最初に言葉の定義が無いと初めての人は講習受けてもわからないのでは・・・?

cf:
multiple
http://dictionary.goo.ne.jp/search.php?MT=multiple&kind=ej

instance
http://dictionary.goo.ne.jp/search.php?MT=instance&kind=ej

マルチプルインスタンス
http://kmaebashi.com/programmer/object/intro.html
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-06-09 12:33
msoです。

引用:

Jittaさんの書き込み

 その意味で、msoさんの『オブジェクト中心→データ中心』の矢印が『オブジェクトよりも大きなものとしてのデータ』ということを表しているなら、違和感を憶えます。



えっと矢印は大きなものということじゃなくて、
オブジェクト中心=データ中心
という感じで捉えていただきたいです。
ただ、オブジェクト中心という考えを元にデータ中心という
遷移を表すために矢印をつかっています。
→を使うよりは=を使うほうが私の考えをあらわすには適切でした。


引用:

るぱんさんの書き込み

クラスから複数の実体を生み出す事・・・と受け取っていますが、意味合ってます?
一つのソースコードから複数の「違う」実体を意図的にメモリ上に作り出す事・・・?
こんな意味で捉えています。


えっと、実は自分も100%の確信で書いていませんので、突込みをしていただけるとうれしいです。
(90%ぐらいは確信しているつもりです)
単語の確認ですが、るぱんさんのご指摘と同じです。

北斗のポン
会議室デビュー日: 2003/05/02
投稿数: 17
投稿日時: 2004-06-09 12:57
約一年ぶりぶりくらいの書き込みです。

最近、オブジェクト指向に興味を持ち始めたものなので
あまり的を射た意見ができないかもしれませんが
ちょっと、ここまで読んでみて思ったので質問させてください。

ここまで読んでみて、オブジェクト指向は「データ中心だ」とか
「オブジェクト中心だ」と言う内容を見かけましたが
オブジェクト指向では、データも一つのオブジェクトとして
考えるものではないのでしょうか?

たとえば、「人」クラスのインスタンスである「私」が
石造を作る際には「作る」と言う振る舞いに
「大きさ」などの属性を持った「石」と言うクラスのインスタンスである
「大理石」を渡すと、「お地蔵さん」が出来上がる。
といった具合に考えているのですが・・・
(大理石でお地蔵はないだろという突っ込みは無しでお願いします

ここで言う「大理石」が私の言っているデータなのですが
どうなんでしょうか?

って、msoさんのスレッドに便乗して
自分の認識レベルを図るようで申し訳ないですが・・・
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-06-09 13:14
るぱんです。

個人的に後輩に教える時に言っている言い回しです。

コード:
1.クラスができるまで
変数→構造体┬→クラス
     関数  ┘

2.クラスの特性
・データが振る舞いを持っているように捉える事ができる。
→振る舞いを持つことのできる物体(「オブジェクト」)として定義

これが(あたかも)色の違う二つのコップをデータとして認識させる事ができると言う比喩へ
繋がる。

3.クラスとインスタンス
(クラスの特性のときの補足説明として)
コードは一つ。データは(引数に寄って)様々なものを扱える。
ワンソースマルチユース?

4.クラスを中心に考えるオブジェクト指向
オブジェクト指向言語がある以上、
オブジェクト指向言語に親和性の高い「分析」「設計」があるべきだ。
→オブジェクト指向分析・設計

5.結論
これらの技術を含めて「オブジェクト指向」と言う。
細かい点は・・・
1.カプセル化
2.継承
3.オーバーライド
4.オーバーロード
5.インターフェイス
6.ポリモルフィズム
「言葉の理解」・「使い方」・「注意点:全部使うんじゃなくて必要最小限のものを使う」


と言った所です。

たたき台を出したのでどんどん叩いてやってください。

スキルアップ/キャリアアップ(JOB@IT)