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

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

投稿者投稿内容
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-06-08 10:40
こんにちは、Wataです。
引用:

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

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


私は

 オブジェクト指向プログラム:役割中心のプログラム

と、思ってたのですがどうでしょう?
役割さえ果たしてくれればどんな風にデータを持っていても構わないので。

[qoute]
オブジェクト指向と構造化プログラムの違いって
継承という考え方があるかどうかだと思っていたのですが、
私間違ってますか???
[/quote]
一般に、オブジェクト指向プログラミング言語の特徴としては、
・継承
・隠蔽(カプセル化)
・多態性(オーバーライドなど)
が挙げられると思いますが、これらの機能によってインターフェース(役割)中心の
設計ができることが最大のメリットだと勝手に思ってます

# ただし、最初は継承による差分プログラミングが最も重宝がられるでしょうけど。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-06-08 10:44
# 2重投稿になってしまったので削除

[ メッセージ編集済み 編集者: Wata 編集日時 2004-06-08 10:47 ]
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-06-08 11:14
[quote]
Wataさんの書き込み (2004-06-08 10:40) より:
[quote]

あとは 機能部品としてのコンポーネント化というのもあると思います。
オブジェクト指向プログラムというと敷居高そうですが?
部品化という観点からとらえるとおのずと

・継承
・隠蔽(カプセル化)
・多態性(オーバーライドなど)

これらのメリットのよさが発揮できるのでは
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-06-08 11:41
引用:

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

模範解答としては

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

ということだったのですが、アレ?って思っています。
オブジェクト指向と構造化プログラムの違いって
継承という考え方があるかどうかだと思っていたのですが、
私間違ってますか???
データ中心のプログラムって構造化プログラムでもできますよね?



正解があれば欲しい所ですね。
では、一気に書き連ねます。 m(_ _)m

1.オブジェクト指向自体の性質

  勉強しても腐る程の「見解」はあっても「解答」がどこにも存在しないのは
  それが「オブジェクト指向」の性質の結果であると捉えています。(結構、重要と思う)

2.オブジェクト指向と構造化、データとロジックの関係

 私の見解では、下記の通り考えています。

 ・オブジェクト指向:データとロジックを分離しない。
 ・構造化:データとロジックを分離する。

 構造化の本を読むと、「データ中心」と「機能中心」の概念は既に存在しています。
 つまり、「構造化」と「データ中心」は(分析方法)と(着眼点)の関係であり本来は、
 同一の物を示していない様です。

3.『オブジェクト指向:データとロジックを分離しない。』

 噛み砕いて説明すると。オブジェクトとは人が認識する単位と考えており、
 また別の視点で深く考えれば、実は「ロジック」と「データ」の差は存在しません。

 例えば「プログラムソース」はロジックと考えるかもしれませんが、これは
 コンパイラーにとって「データ」でしかありませんし、
 ではコンパイラーがロジックかと言うと、OSから見るとバイナリデータです。
 (技術的表現が稚拙かもしれませんが、そこは勘弁。)

 これは、私達が勝手な視点で対象物を「ロジックとデータ」に識別しているだけです。

4.オブジェクト指向の凄い所。

 私が思うオブジェクト指向で強烈だと思う所です。

 既存の構造化技法の考えでは、データとロジックを分離します。つまり視点が
 固定である為、分解の限界が生じます。この限界は言語/ツール/ハードの仕様で
 確定します。

 それに対し、オブジェクト指向はデータとロジックの分離は後付けに出来る為、
 視点を変更しながら対象物の性質を分解出来ます。この際の分解の限界は、
 分解する人の認識限界となります。つまり個人の知識や認識パターンですね。

 この際「オブジェクト指向で分解したレベル」と「言語/ツール/ハードの仕様のレベル」が
 一致した状態が実装可能な条件を満たす話であって、
 ここで設計を止めると構造化での設計と違いは出難いと考えます。

5.オブジェクト指向にならない問題。

 『4』の説明を逆に考えれば、オブジェクト指向なのに構造化技法の様に作ってしまうのは、
 分解する際の設計時の視点が、言語/ツール/ハードの仕様にだけに置いている為と
 考えます。

 一回、言語/ツール/ハードの仕様を無視して、対象物を論理設計でどこまで
 オブジェクト指向で設計(分解)出来るか挑戦すると面白いと思います。

