X



オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0952デフォルトの名無しさん
垢版 |
2017/07/06(木) 12:27:47.00ID:jsnas7L+
何を面白がるかみたなもんにこそ知性が出ちゃうと思ってる
悲しいね
自覚が無いのか意固地になっちゃってるのか知らんけど
0953デフォルトの名無しさん
垢版 |
2017/07/06(木) 18:21:22.89ID:j+3WJv+Z
モデルは問題解決のために設計するので、
まったく的外れ。

世の中を表現したいわけじゃないし、
世の中に似せる必要も全くない。
0954デフォルトの名無しさん
垢版 |
2017/07/06(木) 19:22:23.33ID:0T2UvbzF
なんか最近「モデル」って言うの馬鹿の間で流行ってるの?w
0956デフォルトの名無しさん
垢版 |
2017/07/06(木) 19:40:14.63ID:rLOZYnLv
オブジェクト指向ってDBのエンティティを拡張したものだろ

1事実1箇所と考えたら現実に当てはめないとダメだろ
0959デフォルトの名無しさん
垢版 |
2017/07/06(木) 20:45:03.97ID:ecitQSu4
エンティティとオブジェクトは対応するものだよ
0960デフォルトの名無しさん
垢版 |
2017/07/06(木) 20:47:16.64ID:ecitQSu4
エンティティからクラスを自動生成するのが今のやり方
対応しないとしたら正規化できてない
0962デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:39:48.30ID:x/UayICR
対応と言われても抽象的で分からんな。
エンティティは実態でオブジェクトはその射影だよ。

何を持って対応とするの?
エンティティとオブジェクトで可逆性は保証されてないけど
0964デフォルトの名無しさん
垢版 |
2017/07/07(金) 00:06:20.53ID:ZLKHtWHA
そーゆーさ、入れポン出しポンっていうの?超シンプルなCRUDの経験しかない奴が
オブジェクト指向とはをなんぞやを語るのやめてよマジでww
0965デフォルトの名無しさん
垢版 |
2017/07/07(金) 05:43:32.56ID:1OiH67XQ
>>943
何が言いたいのかわからんが、プログラミングしたい事象を、そのままオブジェクトに丸ごと落とし込むんじゃ無くて一旦分解して考える。
共通点とか過去の資産使えそうなのはそうする。
ここは他でも使えそうとかあったら分けておく。
再利用出来そうな場所と、そうでない場所を分ける。

人と車って系統的に全然違うからオブジェクト指向の動物クラスみたいなのじゃ全然違うだろ?
でも移動出来るってのは同じだ。
食事と燃料補給は違うが、エネルギーが無いと動かないってのも同じ。
そうやって全然関係無さそうなものの共通点を考えると抽象的なクラスが出来てくる。
現実のオブジェクトと違うけど、より本質に近いオブジェクトになる。
0966デフォルトの名無しさん
垢版 |
2017/07/07(金) 07:21:29.95ID:5Fyb0GDQ
>>965
人と車を動くという共通点によって同じ操作をインターフェイスで作るみたいな感じ?

10画面程度の業務システムしか組んだことないから知らんのだけど大規模システムはそんな風にオブジェクト指向で設計するの?

オブジェクト指向入門見て分類学的に設計するものだと思ってた
0967デフォルトの名無しさん
垢版 |
2017/07/07(金) 07:25:14.64ID:5Fyb0GDQ
966だけど、ゲームでオブジェクト指向すると動くという操作は人も車も変わらんか

業務システムじゃエンティティが正義だと思うけど、ゲームや制御じゃ事情や適用方法が違うんだろうね

制御は構造化しかやったことないけど
0968デフォルトの名無しさん
垢版 |
2017/07/07(金) 07:33:06.32ID:DRnLdr12
>>937
アラン・ケイのメッセージングのオブジェクト指向がまさにその着想だな

http://worrydream.com/EarlyHistoryOfSmalltalk/
My biology major had focused on both cell metabolism and
larger scale morphogenesis with its notions of simple mechanisms
controlling complex processes

でも残念ながら現在の主流は抽象データ型のオブジェクト指向
クラスやそれに準ずる言語機能をユーザー定義型として扱うストラウストラップらの着想が根底にあり
生命体とのアナロジーはそぐわない
0969デフォルトの名無しさん
垢版 |
2017/07/07(金) 07:44:57.59ID:JJYyKRQq
大規模かは知らんが、最近は継承はあまり好まれなくなった。
委譲やインターフェースによる多態性のが好まれる。

これはおいらの推論だが、昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。
今度はPCやスマホなどの多様なGUI、webプログラミングでビューとロジックを分ける必要が出てきた。
ここにOOPは対応しきれてない。

