オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/02(日) 16:30:38.65ID:n7h/bBRg
前スレ
オブジェクト指向って自然な文法だな 2
http://echo.2ch.net/test/read.cgi/tech/1490506257/
2017/04/02(日) 21:12:28.24ID:DzpU0i7z
ドアクラスの設計に上位クラスの意思が必要なら、それはモジュール分解できてないってことじゃね
2017/04/02(日) 21:21:56.68ID:l1VJjSJU
>>9
こんなんで意味不明とか言ってたらついていけんぞ
このドアに猫を通すにはどうするとか言ってたんだから
2017/04/02(日) 21:30:37.45ID:TvISwdcG
>>10
〇〇がどう使われるかは全くわかりません
〇〇にはこれこれこういう属性(性質)がありえます
〇〇を設計せよ
ふぁい!?

モジュール分解とか全く関係ない
2017/04/02(日) 21:38:49.75ID:DzpU0i7z
ドアストッパーは回転角に制限を与える
ドアクローザーは、半開状態時にゆるやかに閉状態へと変化する機構

犬猫が突進すればドアタイプと重量によっては開き、場合によっては開かない
2017/04/02(日) 22:03:35.89ID:TvISwdcG
建築家がCADで使うためのドアのモデル
ドアメーカーが生産管理のために使うためのドアのモデル
住宅メーカーが受注管理のために使うドアのモデル
ドア開け系のスマホゲームで使うためのドアのモデル

これらが同じになるわけがないんだから
どういう目的でどういう風にソフトウェア上で使われるのか
それがわからないものを設計しようとするのは時間の無駄
2017/04/03(月) 01:16:59.01ID:LFQkDYJE
>>14
よくよく考えてみるととても難しいが完全不可能ではないしょ、具体的にこんなドアと呼んでないからこそ
どんな状況とパターンでもドアをドアと呼ぶに相応しい共通項を見つけるゲームや
投げる物ではないし食べる物でもないしまぁある程度までは
2017/04/03(月) 11:28:24.86ID:MWcUZH/3
なんでメソッド名って三単現じゃないことが多いの?
2017/04/03(月) 12:06:00.26ID:4MLmk5yA
開発者に嫌われているプログラミング言語 25
http://news.mynavi.jp/news/2017/03/30/133/
http://n.mynv.jp/news/2017/03/30/133/images/001l.jpg
Visual Basic 6
VBA
CoffeeScript
VB.NET
Matlab
Objective-C
Assembly
Perl
Lua
Hack

Groovy
Common Lisp
Dart
Erland
PHP
C
Ruby
R
Java
Julia
C++
SQL
Haskell
F#
JavaScript
2017/04/03(月) 12:20:09.66ID:28dsjWMc
>>17
他のせんたくしが
2017/04/03(月) 12:21:52.64ID:28dsjWMc
>>17
他の選択肢を比較的簡単に選べるものが上位になってる気がする。
つまりdisりやすいっていう
20デフォルトの名無しさん
垢版 |
2017/04/03(月) 13:17:31.81ID:DYsJriQe
>>1
糞みたいなテンプル貼るのやめろ
2017/04/03(月) 19:08:53.61ID:gZTdU5yD
>>17
名前さえ上がらないCobol
2017/04/03(月) 19:16:57.14ID:Upl31vzs
まだやってんの?
23デフォルトの名無しさん
垢版 |
2017/04/03(月) 20:08:09.88ID:VDwG6zpG
>>22
最後にレスした奴が勝者だからな
2017/04/03(月) 20:17:49.73ID:Upl31vzs
勝ち負けってあったの?
2017/04/03(月) 20:20:18.71ID:7vHtJU9B
俺2chの議論で負けたことない

変なこと言い出したり話がそれたりで、俺がレスしなくなるか
俺が相手をやりこめて、相手がレスしなくなるかだ
2017/04/03(月) 20:23:36.71ID:Upl31vzs
勝負してないじゃん
27デフォルトの名無しさん
垢版 |
2017/04/03(月) 20:54:50.17ID:OUsiIH4G
土俵の下からヤジ飛ばしているだけで勝負している気になってるいつものあいつかw
2017/04/03(月) 20:57:17.28ID:LFQkDYJE
ウィナーオブジェクト作ろうぜ。とりあえずメソッドはコールだけ
2017/04/03(月) 21:47:10.19ID:7vHtJU9B
>>14
そこが決まってないからこそ
物事の捉えかたが人によって違うのがいいんだろ

最初から無駄なのはわかりきってるんだから無駄とかいうな
2017/04/03(月) 21:49:08.96ID:XYXk6jFX
>>15
どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるのは
ソフトウェアの設計やプログラミングの話ではなく言語学や哲学における分節化の話
なので板違い
2017/04/03(月) 21:57:16.66ID:XYXk6jFX
>>29
どういうシステムでどういう使われ方をするドアを想定した結果なのかを示せば
少しはマシだったろうけどそれをやったやつ前スレで1人でもいたか?

コンテキスト無しで現実をモデリングしようとしても設計力は高まるどころか低下するだけ
オブジェクト指向かどうかとか関係ない
無駄
2017/04/03(月) 21:57:20.04ID:LFQkDYJE
>>30
つまりオブジェクト指向は哲学と言うことだな。納得出来る
2017/04/03(月) 22:05:05.77ID:Vb9tETQW
抽象化()
2017/04/03(月) 22:05:09.73ID:MrxLrKt6
>>30
> どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるのは

取っ手のないドアがあるから、取っ手は共通項には含まれない
鍵のないドアもある。
材質も関係ない。
2017/04/03(月) 22:18:18.28ID:MrxLrKt6
なるほど、そうか。

オブジェクト指向を「現実世界を構成しているクラスを見つけ出す作業」と
捉えるからややこしいことになるんだ。

手続き型でも関数型言語でも、現実世界を表現する関数を見つけ出す作業
なんて考えるやつはいない。

見つけ出す作業ではなくて、作り出す作業なんだ。
現実世界ではなくターゲットとする要件を実現する
クラスや関数を自分たちで作り出す作業。

だから最初に要件が決まらないとクラスも関数も作れない

あたり前のことだが、混ぜっ返すやつは
「そのクラス・関数では世界のすべてを表現できない」と言ってるわけだな。
36デフォルトの名無しさん
垢版 |
2017/04/03(月) 22:25:42.68ID:VDwG6zpG
プログラミングが目的になっちゃうと
そういう思考になるのかしらん?
2017/04/03(月) 22:25:47.59ID:XYXk6jFX
どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるってのは
ドアという言葉を定義づけるのと同じこと

言葉を定義づけるには「ドアと窓は何が違うのか?」とか
「ふすまや障子はドアなのか?」みたいに隣接する概念と比較する以外有効な方法はない

で「ドアと窓は何が違うか?」みたいな問いを考えるゲームがしたけりゃ
どっか他でやりなよ
ここは板違い
2017/04/03(月) 22:42:21.43ID:MrxLrKt6
そう。我々がやってるのは、要件でドアと定義されたものを
クラスに落とし込む作業なのだ。

決しての中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
2017/04/03(月) 22:42:49.69ID:MrxLrKt6
決して世の中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
2017/04/03(月) 23:09:18.39ID:7vHtJU9B
>>31
同じドアを扱っているにもかかわらず
最初は小売りか設計かと思わせておいて
いきなり「猫に押される」っていうコンテキストも抽象度も異なるものが割り込んでくるのが
問題の肝