6.100円ライターを例にした説明

 100円ライターを設計しますが、科学知識が無い為、稚拙な説明や嘘が多いと
 思いますので、そこは御了承下さい。

  1.石、容器、金具、液に分離します。

  2.金具を動かすと火花が飛んで、液を減らしながら火を生成します。

  <ここまでが構造化で考える限界(設計の辞め所)ですね。>

  3.なぜ?火花が出るか。
    「金具」を動かすとその摩擦により「石」を磨耗させ、
    磨耗した「石」は温度が高くなります。この高温状態の石が「火花」です。

  4.火は何か?
    火はガス化された液体が、「火花」や「既に燃焼しているガス」により
    燃焼状態になった「ガス」の塊。

 この様になぜ?どの様な関係?と言う分解がず〜と続く続くわけです。
 で、「100円ライター」を「ガスコンロ」に変えた場合、構造化で分解した物は
 再利用する箇所が殆どありませんが、3(石ではなく電池の電気ですね)と
 4の論理設計は再利用出来ますね。

 また、「100円ライター」を「ガスコンロ」に対する2つの知識を用いて
 抽象化すれば、火をつける道具の抽象的なモデル図が出来あがります。
 この際、1,2,3,4とも全て再利用できる状態になります。

 これがオブジェクト指向を用いた結果の「生産性が良い」と言われる所以であり。
 多角的な視点を求める所が、「パラダイム転換」であると言われる所以と思います。

7.追記

 ただ、この話を一気にする事は問題があると思います。
 あくまでも、オブジェクト指向の基本用語と、その効果を体験させ、
 設計の重要性を伝えてからのステージと思います。

 そしてこのステージは、自分の視野の狭さ、物の捕らえ方を変える必要性が
 ある事を教えてくれるだけと思います。(と言うより、私がそのレベル)

ここまで、読みきった方、お疲れ様でした。
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-06-08 12:02
こんにちは。

ところで、いままでの書き込みとは全然関係ありませんが、
なぜ、今になってオブジェクト指向だ〜!とみんな注目し出したのですかね?
どっかの本で読んだ記憶があるんですが、結構昔からあったような、、、
なんか、次どんな理論が出てくるか楽しみです。そして、どれくらいの期間で
オブジェクト指向が忘れ去られるかも結構興味があります。^o^

_________________
tak3
ベテラン
会議室デビュー日: 2004/04/15
投稿数: 80
お住まい・勤務地: 菜の花・銀杏
投稿日時: 2004-06-08 12:21
引用:

結構な人数を今期中に全員オブジェクト指向の考え方を
マスターさせろと上司から命令されました。


上司なり、どっかからの”マスター”の基準がないと結局、勉強会の成果が判断できないですよね。
上司も”これができたらマスターだ”なんて考えは持っていないと思いますが、
自分たちなりのマスターとヨソからの評価のマスターのずれがあると結局誰もマスターしていないことになってしまうのでは?

で、ぶっちゃけた話、いままでのオブジェクト指向の本質とか勿論重要なことだとは思うのですが、
今回のケース(勉強会)だともうちょっと手抜きして、「お作法」だけ教えてあげれば良いのでは?と思います。

カプセル化、抽象化(ポリモーフィズム)を使った例題と、なぜこのように設計するのか?
再利用性と、モジュール独立性とかを説明してあげれば、とりあえずは問題のあるコードを
書く人がいなくなると思います。

あとオブジェクト指向の理解度を測る質問として再利用の定義を質問するのは結構重要かと
1.関数クラス作成によるライブラリとしての再利用
2.継承による差分コーディング(親クラスの再利用)
3.ポリモーフィズムによる設計、モデルの再利用

私の周りには1を指して再利用と言ってる人が大勢いましたので・・・
オブジェクト指向言語でコーディングすればオブジェクト指向でしょ?とか(苦笑)
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2004-06-08 13:20
objectです。

基本的な部分で気になったので、一言だけ。

「構造化」に関しては、その背景に「構造主義」があると私は思います。
「構造主義」自体は、数学の群論に影響を受けていると思います。

次に、「オブジェクト指向」は、基本的な部分では数学の「カテゴリ論」と関連があると私は思っています。

それでは、「群論」と「カテゴリ論」は何が違うのか?

・「群論」はある構造に対する手法を含めた理論だと思います。
・「カテゴリ論」はもっと一般的な数学自体に対する方法論であると私は思っています。

少しでも参考になれば幸いです。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-06-08 13:28
どもでふ。がるです。
なんか楽しそうなので混ぜてくださいませ(笑

個人的には
「オブジェクト指向的アプローチで設計、構造化プログラミングをする」
ってのを、特にC言語でよくやってます。

この二つって共存する、或いは包括的要素の多いものに感じる
のですがどんなもんでしょう?
(ってか、構造化できていないクラスは絶対に見たくないの;;)

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