トップページ⇒tech
151コメント53KB

【オブジェクト指向】OO≠OOP【('A`)】

■ このスレッドは過去ログ倉庫に格納されています
0001('A`) ◆xVPrvmNY4Q 2006/08/28(月) 00:31:04
オブジェクト指向について

OOPじゃなくOOについて纏め上げていくスレ

このスレでは

・もちろん設計段階からOOつかってるよ!
・人に教えるときOOを叩き込むようにしてるよ!
・OOを盛り込んだプログラミング言語つくる/ったよ!
・OO(ry

などというのがやってきて、OOについて熱く語ってくれるはず
プログラムにあんまり関係ないけど、正直良い板がなかったんだ


それでは開始
0002デフォルトの名無しさん2006/08/28(月) 00:39:14
終了。
どうもありがとうございました。
0003デフォルトの名無しさん2006/08/28(月) 00:42:06
>>1,2
深いな
オブジェクトには開始と終了があるということか
0004デフォルトの名無しさん2006/08/28(月) 00:42:19
あ、書くならageで ('A`
0005('A`) ◆xVPrvmNY4Q 2006/08/28(月) 00:46:51
age

とりあえずまとまってるwikiでも載せておくか
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91

あとなんかこれ
http://www1.u-netsurf.ne.jp/~kitada/3H/
0006デフォルトの名無しさん2006/08/28(月) 00:53:56
>>5
http://www1.u-netsurf.ne.jp/~kitada/3H/ は痛すぎて正視できない
0007デフォルトの名無しさん2006/08/28(月) 01:00:57
痛すぎて正視できないなんていうから
ttp://news.80.kg/index.php?%BC%D9%B5%A4%B4%E3
みたいなのかと思ったよ。
0008デフォルトの名無しさん2006/08/28(月) 01:01:57
いい本
http://www.amazon.co.jp/exec/obidos/ASIN/4894716844
0009('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:11:20
残念ながらここではプログラミングは相手にしていないんだ

きっと純粋なOOは非常にシンプルすぎてとてもじゃないが1スレ消費できる量はないとおもう
まぁ冗長な表現がでるからもしかしたら>>400くらいまでいくかもしれないけど


OOがもしclass basedに限定されるのならデザインパターンは絶対的に有効なソフトウェア開発手法(?)だろうけど
prototype basedも含めるのならある種のデザインパターンはあまり意味をもたなくなるのもある(Factory/Stategy他)
というわけでOOはそもそもデザパタから遊離すべき考え方なのではないかと
0010デフォルトの名無しさん2006/08/28(月) 01:14:49
だからといって完全に遊離するのは違うと思うな。
少なくともその本はプログラムの本じゃないし。
カプセル化を正しく書いている本はかなり少ないけど、その本はきちんと書いているよ。
0011デフォルトの名無しさん2006/08/28(月) 01:14:51
>>9
>残念ながらここではプログラミングは相手にしていないんだ

と言いながら、>>9ではOOPの呪縛から逃れられないように見えるが。
0012デフォルトの名無しさん2006/08/28(月) 01:16:59
>>1
とりあえず、
ttp://www.objectfaq.com/oofaq2/
でいうと、どのあたりの話がしたいのか教えてくれ。
0013('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:20:51
>>10
本手元にないからあなたが感じたことをそのまま書いてくれると
スレ的に伸びが良い

>>11
どの部分?

>>12
きっとbasic、しかしclassやinstanceはobject orientedに必ず含まれるかあやしいと考えている俺ガイル
0014('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:26:32
ところで質問なんだが
OOで言うところの、「オブジェクト」ってどのような責任を持っているモノなんだ?
(classから生成されなければならないとか、実はclassもオブジェクトなんだとか、
色々有るけど明文化されてるのを見たことが無い)

眠い
0015デフォルトの名無しさん2006/08/28(月) 01:30:25
一般化された「オブジェクト」という用語に対しては責任は何もないと考える。
0016デフォルトの名無しさん2006/08/28(月) 01:32:04
>>14
OO FAQ読んでくれよ・・・
0017('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:44:29
>>16
basicsから必要そうなの引っ張ってきた

・Object-orientation is a new technology based on objects and classes.
・Object-orientation is the use of objects and classes in analysis, design, and programming.
・Object-orientation is:
 ・View Of The World - A Better Approach ・Process
 ・Evolutionary - Boehm痴 Spiral Model and Prototyping
 ・Iterative/Incremental - Easy to add to systems ・Methods ・Analysis ・Design ・Implementation
 ・Languages ・Components/Middleware (Corba, EJB/Java, Microsoft/COM)
 ・Programming Technique

あと
・Why Did OO Arise?
 ・Modeling in analysis and software design and languages for programming originally focused on process.

で、basicsから既にOOの道を外していると思うのだが
しかも簡素ではない、外延的にOOが出来ること/表現していることをズラズラならべられてもなぁ…
0018デフォルトの名無しさん2006/08/28(月) 01:48:29
そもそも、大まかに分けてもクラスベースのOO言語とプロトタイプベースのOO言語があるのに、
さらに使い方も違うし、これらの共通性をくくったところで何の意味もないと思うんだが。
0019('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:50:43
もしかして俺が方向違うのか・・・

object orient でググって見つかりそうなの
・object oriented (design) with programming
・object oriented data structures with java
・object oriented data base system
・object oriented WebForms
・object oriented with 〜

この世界にはたとえば使われて初めて形が見えてくるものがある
その一種に object oriented があるとすれば、そもそも「OOとは何か」についての俺の疑問はナンセンスであり
「OOPとは何か」や「OOを使った何か」に関して、「OO以外の何か」の部分に重点をおくべきだったのか?
・・・でもOOって何?
0020('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:53:53
>>18
だからプログラミングは切り離せって
class based なのか prototype based なのかが問題じゃない
OOについて書いていって欲しいなと>>1に(ry

ところで「共通性を括る」と示唆した意味は?
共通性があってそれを括れるものだと感じている?
括れば何か見つかると思っている?
…まぁ、いいか
0021デフォルトの名無しさん2006/08/28(月) 01:54:30
>>19
継承、カプセル化、多態、終了
0022デフォルトの名無しさん2006/08/28(月) 01:56:35
>>1は、OOについて語りたいんだろ?
ということは、クラスベースとプロトタイプベースに共通するような概念がないとダメじゃないか。
せめて、「どちらにも」ないことにはどちらかに偏ってしまうことになる。
0023('A`) ◆xVPrvmNY4Q 2006/08/28(月) 01:57:17
>>21
それら全てだけOOに必要なことなのか?
それが全てで無いとしたらどこまでOOは責任を持っている?

あと、プログラミング言語として「カプセル化」があるが、これはOOによる表現を明示的にサポートしていないCでも実現されてるんじゃね?
0024デフォルトの名無しさん2006/08/28(月) 01:58:29
>>23
おい、言語の話になってるぞw
0025デフォルトの名無しさん2006/08/28(月) 01:59:23
つまり、>>1が語りたいのはOO言語でFA?
0026('A`) ◆xVPrvmNY4Q 2006/08/28(月) 02:03:12
>>22
ということはそもそも、OOにはクラスベースかプロトタイプベースかの違いがあることでFA?
オレ的にはクラスもプロトタイプも、オブジェクトとしての性質を持ってるから反対したいんだがな。

>>24
いや、「カプセル化」の一つの具体例として思いついたのがプログラミング言語としてのそれ
他にも有るだろうが、俺もプログラマの端くれだからこの程度しか思い浮かばなかった

>>25
言語はどうでもいい
OOについて






あと、俺は語らないぞ?>>1を読んでくれ
0027デフォルトの名無しさん2006/08/28(月) 02:06:14
>>26
OOAにしたって、OODにしたって、少しは実装する言語を考えないといけないだろ?
ってことはOO自体も、何らかの実装があってはじめてOOだよな?
で、実装ってのは何種類もあっていいわけだ。
ま、最低限>>21が条件だわな。
これがあることをもとに、OOAやらOODやらOOPをするんだろ。
つまり、>>19はOOのインターフェイスともいえる。
0028('A`) ◆xVPrvmNY4Q 2006/08/28(月) 02:06:37
そもそも「言語」となると表現まで込み入って入ってしまうよな
人に伝えるからには表現しなくてはならないが、表現することによってOOの形の限界が見えてしまう。

たとえばC++で表現すればC++の限界がOOで、
UMLで表現すればUMLの限界がOOとなる。
(なので日本語でOOを表現すればいいんじゃないかと思うんだが)

概念を表現する便利な方法が思い浮かばないんだが、もしかしたらオレ以外の人間が成し遂げているかもしれない
俺はそれを待っている
0029272006/08/28(月) 02:08:49
うぉっ、アンカーミス。
>>19じゃなくて>>21
0030デフォルトの名無しさん2006/08/28(月) 02:11:27
1つまたは複数のオブジェクトがあって、そのオブジェクトの振る舞い、相互作用でシステムが成り立っていると見るのがオブジェクト指向だと思う。
これが必要条件。
その見方を分析に使えばオブジェクト指向分析。
設計に使えばオブジェクト指向設計。
プログラミングに使えばオブジェクト指向プログラミング。

で、
クラスとかプロトタイプってのはおまけだと思うな。

スレ汚しスマソ
0031('A`) ◆xVPrvmNY4Q 2006/08/28(月) 02:18:36
>>27
OO単体は存在しないでFA?あくまで誰かが意味をつけ、形を与えて初めてOO足りえる?

「誰かが意味をつける前」の意識はOO以外の何かの思想ってことになる。
となると、「その思想にどういった形を与えればOOと呼べるのか?」という検証する部分が必要になり、
OOにはもともと「こうあるべきだ」という姿があることになる。

これはOO単体が存在しないことと矛盾するのでは?

あと>>21なんて俺からすればナンセンス、
継承?それはクラスベースか?
カプセル化?それはスコープ解決だけじゃ?
多様?そもそも様とはなに?「今まで静的に解決できていたけど、今度から動的に解決する方法も組み込みました」程度なのでは?

>>30
俺も同意する。
オブジェクトにメッセージを投げると、オブジェクトがそれに反応する。
そういった相互作用による全体がオブジェクトシステムであり、
オブジェクトシステムをゴニョゴニョ考えるのがOOなのではないかと薄々感じている

…けど>>27みたいなのもあるし。
0032デフォルトの名無しさん2006/08/28(月) 02:22:59
>>31
>継承?それはクラスベースか?
だから、それを意識してる時点でだめだろう、と。
実装は関係ない。「継承」というインターフェイスがあるのみ。

あと、カプセル化はスコープ解決だけじゃないんで。
それは「情報隠蔽」

多様は、まさに>>30のようなこと。

概念を話そうとして、結局実装を意識してしまっているじゃないか。
それこそが一番の矛盾だ。
0033デフォルトの名無しさん2006/08/28(月) 02:29:08
継承とカプセル化と多態は同一のものの異なる側面を見ているような気がする。
0034('A`) ◆xVPrvmNY4Q 2006/08/28(月) 02:31:02
>>32
了解
まぁ勉強しろってことだな
よし、おやすみ
0035デフォルトの名無しさん2006/08/28(月) 02:50:18
>>17
いや、1.1以降も読んでくれよ・・・
0036デフォルトの名無しさん2006/08/28(月) 02:53:31
それと、なんで
>・Modeling in analysis and software design and languages for programming originally focused on process.
を抜き出したのか意図がわからんが、それ"forcused"だぞ。

ちゃんと読んでるのか?
0037デフォルトの名無しさん2006/08/28(月) 02:54:18
あ、間違えた。
forcusedじゃなくてfocusedね。
0038デフォルトの名無しさん2006/08/28(月) 02:56:18
ちょっと気になったので質問。
>>31
>オブジェクトにメッセージを投げると、オブジェクトがそれに反応する。
Actor理論を踏また上で書いてる?
0039('A`) ◆xVPrvmNY4Q 2006/08/28(月) 09:09:16
良く寝た気がする

>>35-37
35: そういわれてもなぁ。ま、一応読んだのはbasicsの所だし、俺の読んだ部分が間違っているわけでもなかろうと思うが
36: on processが気になるのか?
>>17は Object-oriented is な部分で少し引っ張ってきただけだがなぁ

>>38
理論なんて俺にはほぼ皆無
トライ&エラーな人間だから、基本的にバカ言うぞ俺は

だからここを建てたわけだが
('A`)ノシ
0040デフォルトの名無しさん2006/08/28(月) 09:25:15
>>39
>35: そういわれてもなぁ。
だから、basicsの1.1以降も読んでくれって。

>36: on processが気になるのか?
何を言ってるのかわからん。
「processにfocusしてきた結果software crisisを招いた、だから〜」という章だぞ?
0041デフォルトの名無しさん2006/08/28(月) 09:26:31
メタってなんだ?
0042デフォルトの名無しさん2006/08/28(月) 09:28:37
>>39
>28:たとえばC++で表現すればC++の限界がOOで、
この意味がわからん。
もうちょい詳しく説明してよ。
0043デフォルトの名無しさん2006/08/28(月) 09:30:54
>>39
なら Actor理論 または アクター理論 でぐぐってみるべし。
ちょっと視野が広がるかも
0044デフォルトの名無しさん2006/08/28(月) 09:38:07
「OOについて今から勉強します」スレはここですか?
0045デフォルトの名無しさん2006/08/28(月) 09:40:53
>>1
とりあえず、「クラスベース」とか「プロトタイプベース」とかいう言葉を発言からなくせ。
OOPLを意識してるのはお前のほうじゃないか。
■ このスレッドは過去ログ倉庫に格納されています