[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/10 03:06 / Filesize : 285 KB / Number-of Response : 1039
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

オブジェクト指向ってクソじゃね?



1 名前:デフォルトの名無しさん [2018/08/24(金) 13:32:09.36 ID:ifygL6bT.net]
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96

2 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 13:35:00.08 ID:vJMsvnBL.net]
なにをいまさら

3 名前:デフォルトの名無しさん [2018/08/24(金) 13:35:14.51 ID:ZAZ1bDZG.net]
よくある

4 名前:デフォルトの名無しさん [2018/08/24(金) 13:44:30.12 ID:dWZiPnfz.net]
アホだな

5 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 13:44:39.27 ID:GnRKIAsQ.net]
マジかよ

6 名前:デフォルトの名無しさん [2018/08/24(金) 13:48:32.20 ID:JNQXY3hm.net]
>>696-701
ハロワ!


7 名前:デフォルトの名無しさん [2018/08/24(金) 13:48:49.10 ID:JNQXY3hm.net]
>>188-193
ハロワ!


8 名前:デフォルトの名無しさん [2018/08/24(金) 13:48:49.93 ID:JNQXY3hm.net]
>>188-193
ハロワ!


9 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:06.65 ID:JNQXY3hm.net]
>>936-941
ハロワ!


10 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:07.52 ID:JNQXY3hm.net]
>>936-941
ハロワ!




11 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:24.49 ID:JNQXY3hm.net]
>>475-480
ハロワ!


12 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:25.25 ID:JNQXY3hm.net]
>>475-480
ハロワ!


13 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:42.00 ID:JNQXY3hm.net]
>>504-509
ハロワ!


14 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:42.66 ID:JNQXY3hm.net]
>>504-509
ハロワ!


15 名前:デフォルトの名無しさん [2018/08/24(金) 13:49:59.43 ID:JNQXY3hm.net]
>>10-15
ハロワ!


16 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:00.16 ID:JNQXY3hm.net]
>>10-15
ハロワ!


17 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:17.05 ID:JNQXY3hm.net]
>>846-851
ハロワ!


18 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:17.68 ID:JNQXY3hm.net]
>>846-851
ハロワ!


19 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:34.99 ID:JNQXY3hm.net]
>>794-799
ハロワ!


20 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:35.59 ID:JNQXY3hm.net]
>>794-799
ハロワ!




21 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:52.74 ID:JNQXY3hm.net]
>>594-599
ハロワ!


22 名前:デフォルトの名無しさん [2018/08/24(金) 13:50:53.52 ID:JNQXY3hm.net]
>>594-599
ハロワ!


23 名前:デフォルトの名無しさん [2018/08/24(金) 13:51:10.36 ID:JNQXY3hm.net]
>>74-79
ハロワ!


24 名前:デフォルトの名無しさん [2018/08/24(金) 13:51:10.98 ID:JNQXY3hm.net]
>>74-79
ハロワ!


25 名前:デフォルトの名無しさん [2018/08/24(金) 13:51:27.73 ID:JNQXY3hm.net]
>>865-870
ハロワ!


26 名前:デフォルトの名無しさん [2018/08/24(金) 13:51:28.57 ID:JNQXY3hm.net]
>>865-870
ハロワ!


27 名前:デフォルトの名無しさん [2018/08/24(金) 13:51:46.63 ID:JNQXY3hm.net]
>>193-198
ハロワ!


28 名前:デフォルトの名無しさん [2018/08/24(金) 13:51:47.62 ID:JNQXY3hm.net]
>>193-198
ハロワ!


29 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:04.41 ID:JNQXY3hm.net]
>>639-644
ハロワ!


30 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:05.28 ID:JNQXY3hm.net]
>>639-644
ハロワ!




31 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:22.20 ID:JNQXY3hm.net]
>>743-748
ハロワ!


32 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:22.85 ID:JNQXY3hm.net]
>>743-748
ハロワ!


33 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:39.73 ID:JNQXY3hm.net]
>>2-7
ハロワ!


34 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:40.36 ID:JNQXY3hm.net]
>>2-7
ハロワ!


35 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:57.00 ID:JNQXY3hm.net]
>>300-305
ハロワ!


36 名前:デフォルトの名無しさん [2018/08/24(金) 13:52:57.69 ID:JNQXY3hm.net]
>>300-305
ハロワ!


37 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:14.69 ID:JNQXY3hm.net]
>>423-428
ハロワ!


38 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:15.30 ID:JNQXY3hm.net]
>>423-428
ハロワ!


