オブジェクト指向システムの設計 172 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1uy ◆e6.oHu1j.o
垢版 |
2016/07/09(土) 00:35:13.95ID:Mn3UGZ+O
前スレ
オブジェクト指向システムの設計 171 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1465636703/
2017/01/11(水) 01:20:12.02ID:GtOiWPCh
>>271
動くなんて大前提だよ
そんなんだから脳みそまで糞まみれなんだよボケナス
殺すぞ
2017/01/11(水) 06:50:15.75ID:1SbN3a75
>>272
動いた上でさらに付加する価値だろ?
そんなの省かれるに決まってるだろ
いい加減テメェのこだわりは重要じゃねぇって気付けよ
274デフォルトの名無しさん
垢版 |
2017/01/11(水) 12:29:20.79ID:1hmax6h/
結論が出た様です
>>265のセンスのない造語の使用は却下されました
妥当な結果でしょう
2017/01/11(水) 22:20:40.95ID:R6uUA9rB
仕様が無いのになぜ動いていると言えるのか。
2017/01/11(水) 22:53:40.84ID:SOQiv9G3
動いてるとも動いてないとも言えない
これが波動関数ってやつさ
2017/01/11(水) 23:44:57.82ID:GtOiWPCh
>>275
仕様がない=動作が正=動いている
2017/01/11(水) 23:53:04.21ID:SOQiv9G3
仕様がないつまり未定義
つまり何が起こってもおかしくない
パルプンテ状態
2017/01/12(木) 08:29:14.43ID:D/kCxt4Z
Cの悪口はやめろ
2017/01/14(土) 20:38:16.71ID:2kEkn3lr
初期化以降はリードオンリーとするフィールドint barがある場合
class Foo {
private int bar;
public Foo(int bar) {this.bar = bar;}
public int getBar() {return bar;} // ゲッターだけ公開
}
↑こうするより↓こうしたほうが色々気持ちよくない?
class Foo {
public final int bar; // C#ではfinalのかわりにreadonly
public Foo(int bar) {this.bar = bar;}
}
どうよ?
2017/01/14(土) 21:48:54.83ID:YGCVk3Sf
>>280
C#ならプロパティ使えばよくね
2017/01/14(土) 21:56:28.41ID:rLoB6nGZ
>>281
Java脳だから仕方ない
2017/01/14(土) 23:11:55.85ID:/w8IJdhk
C#は、自動プロパティの初期化もできるようになったしな
2017/01/15(日) 09:41:20.06ID:h+wxmfZm
OOPでフィールドを丸出しなんてはしたないことはやめてください
2017/01/15(日) 19:09:57.72ID:L9FFXvsx
>>284
それに対する俺の考えはこう
・あるものが不変で良いなら不変にしておきたい
・不変であるのならメソッドを経由しなくていい
・フィールドをpublicにしておける言語がある理由もそこらへんじゃないのかなっ
どう?
「OOPで〜」に対する返事にはなってないかもしれないけど
2017/01/15(日) 19:25:01.82ID:h+wxmfZm
フィールドは実装
実装を晒しては行けない
2017/01/15(日) 19:43:31.26ID:0NZmkTyB
オブジェクト指向的にはプロパティへのアクセスはメッセージに限定してカプセル化としたいんじゃないかなぁ?
って思う
288285
垢版 |
2017/01/15(日) 20:03:27.72ID:zmg1eHAc
元の主張はいったん置いとくけど

>>286 >>287
そういうOOPLがあったらいいのにね(あるかどうかは知らない)
それはそれでスッキリすると思うよ