多少視点をゆさぶられても大丈夫なのを設計しろってことだろ
そこで状況がわかんないとか言ってたら降参してるようなもんじゃん
2017/04/03(月) 23:57:11.85ID:7vHtJU9B
なんかわからんけど急にしにたくなった
2017/04/04(火) 00:16:51.37ID:L1aPO2JG
俺も俺も
2017/04/04(火) 00:32:31.54ID:Y80clcxw
いいぞ。遠慮なく死ね
2017/04/04(火) 00:33:57.09ID:Tk79CS9z
現実世界をモデリングできているか、とかいう謎の評価基準

迷宮を進むゲームでドアとして表現されたドアがあったとして、そのモデリングの良し悪しを
・家の内装をVR体験させるソフトでも使えるか
・大型家電通販でドア付きの部屋に搬入できるかをチェックするプログラムでも使えるか
・エアコンの空調のシミュレーションでも使えるか
で判断したことがあるのかな。そうだったら何も言えない。
2017/04/04(火) 01:01:13.36ID:AiGPoot5
オブジェクト指向にむりやり難癖つけてるけど結局
「具体性を持たせることで取り回しが楽になった」に対して
「これには対応できるのか!」「こういう例外はどうだ!」って難癖てるだけだから
「で、おまえの棲んでるとこの方は取り回しどうなの?」って
隠れ家に光浴びせると黙って棲んでる泥に潜っていくというね…
2017/04/04(火) 01:32:16.54ID:QcgfrUUh
>>40
問題の肝でもなんでもないわw

そういうふうに設計が変わった時に
安全な方法で設計を変更するのが
リファクタリングだよ。

どっかのバカ共は、汚いコードを修正するものだと
勘違いしているようだがね。

オブジェクト指向に限らず、変更はあるのだから
その変化についていく技術が重要
2017/04/04(火) 01:37:41.67ID:TSsDdMVB
>>17
Swiftが入ってない
やり直し
2017/04/04(火) 05:34:43.80ID:ld6GL0Sw
キャットドア問題解決したのか?
49デフォルトの名無しさん
垢版 |
2017/04/04(火) 07:33:17.45ID:gTa0RwdG
素材まで網羅した完璧なドアの設計を最初からしなくて良いのがオブジェクト指向の強みなんじゃね

難癖野郎の要望にも応えられる
50デフォルトの名無しさん
垢版 |
2017/04/04(火) 07:34:20.63ID:gTa0RwdG
>>17
C#最高なだけじゃねえか
2017/04/04(火) 15:08:10.80ID:AeH3x9f/
今後も使い続けたいと思うかどうかの割合が低いもの

嫌われている

さすがマイナビ
堂々とすり替えw
52デフォルトの名無しさん
垢版 |
2017/04/04(火) 18:42:21.83ID:PnaBNYoq
データベース操作クラスって
アンチパターンらしいですけど
世間ではどうやって操作をまとめてるんですか?
2017/04/04(火) 18:44:12.01ID:pyoNKlrC
>>52
まず、アンチパターンだと言ってる人に聞いてみてください。
54デフォルトの名無しさん
垢版 |
2017/04/04(火) 19:01:23.29ID:12S8JRG0
オブジェクト指向って、
プログラミングを自動化=部品化してくれるものというイメージしかない。
プログラマはプラモデルを組み立てているような感覚。
2017/04/04(火) 19:22:07.15ID:6xG2515u
>>52
レコードセットとかフィールドとかトランザクションを抽象化することの話?
2017/04/04(火) 19:48:05.98ID:XraiJtPm
DAOみたいなのがクソなだけで、アクセスを抽象化したクラスは必要。
2017/04/04(火) 19:54:26.70ID:bhbbdSm0
>>54
これがオブジェクト指向の一つの存在パターンやしな
スマホアプリとかの画面パーツはこれで配布してるし
5852
垢版 |
2017/04/04(火) 20:11:51.69ID:PnaBNYoq
操作がクラス名としておかしいと、
何かの読み物で読みました

名詞じゃないクラスは
オブジェクト指向が出来ていないと
疑えと