そこで関数型言語が注目されたりした訳だが、今のOOPは関数型言語と同じ所を目指してる最中な気がする。
なぜなら、関数型言語にはコード資産が無いけどOOPには有るから。
全く違うプラットフォーム行くのは怖いから。
実際、言語は優秀でもツール類が絶望的に足りない。
0970デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:16:46.35ID:G2hd19q1
継承を使わないのは、複雑になるから。
多重で継承すると、デバッグが大変。

継承でロジックの一元化を狙うより、
1番トップの1階層目ぐらいの継承で妥協しておいた方が、
ソースを体系化しやすく、プロジェクトの見通しが良くなる。
0971デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:31:15.22ID:SENaJwbT
>>970
言語として多重継承できる言語の方が少ないと思う

あとロジックの一元化は継承とまた別の話だよ
0972デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:42:08.67ID:G2hd19q1
>>971
多重じゃなくて、継承の継承でした。
垂直の継承。

継承がロジックの一元化の全てではないが、
手法の一つなので別問題にする必要もないと思うが。
どう別問題に扱うの?
0974デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:54:25.16ID:8UX+Q+HA
オブジェクトが必ずしもDBとだけ対応してるってのは
間違いじゃないかな?
関数オブジェクトとかあるし、
GoFのデザパタとかで出て来るオブジェクトは全然DB関係ない
のばっかりじゃん。
JavaScriptやUIプログラミングもオブジェクト指向化してるけど
UIなんてDBと無関係だぞ。
俺は >>937だけど、JavaScriptやっててオブジェクトは「生命体」
だと思ったんだよ、「xxxer」 ていうオブジェクト作ること多いじゃん、
だから「xxxをする人」ってことでしょ。
DIとかオブジェクトを引数としてやり取りしたり、
メソッド内で他のオブジェクトを new したりすると何やってんだか
はじめはわからなくなったけど、
「ある生命体Aの部下として生命体Bを『配属』させ、所有物のように受け渡したり、
部下として仕事をさせる」と考えると結構上手く説明がつくことに気づいたんだよ。
0976デフォルトの名無しさん
垢版 |
2017/07/07(金) 09:00:08.09ID:U3HkjAD4
クラスあるいはそれに準ずる言語機能を抽象データ型(簡単にはユーザー定義型)として扱う着想において
クラスの継承により部分型を表現するのは危険をはらむということはかなり早い時期に指摘されている
だから言語機能としてのインターフェースが考案され、以降はそれを使って部分型を安全に表現する言語が汎用されている

継承は部分型を表現すること以外に、実装の重複をなくす(簡単にいうとコピペによる分散を防ぐ)役割も担っていたが
初期のインターフェースは実装を持てなかったため、継承のメリットのうち後者は捨てるか、クラスとの併用で気をつけて使うしかなかった

ただ、型クラスやトレイトという考え方や言語機能が考案され、インターフェイスも実装を持てるようになったので
クラス(というか継承)の役割はほぼ終わりつつある
0977デフォルトの名無しさん
垢版 |
2017/07/07(金) 09:28:29.21ID:G2hd19q1
>>974
初心者への例え話レベルですね。

客、ウェイター、料理人、冷蔵庫(データベース)

客がウェイターに指示をする。
ウェイターが料理人に指示をする。
料理人が冷蔵庫から材料を取り出す。
でも、プログラム上では冷蔵庫から食材を料理人に渡す人がいる。
現実世界では包丁は料理人が使わないと効果を発揮しない。
プログラム上では、包丁だけあれば食材を切り刻むことができる。

店長は、店員を部下を持つ。
だが、店長の所有物ではない。
店員のリポジトリから、店コードでアクセスするものだ。
店長も店から見れば店の所有物なのだから。

だから、データにアクセスする機能は人オブジェクトにはない。
0978デフォルトの名無しさん
垢版 |
2017/07/07(金) 11:35:17.41ID:6eecx6PE
「おいら」さんはいつもの変な子でしょ。
なんか今日はこまめにID変えてるけど。

そうじゃなくて、むかしは大型コンピュータしかなかったから
大きな処理を行うにつれて「ネットワークで繋がった他のコンピュータに処理を委譲する」という
処理形式が現実になってきた。
そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。
(オブジェクトの再利用がどーのというオブジェクト指向とは別物)

そして、現代では「このシーケンシャルに処理が行われるとは限らない」は
薄れるどころかますます重要性を増してる要素なのだけど
なぜか亡霊のように『処理の間に他人が絡まなければ』って
局所的処理があたかもこれからも可能だと"信心"してる
関数型言語とかいうのが地獄の底から這い出してきて
世界の皆が困惑してる。だいたいそんな状況。
0979デフォルトの名無しさん
垢版 |
2017/07/07(金) 11:57:04.53ID:U3HkjAD4
>>969
> 昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。

それはアラン・ケイのメッセージングのOOPの話で、継承を前提とした現在主流の抽象データ型のOOPとは関係ないよ
念のためメッセージングのOOPというのは所謂「オブジェクトにメッセージを送って」とかいうお題目を唱えながら
設計・実装・実行・運用と幅広い局面における「可能な限りの決定の遅延」を徹底する考え方ね
http://squab.no-ip.com/collab/uploads/61/IsSoftwareEngineeringAnOxymoron.pdf

