- PR -

なぜオブジェクト指向を使うのか?

投稿者投稿内容
Nishizaka
ベテラン
会議室デビュー日: 2001/10/12
投稿数: 83
お住まい・勤務地: 長崎県
投稿日時: 2004-01-26 21:00
引用:

skulkerさんの書き込み (2004-01-26 20:23) より:
本質は「理解しやすく、変更に強く、保守しやすいプログラムを、簡単に、楽に作成できるか」でしょう。その本質を実現するための「抽象化」と「関心の分離」をどう実装するか、その手段のひとつとして現在最良と考えられるのがOOなのではないでしょうか。
安全性はOOの本来の目的ではないと思います。


まぁ思いつきでたらたらと書いたんで・・・。(^^;

もっと本質を書くと「いかに楽にプログラムを書くか」だと思います。
みんな楽したいんですよねぇ〜。

でも、最近はオブジェクトが複雑に成って、使う事が難しくなって来ている事が
表題の様な疑問に成っているんでしょう。(本末転倒してますよね)

ただ初心者の方に言いたいのは、オブジェクト指向を覚えるんじゃなくて使う事です。
思想や背景の理解も必要ですが、オブジェクトを使ってプログラムを楽しんで欲しいですね。
okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2004-01-26 22:00
引用:

skulkerさんの書き込み (2004-01-26 20:23) より:
引用:

Nishizakaさんの書き込み (2004-01-26 18:04) より:
事の本質は
 「いかに安全な、停止しない、安定なコードを、簡単に、誰もが楽に組めるか」
だと思いますよ。


本質は「理解しやすく、変更に強く、保守しやすいプログラムを、簡単に、楽に作成できるか」でしょう。その本質を実現するための「抽象化」と「関心の分離」をどう実装するか、その手段のひとつとして現在最良と考えられるのがOOなのではないでしょうか。
安全性はOOの本来の目的ではないと思います。



確かにOOそれ自体の本来の目的ではないでしょうけど、「理解しやすく」「変更に強く」「保守しやすい」も
結局は「安全な(バグの少ない)」を目的とした手段の一つにすぎないと思うのですが。
最終的に目指してるのはシステムの安定稼動ですよね。
そういう意味ではNishizakaさんのおっしゃってることももっともな話だと思いますよ。
広くとるか狭くとるかの違いなだけのような気がします。

とはいえ、確かにこのスレッド的には広くとりすぎな感は否めませんが、
まあ、これもアリではないでしょうか(笑)
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-26 22:09
unibon です。こんにちわ。

引用:

objectさんの書き込み (2004-01-26 11:26) より:
そして、この場合のメリットは、
対象が変化すれば、その変化そのものを反映させれば対応出来る事
そして
精度さえ上げる事が出来れば、対象にどこまでも漸近していける
という事に尽きると思います。


私もシミュレーションになぞらえるのがシックリ来ると思います。しかし、これがオブジェクト指向の利点であると同時に欠点(と言うか弱点)であるとも思います。
と言うのも、シミュレーションするためには対象となるモデルの存在が前提となり、そのモデルはすなわち科学法則から成り立ちます。しかし、ソフトウェアにはそのモデルが最初はありません。設計者が創造者になって作り込む必要があります。しかもその際に、科学法則のような単純さとは程遠い、矛盾だらけの泥臭い要求仕様から作り込まなければなりません。要求仕様は入出力(と処理内容)で規定されることが多く、いわゆる IPO(Input-Process-Output)ベースですが、これを制約条件としてそこからモデルを作るのは骨が折れます。科学者が実験結果から科学法則を発見するようなものです。
そこまで苦労するよりは、オブジェクト指向にあまりこだわらずに IPO のままで作り上げたほうが良い場合もあると思います。逆に言えば、要求仕様が素直ならばオブジェクト指向の利点が活きてくると言えます。
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2004-01-26 22:41
>まぁオブジェクト思考(指向)に付いては、まだまだ未完成な感じがしますし、
>議論百出だと思います。
ちょっと待ってください.

あくまで「オブジェクト指向」であって,「オブジェクト思考」は間違いですよね??

ジョークならいいのですが,たまに本気で間違えてるんじゃないかという
入門書があったりするので,念のため.

さらに言えば,「オブジェクト指向プログラミング」や「オブジェクト指向設計」
などでひとまとまりの単語なのであって,「オブジェクト指向」だけでは
ほとんど意味を成さないと思われます.もちろん暗黙に「オブジェクト指向プログラ
ミング」の略称と見なすことも可能ではありますが.
Nishizaka
ベテラン
会議室デビュー日: 2001/10/12
投稿数: 83
お住まい・勤務地: 長崎県
投稿日時: 2004-01-26 23:28
引用:

悪夢を統べるものさんの書き込み (2004-01-26 22:41) より:
あくまで「オブジェクト指向」であって,「オブジェクト思考」は間違いですよね??


まぁこれも色んな考えがあって、思考指向等、辞書の結果をみてどう思います?

一般的には「指向」と「思考」どちらも良く使われてはいるのですが(書籍は思考が多い)
私としては「思考」の方が、哲学的な考えで正解では無いかなぁと思っています。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2004-01-27 00:04
引用:

Nishizakaさんの書き込み (2004-01-26 23:28) より:
引用:

悪夢を統べるものさんの書き込み (2004-01-26 22:41) より:
あくまで「オブジェクト指向」であって,「オブジェクト思考」は間違いですよね??


まぁこれも色んな考えがあって、思考指向等、辞書の結果をみてどう思います?

一般的には「指向」と「思考」どちらも良く使われてはいるのですが(書籍は思考が多い)
私としては「思考」の方が、哲学的な考えで正解では無いかなぁと思っています。


ええと、一般の「指向」と「思考」を比較することはここでは避けたほうが
よいと思いますが。
言葉遊び的で雑談してる分には面白いんですけど、議論してる人の中で
共有できる概念が発散すると収拾がつかなくなります。

そもそもObject-Orientedの訳語がオブジェクト指向なわけで、orientedには
思考するといったような意味はないです。
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2004-01-27 01:26
こんばんは。

引用:

Nishizakaさんの書き込み (2004-01-26 11:24) より:
こんにちは

JAVA なプログラマでは無いですが、アッセンブラから初めて、20年近くプログラム言語に関わっている化石のようなプログラマですが...。(^^;

「何故、オブジェクト指向を使われるようになったのか?」

を私なりに考えると、初心者にでも安全なプログラムを簡単に書けるようにする為だと
思っています。

昔のアッセンブラやCでのコーディングでの最大の悩みは

 ・配列のオーバーランアクセスによるメモリ破壊に依る誤動作
 ・開放忘れによるメモリのリーク

これを如何に無くすかが最大の感心事だったのです。
今のプログラマはClass等のオブジェクトの扱いになれて、こんな事に悩む事は殆ど
無くなったと思うのですが、昔は、自分で作ったプログラムでさえ、何処でメモリを
壊しているのか、どれで開放忘れしているのかを探すのはめちゃめちゃ大変でした。

それを解決する手段の1つがオプジェクト思考によりデータのカプセル化であったと
思います。

プログラム初心者でもオブジェクトでデータを扱っている限り、余程めちゃめちゃな
事をしないかぎり、これらの事は起こらないように成っていると思います。

異論がある人も居るかも知れませんが、私的にはこれがオプジェクト思考の起源では
無いかと思ってます。



これは、誤認識と思います。当時はDOSの時代ですから手続き的プログラミングの限界が
問題になっていた訳では無いでしょう。学術的には人工知能が盛んに研究されていた
頃で、これらの研究の過程からオブジェクト指向が出てきたたと思われます。

一般的な分野にオブジェクト指向を持ち込むきっかけはマルチウィンドウでしょう。
さまざまな部品が登場してAPI が複雑になりすぎた。これを解消するため、Smalltalk
等からアイデアを借りクラスライブラリを構築した。こんなところでしょうか?
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2004-01-27 06:41
>>あくまで「オブジェクト指向」であって,「オブジェクト思考」は間違いですよね??

>まぁこれも色んな考えがあって、思考と指向等、辞書の結果をみてどう思います?
>一般的には「指向」と「思考」どちらも良く使われてはいるのですが(書籍は思考が多い)
>私としては「思考」の方が、哲学的な考えで正解では無いかなぁと思っています。
ということは,本気で間違えてか,或いは知らなかったってことですね.

>そもそもObject-Orientedの訳語がオブジェクト指向なわけで、orientedには
>思考するといったような意味はないです。
ということです.

だからこそ「オブジェクト指向言語」の「オブジェクト指向」だけを切り取るのが
無意味なんです."Object-Oriented sth"であって,"Object-Orient"とかは普通は
言いませんよね.

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