じゃあデータベースなら良いのかなと
思いましたが、屁理屈かなとも思い
2017/04/04(火) 20:18:23.65ID:y0lCbigz
それってUpdateHogeクラスみたいなのがあるってことなの?
Commandパターンとかなら理解できるが
データベース操作用にそういうクラスは普通作らないわな
60デフォルトの名無しさん
垢版 |
2017/04/04(火) 20:57:28.90ID:pJiiTfw5
>>56
その抽象化がDAOやろ?
2017/04/04(火) 21:01:19.65ID:eKQOUvI0
DAOクラスの設計までごちゃごちゃ言い出すのがオブジェクト指向

お前らの話聞いてたらデータベースにつなぐのに何年かかんだよ
2017/04/04(火) 21:08:11.49ID:QcgfrUUh
>>61
説明だけなら数分もあれば終わるだろうから
それ聞いて接続できるまでの時間はお前次第だと思う。
2017/04/04(火) 21:08:42.56ID:8WGG2cnP
extensionがすべて解決してくれる…!
64デフォルトの名無しさん
垢版 |
2017/04/04(火) 21:09:58.53ID:pJiiTfw5
でもDAOが糞面倒なのは同意だが
2017/04/04(火) 21:26:31.39ID:y0lCbigz
>>60
リポジトリ
2017/04/04(火) 21:38:41.73ID:bhbbdSm0
db操作クラスっていかんのか
名前の通りdbから変数やデータ取り出して入れる専用クラスって意味でいいんだよな?

オブジェクトで使い易いんじゃないのか??
2017/04/04(火) 21:57:16.59ID:ld6GL0Sw
db操作クラスにキャットドアつけよーぜ!
2017/04/04(火) 23:04:38.14ID:eKQOUvI0
>>62
絶対に数分じゃ説明できない

途中で猫の生態みたいな解説をいれるのがオブジェクト指向だから

SQL叩きますの他の言語とは一味違う
2017/04/05(水) 00:16:02.14ID:Zf7glq/Z
>>68
猫の生態とは例えばどんなことを
お前は説明するの?
2017/04/05(水) 00:38:08.73ID:yRUZ/Ldq
オブジェクト指向ってこういうやつやろ!?が酷すぎて
田舎の中学生が「ぼくのかんがえたアメリカ人」の作り話を大人にしてるみたいになっとるな。
2017/04/05(水) 00:38:34.63ID:hA0nFIPv
>>60
ちゃう。抽象化を間違っちゃったのが、DAO
2017/04/05(水) 00:56:26.96ID:T1xSqOuQ
クラス名が名詞じゃないDB操作クラスってマジどういうの?
73デフォルトの名無しさん
垢版 |
2017/04/05(水) 08:19:13.48ID:RcS41rYJ
>>71
どう間違ってるの?
2017/04/05(水) 09:38:42.71ID:Zf7glq/Z
俺がDAOの存在理由が理解できないから、間違い
2017/04/05(水) 10:59:33.50ID:1lx41BrP
>>74
【が】が多い
2017/04/05(水) 15:50:39.12ID:UwNB2dkT
>>74
存在が間違ってる奴本人が自己紹介

>>73
DAO 想像力が足りない 辺りでググれば出たくるんじゃなかったかな

あの記事はPHPerのものにしてはとても良く書けているから必読だ。
近くにActiveRecordとDataMapperの実装解説もあるから、まだDAOとか言うゴミを使ってるバカは是非読んだ方がいい。
最終的な実装はあれでもダメダメだけどな。
77デフォルトの名無しさん
垢版 |
2017/04/05(水) 21:47:59.72ID:ABzSOhTe
オブジェクト指向は命名が重要だけど、DTOにはなんて名前付けてますか?