>>978
> そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
> シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
> そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
> その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。

そんな「オブジェクト指向」の出自は初耳なんだけど誰が提唱したもの?

ちなみに抽象データ型のオブジェクト指向は、C with Classe(後にC++)のスウストラップのこちらの所謂 what-is 論文が有名
http://dl.acm.org/citation.cfm?id=624721
同時期にEiffelのメイヤー、抽象データ型のリスコフ、SIMULAでクラスとオブジェクトを考案したダールとニガードも
同様の着想(SIMULAスタイルのクラスを抽象データ型として扱い、その継承機構で部分型を表現する)を得ている
0980デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:01:56.23ID:xvg52mfm
困惑してるだけなら関数型言語の機能取り入れたりしないだろ。
その再利用とは別のオブジェクト指向ってどうなったんよ。
MVCとかMVVMじゃ無いよね?そんな昔じゃ無いし。
0983デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:13:19.21ID:xvg52mfm
>>979
そのsmalltalkやRubyのオブジェクト指向が関数型言語と同じ方向目指してるなって感じてて、でも今の所関数型言語のが相性が良いように思える。
0985デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:32:20.58ID:U3HkjAD4
>>981
そりゃ大事だろ
誰がどういう背景でどんなことを目指して考案・発案したかって知らないでどうやって使いこなすのさ?

特に「オブジェクト指向」は同名の違う考え方が混在しているうえに
想像で語られるオレ定義が跳梁跋扈しているから、それらに翻弄されないためになおさらでしょ

>>982
誰が提唱したかを知っていれば、それを冠することで区別が付けやすいってだけの話
同じ「オブジェクト指向」でも異質な考え方があるのを区別しなければならない特殊事情を鑑みてこれは必要なこと
0986デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:33:44.47ID:vHHwjjQx
>>983
いいこと言った
つまりオブジェクト指向に継承やカプセル化は
必要ないし害悪ですらあるってことが明らかになってきているってことだな
0987デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:35:07.48ID:vHHwjjQx
インターフェイス、つまり型による契約プログラミングこそがオブジェクト指向の本質
0988デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:35:11.95ID:SENaJwbT
>>972
あ〜深いヤツは見ててしんどいですね

ロジックの一元化を「このメソッドいろんなところで同じ処理するからまとめたよ!継承したら呼べるよ!」って感じで使ってる所だととても大変
振る舞いを一元化して異なる動作をさせたいメソッドのoverrideで使ってたら苦にはならないよ

手法としては存在するよね?って聞かれたら存在する
でも問題は設計であって継承ではないと考える
0990デフォルトの名無しさん
垢版 |
2017/07/07(金) 13:06:08.89ID:xvg52mfm
>>986
ありがとうだけど、継承はともかくカプセル化は必要。
モジュールも広い意味でのカプセル化だからね。
それまで不要とは思わないし、副作用と縁のきれない手続き型言語にカプセル化ある種運命共同体。
0991デフォルトの名無しさん
垢版 |
2017/07/07(金) 13:30:17.87ID:XBLDwFYK
結局どこまで行っても、ここで議論されてる事とは
「どう構造化し記述すべきなのか」なんである
0992デフォルトの名無しさん
垢版 |
2017/07/07(金) 14:05:53.15ID:vHHwjjQx
>>990
カプセル化が必要なくなるように設計するべき
手続き型に逃げちゃダメ
オブジェクト指向やりたいんでしょ?
0994デフォルトの名無しさん
垢版 |
2017/07/07(金) 14:08:59.90ID:vHHwjjQx
手続きをカプセル化するだけじゃただのモジュール指向手続き型
カプセル化が要らなくなるまで設計を洗練させること
これ即ちオブジェクトの正規化なり
0995デフォルトの名無しさん
垢版 |
2017/07/07(金) 14:43:00.99ID:G2hd19q1
無駄に正規化したところで、クラスの粒度、階層がバラバラになるからほどほとにしないと無駄だよ
0997デフォルトの名無しさん
垢版 |
2017/07/07(金) 18:42:32.82ID:eVPhxI3P
>>992
いんや。
関数型言語したいん。
だから対岸の火事なのん。
0998デフォルトの名無しさん
垢版 |
2017/07/07(金) 19:12:56.87ID:8UX+Q+HA
>>977
ごめん、ちょっと言い方間違えたは、別に部下として配属する
必要はないな。
あと、thisって何かイマイチしっくり来なかったんだけど、
「この」って解釈するからどういう意味なのかわからかったが、
「俺の」と解釈しほうがいいと思った。
つまり任意のパラメータを「俺のもの」として保持しておけば、
外部から「こいつの(xxさんの)」として呼び出せるって訳だ。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 96日 3時間 8分 15秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況