あとクラス図なんかにフィールド含まれてるのすら嫌だもん
>>286的理由で
インタフェースで考えていたいレベルに実装が飛び出てるのが嫌だしダメだと思う
2017/01/15(日) 20:05:23.89ID:kU0DmNyE
そういうOOPLってのは
フィールドをpublicに出来ない言語って意味ね
2017/01/15(日) 23:28:22.35ID:W9Vj9w+K
ま、はしかみたいなものだね
OOの美学みたいな考えがあるんだろうけど
よくよく考えると大した概念ではないし、本質的でもない
多くのOOPはマルチメソッドをサポートしていないので
二つのオブジェクトに跨る処理をどちらに書こうかという
問題にぶち当たるし、得てしてそういった複数のオブジェクトに跨がる処理が
そのプログラムの本質的な部分であったりもするからね
プログラムの簡単な部分に関しては簡単に書ける、それがOOP
2017/01/15(日) 23:55:46.52ID:W9Vj9w+K
OOはどちらかといえばデータ構造に基づいた設計手法で
(あ、クラスはデータじゃなくて機能って言う人もいるだろうが
データに対する機能を提供している側面があるので・・)
空間に基づいた設計手法といえるが
当然、時間に基づいた考え方というのもあり得て
プログラムの本質が手続きであり、命令を上から順番に実行していくものだとするなら
こちらのほうが本題かもしれなく、少なくとも何がどの順で実行されるか
良くわからないという事態だけは避けなければならない
あまり自律的なオブジェクトを設計してはダメってこと
AがBのメソッドを呼んで、その中で今度はBがAのメソッドを呼び出す・・・
ということは避けなければならない
なぜならAがBのメソッドを呼び出したとき、Aは処理の途中であり
その状態でBがAのメソッドを呼び出すのは危険だから
デッドロックの危険性もある
オブジェクト同士がメッセージをパッシングし合い、まるで生態系のように振る舞い
結果として何らかの機能が提供されるというのは、機能の観点からは遠回りであるし
何がどの順で実行されるかよくわからないという意味で、手続き的には厄介だ
俺たちは何かのシミュレーションがしたいというわけではない
AとBをコミュニケートされるなら、それらの親にあたる部分が仲介すればよく
AとBが直接コミュニケートする必要はない
そうすれば手順が明確になる
オブジェクトとは良きパーツであるべき
2017/01/16(月) 00:16:59.04ID:WtkYzKjH
private Integer id;
private String domain;

String getAccountId() {
return domain + "-" + id.toString() + ;
}

こんな感じで、ゲッタの方が処理挟まないといけんくなったとき、ラクダからちゃう?
でもやっぱaccountId定義してコンストラクタ初期化すれば
やっぱフィールドおっ広げいいかとも思っちゃったり
2017/01/16(月) 06:36:24.60ID:5GH26V/A
リフレクションでめんどくさいからやめろよ
2017/01/16(月) 10:25:44.18ID:Keb10HxT
>>292
それはじめると君の同僚たちもそれに倣って、
結果、画面にもSQLにも業務ロジックにも、至る所に文字列操作が書かれるぞ
連結してaccountId作ったり、accountIdを文字数や正規表現でidとdomainにバラしたり…
2017/01/16(月) 23:15:52.19ID:WtkYzKjH
class User {
private Integer id;
private String domain;

String getAccountId() {
return domain + "-" + id.toString() + ;
}
}

ならええやろ
user.getAccountId()や

至る所で
String aid = user.getDomain() + "-" + user.getId();
こんなんされるよりまし
2017/01/16(月) 23:43:04.52ID:7tn+c1o5
それだと至る所でハイフンでsplitされるって話だろ
AccountId値型を作ろう
2017/03/25(土) 12:41:38.33ID:Hepb4FxQ
instanceおじさんをレイオフする会を発足します
2017/03/26(日) 09:22:55.90ID:BMgG41Fb
本来であればフィールドメンバと引数とわずかばかりのシステムメソッドで処理を完結するのがベストなのだが、
それしようとすると、やりたいことをやるために必要な情報がなかったりして
親の親から引数を渡し直さないとけなくなったりしてそうこうしてるうちに
結局グローバル変数やシングルトン(instance)で便利になったと喜んでしまう性。
2017/03/26(日) 22:59:55.37ID:EKCv78dE
>>295
現時点でCallerには「domain-id」の文字列以外必要ないなら、それでOK
Callerもid or domainが単独で必要ならgetIdやgetDomainもつける

IDだけじゃなくて、たとえばなんかのログインフォームのようにメールアドレスもサポートするならクラス側で承ける
文字列返すかAcccontDataクラスでも作るかは
idの形式があと3つ4つあるか(ついったと顔ブックとなんちゃらinアカでもログインOKみたいな、ならクラス)
or メルアドのみで数年やれるか(なら文字列でサクっと実装しちまえよ)による
2017/04/20(木) 23:17:36.80ID:nIwh3CMn
ワインと豆腐には旅をさせちゃあいけない
という山岡さんの名言がある

俺は変数にも旅はさせてはいけないと思う
つまり、変数はprivateにのみしておいて
それを外に参照させたり渡したりしないうちは安泰だということ
2017/04/21(金) 03:45:03.38ID:vq22u+1l
漫画を引用する様な見識の狭い奴の言う事を誰が本気で聞くのか
語りたい事があるなら自分自身の言葉で語れ
302デフォルトの名無しさん
垢版 |
2017/04/21(金) 12:33:54.90ID:e2S2gBzR
旅をするのは変数ではなく値なんだけどね
2017/04/21(金) 21:12:23.25ID:JwbSy4qm
グロバール変数やめました
シングルトンもやめました
結果、
オブジェクトをたらい回しにしまくりんぐ地獄
2017/04/23(日) 15:03:38.82ID:jdVuS3ql
郵便物が来たってメモはたらい回しでいいけど、
郵便物自体はたらい回しするなよ。
2017/04/23(日) 15:28:16.71ID:mKAZq6VZ
それは郵便物オブジェクトが人間オブジェクトにメッセージパッシングして言ってんの?
2017/04/23(日) 15:45:39.68ID:jdVuS3ql
郵便物オブジェクトは何もしないだろ。
メッセージをパッシングしているのはメッセンジャーさ。
2017/04/23(日) 16:15:44.68ID:mKAZq6VZ
メッセンジャーヴォーイズはどこで何をしてるんだい??
2017/04/23(日) 21:23:18.06ID:mOY43HnC
staticおじさんは今日も元気でした
2017/04/23(日) 22:31:23.91ID:HqNmAyPa
>>308
言葉に気をつけろよ
キャットドア問題の前にお前らはボロ雑巾のように敗れ去っているのだから
2017/04/23(日) 23:16:24.84ID:fe+cTrdN
勝ち負けだったのか
2017/04/23(日) 23:26:57.94ID:HqNmAyPa
>>310
負けは認めるんだな
2017/04/23(日) 23:46:36.74ID:fe+cTrdN
ごめんやけど最近来たから勝負してたところを見たことない
どんな勝負だったの?
2017/04/24(月) 00:08:36.40ID:ix3EvlHl
あとキャットドアって初めて聞いたんだけど何なの?
2017/04/24(月) 00:13:48.70ID:ix3EvlHl
>>キャットドア問題
ググってもAmazonしか出てこない、、、
2017/04/24(月) 00:51:34.45ID:eKiX5mKm
google「オブジェクト指向 キャットドア問題」
で出るな
2017/04/24(月) 01:00:29.18ID:ix3EvlHl
>>315
まじか!
ありがとう、見てみるよ
2017/04/24(月) 01:02:48.58ID:ix3EvlHl
なんか別のスレがヒットするだけなんだけどあってる?
http://itest.2ch.net/test/read.cgi/tech/1491118238/
2017/04/24(月) 06:42:37.83ID:DtGFy1JY
キャットドア問題って何だよ
博識な俺様でも知らんぞ
2017/04/24(月) 19:56:51.33ID:aju9PDoI
それを流行らせようとして必死なやつをどっかのスレで見たわ
放置推奨
2017/04/24(月) 20:17:16.61ID:MN8pW2Am
なんだ
騒ぎ立ててるヤツが居るだけなのね

なんかおもしろい議論があるのかと思って期待してたのにな
2017/04/24(月) 21:31:35.57ID:Fbyj+dPJ
結局、キャットドア問題解決できなかったしね
2017/04/25(火) 10:33:30.83ID:ibd4gvgd
>>315
オブジェクト指向 "キャットドア問題"
9 件 (0.37 秒)
2017/04/25(火) 12:08:14.39ID:5ILiyJO9
キャットドア問題が何を問題にしているのかわからない
合力できるようにDoorOpenerCompositionを定義すれば済む話では?