39 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:32.47 ID:JNQXY3hm.net]
>>227-232
ハロワ!


40 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:33.30 ID:JNQXY3hm.net]
>>227-232
ハロワ!




41 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:50.36 ID:JNQXY3hm.net]
>>150-155
ハロワ!


42 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:51.27 ID:JNQXY3hm.net]
>>150-155
ハロワ!


43 名前:デフォルトの名無しさん [2018/08/24(金) 13:54:07.98 ID:JNQXY3hm.net]
>>715-720
ハロワ!


44 名前:デフォルトの名無しさん [2018/08/24(金) 13:54:08.57 ID:JNQXY3hm.net]
>>715-720
ハロワ!


45 名前:デフォルトの名無しさん [2018/08/24(金) 13:54:25.45 ID:JNQXY3hm.net]
>>57-62
ハロワ!


46 名前:デフォルトの名無しさん [2018/08/24(金) 13:54:26.08 ID:JNQXY3hm.net]
>>57-62
ハロワ!


47 名前:デフォルトの名無しさん [2018/08/24(金) 13:54:42.76 ID:JNQXY3hm.net]
>>856-861
ハロワ!


48 名前:デフォルトの名無しさん [2018/08/24(金) 13:54:43.68 ID:JNQXY3hm.net]
>>856-861
ハロワ!


49 名前:デフォルトの名無しさん [2018/08/24(金) 13:55:00.44 ID:JNQXY3hm.net]
>>595-600
ハロワ!


50 名前:デフォルトの名無しさん [2018/08/24(金) 13:55:01.09 ID:JNQXY3hm.net]
>>595-600
ハロワ!




51 名前:デフォルトの名無しさん [2018/08/24(金) 13:55:17.72 ID:JNQXY3hm.net]
>>314-319
ハロワ!


52 名前:デフォルトの名無しさん [2018/08/24(金) 13:55:18.39 ID:JNQXY3hm.net]
>>314-319
ハロワ!


53 名前:デフォルトの名無しさん [2018/08/24(金) 13:55:36.07 ID:JNQXY3hm.net]
>>632-637
ハロワ!


54 名前:デフォルトの名無しさん [2018/08/24(金) 13:55:36.71 ID:JNQXY3hm.net]
>>632-637
ハロワ!


55 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:27:45.99 ID:0hzqlpOd.net]
>>1
ケイちゃんの言うレシーバオブジェクトは
ネットワーク越しにアクセスできるコンピュータだから
プライベートのキーワードはなくても
必然的にプライベートになるんじゃないかな

56 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 00:54:02.71 ID:6mB8j9/9.net]
オブジェクト指向は、ウンコのようにニガい

57 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:13:07.84 ID:00w/RGH3.net]
砂糖(シンタックスシュガー)を加えて関数型言語っぽくしているが、臭いまではごまかせない

58 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:25:46.59 ID:bFeNHPVf.net]
オブジェクト指向が無くなった場合
メソッドは全部グローバル関数になるの?

PersonRename(Person p,string newName);
PersonSetAge(Person p,int age);
PersonGetAge();

FirePersonCreate(Person p);

FirePersonRename(Person p,string newName);
FirePersonSetAge(Person p,int age);
FirePersonGetAge();

59 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:27:10.91 ID:bFeNHPVf.net]
訂正

PersonRename(Person p,string newName);
PersonSetAge(Person p,int age);
PersonGetAge();

FirePersonCreate(Person p);

FirePersonRename(FirePerson p,string newName);
FirePersonSetAge(FirePerson p,int age);
FirePersonGetAge();

60 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 19:47:07.71 ID:y3uHC3Z/.net]
クソはオブジェクトやぞ



61 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 19:34:28.84 ID:lHXkvQer.net]
文系がこねくり回して、結果的に無駄にコード量増やすようなイメージしかない。

62 名前:デフォルトの名無しさん [2018/09/05(水) 05:14:03.10 ID:UEpkpswy.net]
>>1
オブジェクト指向で組めない君らがクソ

63 名前:デフォルトの名無しさん mailto:sage [2018/09/05(水) 05:21 ]
[ここ壊れてます]

64 名前::15.30 ID:w7O3HrXU.net mailto: スタティックおじさんの皆さん []
[ここ壊れてます]

65 名前:デフォルトの名無しさん mailto:sage [2018/09/05(水) 09:21:08.12 ID:BLSFUWnl.net]
カプセル化が原因で開発ができなくなるとするならオブジェクトの分け方が不適切なのだろ、開発が進むに連れてオブジェクトの役割が変遷したのだろ、設計やり直せないなら地獄だな

