オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
何を面白がるかみたなもんにこそ知性が出ちゃうと思ってる
悲しいね
自覚が無いのか意固地になっちゃってるのか知らんけど モデルは問題解決のために設計するので、
まったく的外れ。
世の中を表現したいわけじゃないし、
世の中に似せる必要も全くない。 なんか最近「モデル」って言うの馬鹿の間で流行ってるの?w オブジェクト指向ってDBのエンティティを拡張したものだろ
1事実1箇所と考えたら現実に当てはめないとダメだろ エンティティからクラスを自動生成するのが今のやり方
対応しないとしたら正規化できてない 対応と言われても抽象的で分からんな。
エンティティは実態でオブジェクトはその射影だよ。
何を持って対応とするの?
エンティティとオブジェクトで可逆性は保証されてないけど エンティティだけがオブジェクト指向だと思ってるCRUDマンワロタw そーゆーさ、入れポン出しポンっていうの?超シンプルなCRUDの経験しかない奴が
オブジェクト指向とはをなんぞやを語るのやめてよマジでww >>943
何が言いたいのかわからんが、プログラミングしたい事象を、そのままオブジェクトに丸ごと落とし込むんじゃ無くて一旦分解して考える。
共通点とか過去の資産使えそうなのはそうする。
ここは他でも使えそうとかあったら分けておく。
再利用出来そうな場所と、そうでない場所を分ける。
人と車って系統的に全然違うからオブジェクト指向の動物クラスみたいなのじゃ全然違うだろ?
でも移動出来るってのは同じだ。
食事と燃料補給は違うが、エネルギーが無いと動かないってのも同じ。
そうやって全然関係無さそうなものの共通点を考えると抽象的なクラスが出来てくる。
現実のオブジェクトと違うけど、より本質に近いオブジェクトになる。 >>965
人と車を動くという共通点によって同じ操作をインターフェイスで作るみたいな感じ?
10画面程度の業務システムしか組んだことないから知らんのだけど大規模システムはそんな風にオブジェクト指向で設計するの?
オブジェクト指向入門見て分類学的に設計するものだと思ってた 966だけど、ゲームでオブジェクト指向すると動くという操作は人も車も変わらんか
業務システムじゃエンティティが正義だと思うけど、ゲームや制御じゃ事情や適用方法が違うんだろうね
制御は構造化しかやったことないけど >>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
でも残念ながら現在の主流は抽象データ型のオブジェクト指向
クラスやそれに準ずる言語機能をユーザー定義型として扱うストラウストラップらの着想が根底にあり
生命体とのアナロジーはそぐわない 大規模かは知らんが、最近は継承はあまり好まれなくなった。
委譲やインターフェースによる多態性のが好まれる。
これはおいらの推論だが、昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。
今度はPCやスマホなどの多様なGUI、webプログラミングでビューとロジックを分ける必要が出てきた。
ここにOOPは対応しきれてない。
そこで関数型言語が注目されたりした訳だが、今のOOPは関数型言語と同じ所を目指してる最中な気がする。
なぜなら、関数型言語にはコード資産が無いけどOOPには有るから。
全く違うプラットフォーム行くのは怖いから。
実際、言語は優秀でもツール類が絶望的に足りない。 継承を使わないのは、複雑になるから。
多重で継承すると、デバッグが大変。
継承でロジックの一元化を狙うより、
1番トップの1階層目ぐらいの継承で妥協しておいた方が、
ソースを体系化しやすく、プロジェクトの見通しが良くなる。 >>970
言語として多重継承できる言語の方が少ないと思う
あとロジックの一元化は継承とまた別の話だよ >>971
多重じゃなくて、継承の継承でした。
垂直の継承。
継承がロジックの一元化の全てではないが、
手法の一つなので別問題にする必要もないと思うが。
どう別問題に扱うの? 継承はあるけど継承の継承は出来ないって例えばどの言語? オブジェクトが必ずしもDBとだけ対応してるってのは
間違いじゃないかな?
関数オブジェクトとかあるし、
GoFのデザパタとかで出て来るオブジェクトは全然DB関係ない
のばっかりじゃん。
JavaScriptやUIプログラミングもオブジェクト指向化してるけど
UIなんてDBと無関係だぞ。
俺は >>937だけど、JavaScriptやっててオブジェクトは「生命体」
だと思ったんだよ、「xxxer」 ていうオブジェクト作ること多いじゃん、
だから「xxxをする人」ってことでしょ。
DIとかオブジェクトを引数としてやり取りしたり、
メソッド内で他のオブジェクトを new したりすると何やってんだか
はじめはわからなくなったけど、
「ある生命体Aの部下として生命体Bを『配属』させ、所有物のように受け渡したり、
部下として仕事をさせる」と考えると結構上手く説明がつくことに気づいたんだよ。 クラスあるいはそれに準ずる言語機能を抽象データ型(簡単にはユーザー定義型)として扱う着想において
クラスの継承により部分型を表現するのは危険をはらむということはかなり早い時期に指摘されている
だから言語機能としてのインターフェースが考案され、以降はそれを使って部分型を安全に表現する言語が汎用されている
継承は部分型を表現すること以外に、実装の重複をなくす(簡単にいうとコピペによる分散を防ぐ)役割も担っていたが
初期のインターフェースは実装を持てなかったため、継承のメリットのうち後者は捨てるか、クラスとの併用で気をつけて使うしかなかった
ただ、型クラスやトレイトという考え方や言語機能が考案され、インターフェイスも実装を持てるようになったので
クラス(というか継承)の役割はほぼ終わりつつある >>974
初心者への例え話レベルですね。
客、ウェイター、料理人、冷蔵庫(データベース)
客がウェイターに指示をする。
ウェイターが料理人に指示をする。
料理人が冷蔵庫から材料を取り出す。
でも、プログラム上では冷蔵庫から食材を料理人に渡す人がいる。
現実世界では包丁は料理人が使わないと効果を発揮しない。
プログラム上では、包丁だけあれば食材を切り刻むことができる。
店長は、店員を部下を持つ。
だが、店長の所有物ではない。
店員のリポジトリから、店コードでアクセスするものだ。
店長も店から見れば店の所有物なのだから。
だから、データにアクセスする機能は人オブジェクトにはない。 「おいら」さんはいつもの変な子でしょ。
なんか今日はこまめにID変えてるけど。
そうじゃなくて、むかしは大型コンピュータしかなかったから
大きな処理を行うにつれて「ネットワークで繋がった他のコンピュータに処理を委譲する」という
処理形式が現実になってきた。
そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。
(オブジェクトの再利用がどーのというオブジェクト指向とは別物)
そして、現代では「このシーケンシャルに処理が行われるとは限らない」は
薄れるどころかますます重要性を増してる要素なのだけど
なぜか亡霊のように『処理の間に他人が絡まなければ』って
局所的処理があたかもこれからも可能だと"信心"してる
関数型言語とかいうのが地獄の底から這い出してきて
世界の皆が困惑してる。だいたいそんな状況。 >>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スタイルのクラスを抽象データ型として扱い、その継承機構で部分型を表現する)を得ている 困惑してるだけなら関数型言語の機能取り入れたりしないだろ。
その再利用とは別のオブジェクト指向ってどうなったんよ。
MVCとかMVVMじゃ無いよね?そんな昔じゃ無いし。 >>979
そのsmalltalkやRubyのオブジェクト指向が関数型言語と同じ方向目指してるなって感じてて、でも今の所関数型言語のが相性が良いように思える。 >>981
継承の概念を作ったのはC++
そのさきは >>981
そりゃ大事だろ
誰がどういう背景でどんなことを目指して考案・発案したかって知らないでどうやって使いこなすのさ?
特に「オブジェクト指向」は同名の違う考え方が混在しているうえに
想像で語られるオレ定義が跳梁跋扈しているから、それらに翻弄されないためになおさらでしょ
>>982
誰が提唱したかを知っていれば、それを冠することで区別が付けやすいってだけの話
同じ「オブジェクト指向」でも異質な考え方があるのを区別しなければならない特殊事情を鑑みてこれは必要なこと >>983
いいこと言った
つまりオブジェクト指向に継承やカプセル化は
必要ないし害悪ですらあるってことが明らかになってきているってことだな インターフェイス、つまり型による契約プログラミングこそがオブジェクト指向の本質 >>972
あ〜深いヤツは見ててしんどいですね
ロジックの一元化を「このメソッドいろんなところで同じ処理するからまとめたよ!継承したら呼べるよ!」って感じで使ってる所だととても大変
振る舞いを一元化して異なる動作をさせたいメソッドのoverrideで使ってたら苦にはならないよ
手法としては存在するよね?って聞かれたら存在する
でも問題は設計であって継承ではないと考える >>986
お、出たな
カプセル化不要論は浸透したかい? >>986
ありがとうだけど、継承はともかくカプセル化は必要。
モジュールも広い意味でのカプセル化だからね。
それまで不要とは思わないし、副作用と縁のきれない手続き型言語にカプセル化ある種運命共同体。 結局どこまで行っても、ここで議論されてる事とは
「どう構造化し記述すべきなのか」なんである >>990
カプセル化が必要なくなるように設計するべき
手続き型に逃げちゃダメ
オブジェクト指向やりたいんでしょ? オブジェクト指向っていうのは言わば関数型なんだよね 手続きをカプセル化するだけじゃただのモジュール指向手続き型
カプセル化が要らなくなるまで設計を洗練させること
これ即ちオブジェクトの正規化なり 無駄に正規化したところで、クラスの粒度、階層がバラバラになるからほどほとにしないと無駄だよ >>992
いんや。
関数型言語したいん。
だから対岸の火事なのん。 >>977
ごめん、ちょっと言い方間違えたは、別に部下として配属する
必要はないな。
あと、thisって何かイマイチしっくり来なかったんだけど、
「この」って解釈するからどういう意味なのかわからかったが、
「俺の」と解釈しほうがいいと思った。
つまり任意のパラメータを「俺のもの」として保持しておけば、
外部から「こいつの(xxさんの)」として呼び出せるって訳だ。 なにがなんでも日常とか物理的現実に結びつけなくたってええんやで >>992
カプセル化は最重要だよ
おまえは何もわかってない
わかろうともしていない このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 96日 3時間 8分 15秒 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。