自分はHogeDTOとか付けてるけど
我流なんで自信が無いです
2017/04/05(水) 22:31:27.34ID:T1xSqOuQ
個人的にはHogeDaoとかHogeDtoみたいなのがたくさんあるとやる気なくす
HogeQueryとかHogeCommandとかHogeJsonみたいなもう少し意味のある名前がいい
2017/04/05(水) 22:56:14.24ID:YCJsuu6b
>>78
お前の個人的なやる気なんか知らないが、
何でもかんでもDTO作りまくる設計は、確かにアホ
80デフォルトの名無しさん
垢版 |
2017/04/05(水) 23:31:52.52ID:ABzSOhTe
ほぼストアドでシステム開発してる人が
最近の連中は技術が無くてストアド書けないと嘆いていたのですが
ストアドでオブジェクト指向は出来るんですか?

C#+EFでほとんどSQLを書いたことが無いので
データベース事情に明るくないもので
2017/04/06(木) 00:05:36.90ID:F4y9oj5j
SQL serverならSQL clrが使えるはず
2017/04/06(木) 01:57:21.96ID:FGV9lFi+
なぜにストアドでオブジェクト指向!?
2017/04/06(木) 04:16:30.36ID:2G8EDGPv
>>80
一応Ora限定で出来たと思うけど、Web方面だと
エッジサーバ側であれこれするからストアドいらん気もするよ
業務系だとストアド一本で職になるようだが
2017/04/06(木) 04:54:01.44ID:2G8EDGPv
1クラスについて、最低1in/1out(interface)を作るよう指示されたことあったな
全てのクラスについて

ヘキサゴナルなんだと、それが……
2017/04/06(木) 05:56:27.93ID:8G48c3ze
なんでもストアドでやるのはバッドノウハウだが使うべき所では使わないとくっそ遅いシステムが出来上がるぞ

某大手ITが作ったくっそ高いシステムみたいに

オブジェクト指向も拗らせ過ぎるとこうなるって典型例
86デフォルトの名無しさん
垢版 |
2017/04/06(木) 09:05:31.52ID:sp2ENUYJ
>>76
最終的な正解が書いてあるサイトはどこですか
2017/04/06(木) 09:40:42.68ID:rNIgAdOn
>>85
その話のどこにオブジェクト指向が関係するのか?
2017/04/06(木) 10:32:51.49ID:bi7gIbpv
第 (N+1) 次オブジェクト指向問答
https://togetter.com/li/1097950
89デフォルトの名無しさん
垢版 |
2017/04/06(木) 12:29:44.71ID:GOr1AWzR
>>82
オブジェクト指向と言わず
共通の開発手法があるのかなと

モデリングがそれに当たるのかな
2017/04/06(木) 12:47:05.55ID:fGciOGwI
>>86
I'll tell you nothing.
The answer is where it's present will not be indicate even by Google.
That must find out by an effort and a deliberation of yourself own.
2017/04/06(木) 12:49:59.24ID:fGciOGwI
be
92デフォルトの名無しさん
垢版 |
2017/04/06(木) 13:35:28.83ID:fKQHZKUE
>>90
Oh, dont say that!Dont say that.Im a stupid man.You should be kind to me!
2017/04/06(木) 13:41:15.62ID:fGciOGwI
>>92
ね ぼ け る な!
94デフォルトの名無しさん
垢版 |
2017/04/06(木) 18:06:11.40ID:7ga4e71i
オブ農って何ですか?
2017/04/06(木) 18:24:59.98ID:FGV9lFi+
>>92
気持ちの伝わるいい返しだな
2017/04/06(木) 18:36:07.83ID:FGV9lFi+
>>89
ストアドは基本SQLだからDB設計出来る程度のリレーショナルモデルの知識あれば十分
技術うんぬん言うほと難しい話じゃない DBが違えば中身はいろいろと違ってくるけどね