66 名前:デフォルトの名無しさん mailto:sage [2018/09/05(水) 09:22:22.65 ID:BLSFUWnl.net]
設計のないスタティックおじさん方式は柔軟かもわからんね↓

67 名前:デフォルトの名無しさん mailto:sage [2018/09/05(水) 15:30:35.02 ID:UEpkpswy.net]
>>61
正しく組めば重複が減ってコード量は減る

>>64
普通はカプセル化しないことで
開発できなくなることの方が多い
グローバル変数を使うとか

68 名前:デフォルトの名無しさん [2018/09/05(水) 23:23:20.11 ID:BuNkH2Jq.net]
オブジェクト指向で描くロバストネス図なんてのは
構造化プログラミングの前のフローチャートそのものじゃないか
オブジェクト指向は現代のGOTO文なんだろ?

69 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 01:28:19.10 ID:uUC4mFDs.net]
>>67
https://thinkit.co.jp/article/13487

> ロバストネス図を書くにあたっては、以下のルールを遵守する必要があります。
>
> ・アクターはバウンダリのみ関連線(矢印)が引ける
> ・バウンダリはコントロールとアクターのみ関連線が引ける
> ・エンティティはコントロールのみ関連線が引ける
> ・コントロールはコントロール同士とバウンダリのみ関連線が引ける

残念ながらフロー(流れ)を示す線は書けないので
フローチャートにはならない。特に条件分岐やループなどがない

70 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 03:27:30.57 ID:OdtAawkS.net]
>>67
どちらかというとロバストネス図は
ユースケース図の方が近くて
フローチャートと同じってのはおかしい



71 名前:デフォルトの名無しさん [2018/09/06(木) 07:33:26.04 ID:ndioKak8.net]
本には書いてないオブジェクト指向
https://www.arksystems.co.jp/closeupit/object_oriented/

こいつを見てくれ、こいつをどう思う?

72 名前:デフォルトの名無しさん [2018/09/06(木) 07:42:10.81 ID:ndioKak8.net]
/** リストの要素をゼロで置き換える **/
private void clearList() {
 for (Integer el : someList) {
  el = new Integer(0);
 }
}

なかなかファンキーなロケンロールだぜ


73 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 08:26:13.84 ID:abjuqq+M.net]
>>68
条件分岐はあるで
ループもあるで
GOTOだからわかりにくいけど
線はフローを表すんやで
ロバストネスエアプか?

74 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 08:28:15.97 ID:abjuqq+M.net]
>>69
ユースケース図はユースケースを並べたものですよね
ロバストネスはユースケースごとに処理フローを
書くわけでフローチャートそのものですよ

75 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 08:31:32.42 ID:abjuqq+M.net]
構造化プログラムでゴトーが滅亡したようにオブジェクト指向にも構造化のブレイクスルーが生まれていい頃合いだと思うの

76 名前:デフォルトの名無しさん [2018/09/06(木) 12:51:58.13 ID:ntAiYVJq.net]
オブジェクト指向って簡単な処理先に書いて難しい処理は後回しにする考え方でしょ

77 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 13:33:23.77 ID:uUC4mFDs.net]
>>75
違うけど、意味がわからないから例をあげてみて
「簡単な処理」とは何かライブラリを使えば難しい処理は簡単な処理とみなせるのか?

78 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 13:46:11.74 ID:abjuqq+M.net]
インターフェースを切って実装を分離することを言ってるんじゃないか?

79 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 13:50:58.27 ID:BY1c9tpo.net]
そもそも、継承関係で隠蔽しちゃい合うのが問題なだ

80 名前:ッで、
インスタンス握り合うだけの仲なら、相手の陰部まで見に行く必要性なんて無いだろ。
[]
[ここ壊れてます]



81 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 23:36:20.94 ID:OdtAawkS.net]
>>70
そのサイトには賛成できる部分と反対の部分がある

「クラスとはデータ構造」で
「責務はクラスではない」というのには大反対

クラスは責務そのものという方が
オブジェクト指向の主流の教え方

82 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 23:37:17.79 ID:OdtAawkS.net]
>>75
当たってる部分がなくもないけど
たんに関数に分割するんじゃなくて
抽象化するのがオブジェクト指向

83 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 08:35:51.18 ID:avaKv6NM.net]
>>79
ゴトーが主流の時代もあったわけで
主流じゃないからという理由で反対するのは
いけないことだと思います!

84 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 08:40:25.09 ID:avaKv6NM.net]
責務ごとにクラスを作るのがどうして主流だよね?ってことですよ