(new Cat(weight: 5)).can_open(new Door(weight: 4, knob: true)) //=> false
(new Human(weight: 15)).can_open(new Door(weight: 14, knob: true) //=>true
(new Cat(weight: 5)).can_open(new Door(weight: 4, knob: false)) //=> true
(new Cat(weight: 5)).can_open(new Door(weight: 10, knob: false)) //=> false
(new Cat(weight: 4) + new Cat(weight: 3) + new Cat(weight: 5)).can_open(new Door(weight: 10, knob: false)) //=> true
2017/04/25(火) 19:47:55.64ID:sSL6z0RB
staticおじさんは今日も大勝利
2017/04/25(火) 20:11:32.58ID:4og0+rzt
結局どんな勝負なの?
2017/04/25(火) 21:16:26.91ID:qd1hD0YR
>>325
結局、キャットドア問題解決できなかったしね
327
垢版 |
2017/04/25(火) 23:25:27.84ID:RguWTiRy
キャットドアとやらが拠り所なのか…
2017/04/25(火) 23:46:03.28ID:qd1hD0YR
if cat door is open
human begining become
and we will we will goto heaven
2017/04/25(火) 23:57:29.33ID:qaES5lmc
ごめん、それでは理解できない
どんな勝負だったの?
勝利条件やルールは何だったの?
330
垢版 |
2017/04/26(水) 00:00:54.76ID:R2CP97M0
何かの引用のもじりなんだろうか?
ひどい英語に見えるけどなんか意味あるのかな…
2017/04/26(水) 00:19:05.94ID:9BTWZVlt
>>329
逃げるのか?
2017/04/26(水) 00:35:26.90ID:1c8kYD+M
ネコ用のドアって蚊やハエが入って来ないの?
2017/04/26(水) 06:46:17.53ID:Ex4Hni8+
>>331
や、だから俺はそもそも勝負に参加してないっての
参加するにしても勝利条件とルールを聞いても誰も教えてくれないから参戦もできない
2017/04/26(水) 06:52:05.72ID:LAzkzAvR
>>333
マヌケなヤローだ
2017/04/26(水) 07:00:16.63ID:Ex4Hni8+
ああ
これは会話させてくれないやつだ

放置推奨と言われた意味がやっとわかった
2017/04/26(水) 07:56:46.84ID:LAzkzAvR
>>335
いいや、本スレに行って参戦宣言でもすれば即座に着火するよ
みんな内心納得してないからね
2017/04/27(木) 22:21:41.15ID:1aP1zib4
クラス階層をどう作るか、メソッドをどのオブジェクトに持たせるかっていう、大抵は主目的にならない部分の問題を、
現実世界の物理的な制約、言語学や分類学の観点から「〜であるべき」と主張しあうおバカな問題だよ>キャットドア問題
たまに出現してスレを白けさせる美少女クラス云々と同類。

プログラミングを知らなくても身近なものを抽象化して語ることは誰でもできるから、無駄にレスが稼げる
338デフォルトの名無しさん
垢版 |
2017/04/28(金) 12:21:14.12ID:xTWRaXFB
それは抽象化ではないとだけ言っておこう
2017/04/28(金) 22:22:35.36ID:pTZXbcwl
>>337
おバカな問題だということが分からないやつがたくさんいるから
似非開発者をフィルタリングするのに便利だよ
340デフォルトの名無しさん
垢版 |
2017/04/29(土) 00:17:16.42ID:QOk6w6Nc
頭が悪いという事実以外にどこに問題があるのか
2017/04/29(土) 01:10:48.87ID:PKfhB/PA
まあな、お前らほど優秀な奴らがあの場にいたらキャットドア問題など発生すらしなかったんだろうなw
2017/04/29(土) 03:01:54.61ID:eU1WntyZ
どんなに優秀なやつが居ても無理
自分の考えることが正解で他はダメみたいな考えしてるやつらの口論に出口はない
343デフォルトの名無しさん
垢版 |
2017/04/29(土) 14:57:30.88ID:Y+QDu0qT
>>323
俺はこんなコード書きたくないなあ
2017/04/29(土) 18:07:18.04ID:LioC+4qb
>>343
お前が書かなくても>>323が書いてお前に保守させるから問題ない
2017/04/29(土) 18:32:37.57ID:u4T6eHTd
>>344
> お前に保守させるから

無理だろw
どうやって、やらせるんだよ。
お前に、他人に何かをやらせる力なんてないだろw
2017/04/29(土) 22:20:18.73ID:veSqK8ri
>>337
わかるわかる
美少女クラスがどうとかウンコがどうとか
そーいうので必死でレス稼いでる子がいるよな
自転車置き場議論の一端だよな
これならレスできる!って連中が集っちゃう
2017/05/01(月) 21:31:28.52ID:yowwCFAh
OOの技術って何って言われたら
整理整頓術、としか言いようがない罠
とりわけコードに対して、オブジェクト(クラス)にぶら下げとけば良いんじゃね?っていう
多態だ継承だっつっても、コードをオブジェクト単位で整理したときに
ちゃんと動くようにするための仕組みでしかないよ
それなのに犬は哺乳類で猫はニャーとか、最近はこういうこと言う人居なくなったけど
かつて本当にバカげたことを言っていたよね
仕事をするうえで整理整頓は重要だけど、作業性の問題であってサイエンスでは無いしな
いやね、まじめな話、作業性さえよければ何だってかまわないでしょ、マジで
だから結局、作業性の問題なんだよ、これは
2017/05/01(月) 21:37:55.53ID:FwcOD9NG
作業性?
2017/05/01(月) 21:59:16.41ID:Vg97aOxY
我々生まれもって木構造が好きだから
クラス階層というもんのドキュメント性も何か
心惹いてたんだろうねえ
継承がもたらすポリモの便利さにくわえてね
2017/05/01(月) 22:04:47.34ID:yowwCFAh
実際、作業性なんだよ
作業性が良いと、仕事が早く終わるし、ミスも減るんだよ
そのために整理する仕事があるんだよ
どこの工場でもやっていることだ
工場に限らず仕事は全てそうではあるがな

逆に物凄く崇高な理論や思想が何かあったとしても
余計に時間がかかってミスも増えるんなら糞くらえだろ
家に帰れなくだけ
2017/05/01(月) 22:12:12.09ID:yowwCFAh
まぁソフトウェアの設計といえば
どれだけの時間で処理が完了するか見積もったり
メモリ使用量を算出したり
そういう楽しいのはあるけども
OOはそういうのじゃ無いよね
OO設計は完全に整理整頓術以外の何物でもない
とりわけ、コードを、どこに、書くか、という問題
2017/05/01(月) 22:16:37.40ID:zOqzFQEM
>>351
普通にメンテナンス性、可読性、
複雑なものをシンプルにする技術とか
言えばよくね?
2017/05/01(月) 22:22:57.53ID:yowwCFAh
で、それって何?って言われれば
まとめて整理整頓術としか言いようがない
2017/05/01(月) 22:28:24.75ID:FwcOD9NG
作業性って工場系の用語だと思うんけど定義を教えてくれ
作業のしやすさ=作業性?
それとも作業効率を高める性質=作業性?

自分の周りじゃあまり使われない言葉だけど便利そうだな
2017/05/01(月) 22:51:43.47ID:zOqzFQEM
> 整理整頓術

これも自分の周りじゃ使われない言葉だな
2017/05/01(月) 22:57:39.04ID:yowwCFAh
大体において、作業がしやすければ、作業効率は高まるもんなんだよ
ここで、ごく一部の例外とか、そういうのはどうでもよい
基本的な原則といって良いだろう
だから両方の意味でつかわれるし、両方同時に言ってるし
付け加えれば品質の意味も含まれる
作業しやすいほうが品質が上がるのは当たり前だからな

ただ、作業性の意味が分からないってのはちょっとアレじゃねって
俺は思うが
別に工場用語でも何でもないし
2017/05/01(月) 23:05:09.52ID:yowwCFAh
あと、整理整頓術も工場用語でも何でもないぞ

それからソフトウェア業界であまり使われないのはそうだろう
俺があえてこの瞬間そう言ってる、言い直しているってこと
OO設計は結局整理整頓術ってのは俺の意見であって
Wikipediaに書いてあるようなことを書き込んでも面白くないだろ
要はバカっぽく言い直しているってこと
358
垢版 |
2017/05/01(月) 23:10:42.49ID:nao9PwD/
工場での生産の作業性をぼんやりした形で適当に定義しないでほしいな。

作業性が良ければ早く終わる、は幻想。
早い、安い、旨いは3つを取れないもんなんだよ。早くてうまけりゃ安くは無いし、早くて安けりゃ旨くはない。
効率を上げるには工程に工夫がいるし、工程を楽にしたけりゃ単純性が居るし、単純性を上げるには効率をさげにゃならん。
359
垢版 |
2017/05/01(月) 23:12:40.19ID:nao9PwD/
>>357
お前が馬鹿なのか勘違いしてるのか、恣意的に混同してるのかわからんが、少なくともお前が言ってることが机上の崇高な理論で思想だよ。
2017/05/01(月) 23:15:56.09ID:cOn1eaku
>>357
もうちょっと整理整頓して文章書こうな(藁干草)
361デフォルトの名無しさん
垢版 |
2017/05/01(月) 23:17:09.68ID:Qjntrl82
吉野家は3件全立してると思ってた
362
垢版 |
2017/05/01(月) 23:20:32.57ID:nao9PwD/
>>361
高くはない、まずくはない、遅くもないものはなんとかなる。
その状態が、生産ラインの安定地点でもある。
2017/05/01(月) 23:46:27.89ID:yowwCFAh
>>358
そんな細かな話は一切してない
彼方を立てれば此方が立たないって領域の話は、個々に対応する話であって
それ言い出すと、美女のウンコの話になる
つまり、対象とする要件がわからないのに、美女クラス作るのは無理
不毛だろ
ただ明らかに作業性の悪い状態で作業すると作業効率が落ちるのは確か
そのことしか言えない

しかし、OOが整理整頓術と考えれば、美女のウンコであるとか
キャットドア問題とかいう意味不明なやつとか、心底どうでもよくなる
それが狙い
2017/05/02(火) 00:18:05.19ID:SbXhwJoo
POAやDOAは整理整頓術とは違うの?
整理整頓術は作業性を高めるためにあるとして
異なる整理整頓術があるのは重視してる目的が異なるからじゃないのか?
2017/05/02(火) 01:00:54.02ID:E47XnT0a
整理整頓じゃなくてモデリングだな
設計とも言う
2017/05/02(火) 04:16:06.60ID:702+910T
オブジェクト指向って処理をソースのどこに書くかってだけの技術だしね
どんなにこねくり回しても直接的には1円にもならないんだよね
違うと認めないやつもいそうだけど
そろそろ自分が扱ってるモノの本質を見定めるべき
2017/05/02(火) 06:27:34.69ID:cIXPJSKK
それをバカにしつづけた結果
メンテ不能なモンスターができあがり
ビジネスチャンスを逃す
2017/05/02(火) 08:01:47.95ID:XmGRHQZl
>>366
お前のその考えじゃ一円も生み出せないわな
2017/05/02(火) 08:32:01.08ID:qcNxD/aj
>>366
需要さえ見出せばいくらでもお金になるよ
小手先の技術より経済の本質を見定めればいいと思う
2017/05/02(火) 09:26:50.56ID:Spp7QSKK
経済の本質?ロボットによる自動化かね?
371
垢版 |
2017/05/02(火) 10:53:02.51ID:Ua7wVMyf
>>363
個々に対応しない全体論なんてあるわけねえじゃん。
頭おかしいのか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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