ストアドで条件分岐やループやカーソルを多用してる場合
本当にDBレイヤーでやるべき仕事なのか考えたほうがいいと思う
ビジネスロジックのあるべき場所や柔軟性と最適化のバランス次第
2017/04/06(木) 22:21:27.75ID:OOQlb81T
制御文減らすための文法じゃないの?
2017/04/06(木) 23:19:03.66ID:fGciOGwI
>>95
伝わるか! ボケナス!
99デフォルトの名無しさん
垢版 |
2017/04/07(金) 07:14:09.24ID:mWTY/96m
データベースのモデリングした後
オブジェクト指向のために
クラス設計すると、エンティティの
抽出とか同じ事をしている気に
なってくるんですが

モデリングは実はクラス設計だけで
OKとかありますか?
2017/04/07(金) 09:46:16.48ID:xCtKbZyH
>>99
そのためにO/Rマッパーがある。
O/Rマッパーを使うとデータベースのモデリングを
クラスで表現できるから、そのまま移植すれば良い
101デフォルトの名無しさん
垢版 |
2017/04/07(金) 10:24:46.37ID:IERj5jiz
ORマッピングすればDaoなんていらんね
2017/04/07(金) 11:00:36.56ID:Bku+sAks
>>97
意識して減らそうとしないと無理かな
ストアドは、テーブルや索引、マテリアらいずビューとかの整理に使う物かな
要は、あるタイミングでデータベースを単一の主体が加工する場合に使うと便利
複数クライアントが平行して操作するときに共通化を求めてやるもんじゃない。
それは、ビューなりストアドトリガーや制約で共通化するべきもの。
条件分岐があるなら、BLに溶け込ませろってのはそういう意味かと
2017/04/07(金) 11:05:00.66ID:Bku+sAks
ストアドプロシージャは、共有メモリや通信を目的に設計されていない。
なんかの結果を通信用に設けたテーブルに書いて、そのテーブルを別の主体が参照して連動させるとかオーバヘッドが多く、排他が冗長になり、パフォーマンスがでない。
2017/04/07(金) 12:51:44.94ID:l4Q0lLSH
>>95
気持ちのわるいいい返しだな

と読んでしまった
2017/04/07(金) 14:06:58.01ID:IIlb/TvM
>>102,103
基本的に何言ってるかよくわからない。

例えば集約関数実装することを考えれば、元となるデータの通信を行わなくて良い分、
ストアドの方が速い可能性が高い。

また、複雑なデータ処理や文字列操作が多くてストアド自身のコードの実行が遅い場合もあるが、
ストアドに別言語を使えるRDBMSもある。

さらに言えば、ストアドがimmutableであるなどの宣言ができるRDBMSがあり、その場合は
実行結果をキャッシュしてくれたりする(同じ引数の場合はコードを実行しない)。

ビジネスロジックをRDBMS内部におくべきかどうかというのは、また別の話。
2017/04/07(金) 18:38:30.82ID:Er4jaX4h
最初はデータ中心アプローチでいいよ

カージナリティーとかに抜けが発生するからね
それからモデル層の設計すればいい
2017/04/07(金) 19:36:14.64ID:vUIUfIKH
思ったよりスレッド周りで手こずったけど>>8をPHPで書いてみた

http://ideone.com/lcnAEj
108デフォルトの名無しさん
垢版 |
2017/04/08(土) 12:10:05.09ID:gBZ8NF+o
>>105
集約関数、つまりある複雑な条件、複数のテーブルを結合せずに参照し、なんらかの判定を行う。
これは一般的なバッチ処理と言われるもので、データベースインスタンスに閉じて実行すればよい。
何らかのパラメータが伴い、レコードのサブセットのみを対象にする場合、ストアドにしても処理遂行を基準に、倉実行してもパフォーマンスは劇的には変わらない。

データベースは、純粋に取り扱うレコード数に比してパフォーマンスが確定する。

あと、結合できるなら、ストアドはいらない。
ビューなりマテリアルズどビューのがまし
2017/04/08(土) 12:16:30.94ID:AqrMKRmZ
ここ、何のスレだっけ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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