85 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 09:19:04.85 ID:avaKv6NM.net]
責務ごとに分離したら凝集度が低下します

86 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 19:25:29.09 ID:ZCXZkOYn.net]
>>81
それもそうか

>>82
変更コストが下がるから

>>83
いやむしろ凝集度は上がるよ?

凝集度を上げるっていうのは
でかいクラスを作ることじゃないよ?

87 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 19:40:40.77 ID:Nc+ifFiB.net]
ボトムアップで設計したら結局最上位クラスが神クラス化しちゃうのは、アプリ層の設計が甘いんかな?
どうもUI部の設計は苦手だ。

88 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 20:33:13.60 ID:avaKv6NM.net]
>>84
データに関わる処理を一箇所に集められますよ
凝集度は高くなります

89 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 20:36:30.67 ID:avaKv6NM.net]
ドメインオブジェクトがドメインとしての振る舞いを持つのですから肥大化とは言いません、データと関わりのない振る舞いを持つわけではないんです

90 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 20:48:57.91 ID:ZCXZkOYn.net]
>>85
肥大化するのが設計が甘いと言われればその通りでしょ
ただ最初から一発で分からないことも多いので
リファクタリングするのも大事だと思う



91 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 20:49:13.32 ID:ZCXZkOYn.net]
>>86
>データに関わる処理を一箇所に
複数のデータの処理を一箇所でやるという意味なら
凝集度は下がる

>>87
ドメインオブジェクトの数が増えていくのは普通だが
1オブジェクトの行数が増えていくのは肥大化

92 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 21:07:16.42 ID:0j44DGgx.net]
>>89
そんなバカな
行数でオブジェクトを捉えるべきじゃない
振る舞いがどこにあるべきかで考えないと

行数が増えたからオブジェクト分けましょうなんてのは
オブジェクト指向の理念に反する

データをカプセル化してデータに対する責務を持つのが
オブジェクトなんだよ

93 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 21:09:02.84 ID:0j44DGgx.net]
データに対する振る舞いが集まるんだから凝集度は高まるんです

94 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 21:12:47.16 ID:0j44DGgx.net]
オブジェクトが何かを考えないと行数で判断するという
前世紀のような事が起こるわけです
行数が多いからこのオブジェクトは頑張ってるんだな
と思ってしまうわけです
大きな間違いです、オブジェクト指向の根幹はカプセル化です
次に多態性、オブジェクトに適切なフルマがあって初めて
多態性を実現できます

95 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 21:15:03.24 ID:Nc+ifFiB.net]
皆が言ってることはもちろん分かる。
分かった上でViewのコートが大きくなりすぎて例えばC#ならついついpartial使ってファイル分けちゃう。
MVVMでも結局はViewか大きくなっちゃう。

いや、分かるよ。俺がViewの設計が下手っぴなのは認める。

96 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 21:16:51.88 ID:lg5TGvmQ.net]
>>93
ごめん、間違えた。
肥大化するのはViewじゃなくってViewModelだわ。

97 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 22:12:16.23 ID:ZCXZkOYn.net]
>>90
もちろん行数は目安でしかない
責務ごとにクラスを作るのが本筋

>>91
>>83
別人の発言かもしれないがこの発言の関係に疑問が残る

責務ごとにクラスを作ることで凝集度が上がるのであって
複数の責務をひとつのクラスに混ぜたら凝集度は下がるよ

98 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 22:14:41.41 ID:ZCXZkOYn.net]
>>92
もちろん行数は目安でしかないが
行数が増えすぎたときに
リファクタリングするのは実践的には大事


>>93
大きくなったら分割するのは何も悪くない

全体の規模が大きくなっていく時に
ひとつのクラスの行数が増えるのが肥大化
クラス数を増やしていくのが正しいOOP

99 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 22:15:21.48 ID:JescaW/f.net]
つか、ワンオブジェクトワンファイルなんてルールは無いから。

100 名前:デフォルトの名無しさん [2018/09/07(金) 22:58:43.86 ID:B/yxkRYZ.net]
このスレにいるような池沼が作らなければ
クラスライブラリも階層や種類で作るからな

低い階層に行けばいくほど単純な簡単な機能を提供するクラスになる
階層は完全に分離させて独立したライブラリにする

そして明確に種類の異なるプリミティブがある場合は
ライブラリを完全に分離させて独立したライブラリにする

その上にアプリケーションを実現するクラス群がのっかる

低学歴知恵遅れが作るとすべて同じ階層で同じ種類になる








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<285KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef