- 1 名前:デフォルトの名無しさん [2020/06/18(木) 23:47:36.69 ID:l/2SQUll.net]
- カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。 一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性」として「カプセル化は絶対にやめろ」としている。 https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
- 151 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 09:21:43.95 ID:H2Spozu7.net]
- オブジェクト指向って設計手法であると同時に
責任の切り分け手法でもあるんだよね 別の共同体(無償で手伝う気なしって意味で) と作業する場合は必須でしょ
- 152 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 10:04:43.33 ID:Q34w5rfS.net]
- >>142
は?メソッド全部staticにしてみろ 大半の問題が解決する
- 153 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:09:16 ID:XTsRyKlX.net]
- >>146
解決しねーよ!むしろ、問題が多発するわ! それ以前に、何の問題が解決するんだよ。
- 154 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:09:53 ID:Q34w5rfS.net]
- >>145
いやー、クラス内で状態を保持するクラスが大量に呼ばれてて 本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか? 切り分けじゃないッスよね? クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる可能性もあるンスから テストはちゃんとやるのであれば状態全網羅でしょう ぶっちゃけ無理っすわ 状態を保持をやった時点で地獄行き 覚えた?確定事項よ
- 155 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:11:45 ID:Q34w5rfS.net]
- >>147
グローバル変数さえなければ入力に対してぜってー決まった出力しか出ないのに何が問題出るの? 頭おかしいんじゃない? ○○構造のとき作りにくいってのはあると思うけど わかりやすさでこれ以上はないよ
- 156 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:18:17 ID:H2Spozu7.net]
- >>148
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる 可能性もあるンスから こうなったときにAもBも直す必要がないでしょってこと どちらかを直すかは共同体 同士のパワーバランスで決まるんだけどねw そこはまあ大人になるしかない
- 157 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:20:16 ID:XTsRyKlX.net]
- >>148
> >>145 > いやー、クラス内で状態を保持するクラスが大量に呼ばれてて > 本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか? 何いってるんだ、こいつ。 クラスの基本的な仕組みから理解していないのか。 状態はインスタンスの数だけ持つことになるけど、呼ばれるロジックは一つだよ? 一つのロジックだけをテストすればいいのに、君はstatic化することで、わざわざ一つの状態につき一つのロジックを用意しようとしている。 つまり、君は一つのインスタンスにつき、一つのロジックを記述することで膨大な数のテストをしなければいけない状況を自分で作っている訳だ。 お前のやり方の方が無理ですわ。
- 158 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:27:24 ID:Q34w5rfS.net]
- >>150
いや、わからないよね? クラスCで使うためのクラスAとクラスBであるなら使えなきゃしょうがないじゃん まあ、他でも使ってるなら安全牌はクラスC用のクラスAクラスBの複製だけどw
- 159 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 10:28:11.21 ID:Q34w5rfS.net]
- >>151
バカの相手はできんわ
- 160 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 10:29:59.55 ID:XTsRyKlX.net]
- しかも、1つの状態につき、一つのロジックを書くってことは...似たようなクラスが10個必要になったら、そのクラスのロジックを10回、コピペするわけだ。
で、その後、ロジックを修正することになった場合...10回、コードを書き直すの? そっちの方が無理ですわ。 いっそのこと、staticにしないで、10個の状態が1個のロジックを参照するようにしておけば、ロジックの修正は一回で済む。 そっちの方が断然、楽だね。
- 161 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 10:31:50.71 ID:XTsRyKlX.net]
- >>153
ブーメラン刺さってますよ。 私は仕事するので、その間に頑張って言い訳でも考えていてね!
- 162 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:38:02 ID:H2Spozu7.net]
- >>152
もしかしてインスタンスの意義がわかってないのか? 他でも使ってるなら安全牌はクラスC用のクラスAクラスBの複製だけどw まさしくこの状態を作りたいからクラスAクラスBのインスタンスをつかうんだけどな
- 163 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 10:41:15 ID:Q34w5rfS.net]
- >>156
え?何言ってるの?
- 164 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 11:34:09.20 ID:emOdy//g.net]
- クラス使わない人ってどうするんだろ
構造体? 全部インタプリタみたいな感じ?
- 165 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 11:40:28.84 ID:h5MGZkZK.net]
- スレ主の愚痴はオブジェクト指向かどうかと関係ない
単に設計やテストのやり方を知らないだけ
- 166 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 12:22:45 ID:9YSX2wtH.net]
- >>138
> 内部の状態が見えないのにテストなんかできないだろ ん?全部publicにしておけばテストできるって話じゃないの? もしくはprivateであっても、privateを読み書きできる機能があればテストできるでしょ?
- 167 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 12:25:19.77 ID:XTsRyKlX.net]
- クラス使っても、staticにするとか訳のわからない事を言い出すし、根本的にオブジェクト指向を理解していない人達が愚痴っているだけだよな。
むしろ、何でもstaticにするのはC言語やC++言語から入った初心者なら誰もがやる失敗。 そんな初心者の失敗をいい歳したおっさんが、オブジェクト指向を批判しながらstaticを勧めるから駄目なんだよ。 我々からすれば、俺らの黒歴史時代の経験を何で上から目線で偉そうに語っているんだ?って感じだね。 流石に、上から目線で語る程、俺の黒歴史は酷くなかったぞ。
- 168 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 12:43:43.74 ID:KZb+gCmD.net]
- カプセル化が要らない、と言うのなら、
誰もがデータを読み書きできる状態でどうやってアトミック処理を保証するのか を教えて欲しいな。 もしかしたら大発明かも。
- 169 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 12:49:36.79 ID:Q34w5rfS.net]
- >>160
内包されるよりいくらかCool ただ、そこまでpublicにできるならstaticにしてほしい 実行時にstatesがnoneでないと正しく動かないんですよこのメソッドって 言われても知らねーよそんなのって感じ じゃあstatesはどうやってnoneにするんだべって 俺に調べさせるのやめてもらっていい? もっと言えばstaticにすればそんなことないじゃん?
- 170 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 13:01:46.41 ID:9YSX2wtH.net]
- >>163
内包したらテストできないだろ?
- 171 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 13:06:39.24 ID:XTsRyKlX.net]
- そもそも、クラスって正常に動く前提で使うものであって、なんで、クラスを使う側がクラス内部動作をテストしないといけないのかわからん。
クラスのテストは、クラスを実装する側の責任だろうに。 ...というツッコミをそろそろしてもいいかな?
- 172 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 13:17:56 ID:p+gLKGcc.net]
- >>165
それに類することをすでに>>139で指摘したんだが、自分考えに凝り固まった意固地なおじさんには通じなかったようだ。
- 173 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 13:23:03 ID:p+gLKGcc.net]
- >>163
そのstatesがnoneでなければならないという仕様は、そのクラスの使い方として外部に明示すべき仕様だろう。そそういう情報が示されていないならドキュメントの不備だし、そういう仕様が公開されていても外部からstatesの値を参照または設定できないのなら設計の不備だろう。 延々と繰り返し指摘しているように、それはオブジェクト指向そのものの問題でなく正しく設計、運用がされていない問題だろう。
- 174 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 13:29:58.05 ID:XTsRyKlX.net]
- >>166
あっ、ほんとだ。
- 175 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 15:28:55 ID:xmAi/11M.net]
- カプセル化の最大のメリットは中で何をしているかどうなっているかは気にせずに
外からは引数を与えると仕様通りの値が戻ってくるというところだよね?
- 176 名前:デフォルトの名無しさん [2020/06/25(木) 16:47:53.33 ID:CiEXbKUP.net]
- グローバル変数に格納されている値で関数の挙動が変わるより悲惨だぞ。
グローバル変数が見えないんだから。
- 177 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 16:52:12.11 ID:BM3o+zlw.net]
- ん?
- 178 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 17:00:47.93 ID:XTsRyKlX.net]
- ID変えて振り出しに戻るって奴?
- 179 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 17:03:53.35 ID:p+gLKGcc.net]
- ここまで話の通じない奴だと思うと相手するのがバカらしくなってくるね。まさに徒労という言葉がふさわしい。
- 180 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 19:27:44.23 ID:RQlIhWFK.net]
- >>39
カプセル化こそが善 カプセル化こそがOOPのうまみ
- 181 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 19:35:56.42 ID:oGWS7APt.net]
- 全部staticってどうするんだろう
メソッドの引数すごいことになってそう
- 182 名前:デフォルトの名無しさん [2020/06/25(木) 20:15:30.81 ID:LQ8CyLE7.net]
- オブジェクト指向のあらゆる用語が
ノムリッシュみたいになってると思う JavaScriptが発展して、クラス名と同じ名前の ファイル名にしなくていい事が分かったわけじゃん それどころかクラスすら必要なしでオブジェクトが作れる事が 分かったわけじゃん クラス名と同じ名前のコンストラクタなん定義しなくても オブジェクトが作れる事が分かったじゃん オブジェクトとは詰まるところ連想配列と大して違いが ないキーと値で構成された入れ物でしかない事がわかった。 この「連想配列と違いがない」というシンプルな真実が どれだけありがたいことか クラスを始めとする様々なルールは ソフトウェア設計上の重要な概念かと思ってたら 単なるJavaの変な言語仕様でしかなかったわけだ。 変数を「フィールド」 関数を「メソッド」 関数を「コンストラクタ」 こう言い換える必要がどこにある? こんなノムリッシュなバズワードに 今までどれだけ煙にまかれて シンプルな真実が見えなくなってたことか
- 183 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 20:22:00.90 ID:9YSX2wtH.net]
- >>176
3行でまとめて
- 184 名前:デフォルトの名無しさん [2020/06/25(木) 20:24:37.53 ID:LQ8CyLE7.net]
- それに加えて
「継承」「抽象クラス」「オーバーライド」 「カプセル化」「ポリモーフィズム」 こんな用語は必ずしもやるのが正しいものではないし やればやるほどシステムを必要以上に複雑にして 邪魔にしかならないものばかり それなのに 「オブジェクト指向の本質は継承とカプセル化とポリモーフィズムだ。」 なんて馬鹿げた事を言い始めるノムリッシュな奴が出始めて JavaScriptならオブジェクトの内部に 別のオブジェクトを入れるという一瞬の操作で 終わるものを「委譲」など余計な用語を定義して わざわざ定義しなくてもいいようなくだらない 小難しそうな用語だらけになって 「お前はooの概念を正しく理解してない」 という偉そうな批判がどれだけ飛び交うことか
- 185 名前:デフォルトの名無しさん [2020/06/25(木) 20:31:34.09 ID:LQ8CyLE7.net]
- webフレームワークの
MVCの「モデル」ってそんなに重要ものなのか? 「モデル」なんてものがSQLやDBMSを隠蔽して 何がありがたいと言うのか むしろ隠蔽されて困ることの方が多いんじゃないか? 何故一度テーブル作成時にて定義した 大量の列定義を またモデル層のフィールド定義で2度もやり直さないといけないのか 要らないだろ。「モデル」なんて 最近は従来軽視されてきたクライアントサイドJavaScriptの 方がよっぽど重要なことが分かってきて ReactやVueのようなクライアントサイドフレームワークが 重要視されてるわけじゃん 「オブジェクト指向」って結局何がありがたいのよ?
- 186 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:03:02.32 ID:9YSX2wtH.net]
- 1行でまとめて
- 187 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:03:32.44 ID:9YSX2wtH.net]
- > 「オブジェクト指向」って結局何がありがたいのよ?
多くの人で作業分担し、協力してプログラムを作れる所
- 188 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:03:50.52 ID:9YSX2wtH.net]
- ReactやVueはオブジェクト指向
- 189 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:03:50.90 ID:lu0UaGfG.net]
- >>177
Javaなんてクソを オブジェクト指向の代表として考える かわいそうな子
- 190 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:04:45.08 ID:9YSX2wtH.net]
- >>183
Javaはオブジェクト指向を採用した言語の一つだよ いつから代表になったのさ お前が代表だと思っていて、代表だと思ってる自分自身を批判してるだけじゃんw
- 191 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:05:53.76 ID:lu0UaGfG.net]
- >>180
抽象化を理解できないかわいそうな子
- 192 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:09:21.00 ID:9YSX2wtH.net]
- >>185
お前の文章の話をしてるんだが。 そもそも読んでないのに、抽象化が何の関係があるんだ?
- 193 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:17:15.89 ID:lu0UaGfG.net]
- >>184
>>177 >クラスを始めとする様々なルールは >…… >単なるJavaの変な言語仕様でしかなかったわけだ。 で、「いつから代表になったのさ」がなんだって? 数スレも遡れないようじゃ生きていくの大変だろうに……
- 194 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:43:56.18 ID:9YSX2wtH.net]
- だから読んでないと言ってるw
- 195 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 02:54:16.76 ID:uM2i3sYA.net]
- 関数化したりクラス化したらプログラムが高速化したんだけどGCが発生するタイミングが細かくなったってことでええんか?
- 196 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 07:35:03 ID:eLfJJdHb.net]
- オブジェクト指向は整理術
棚なんて要らん棚があるから余計な物も管理する羽目になると床置する人が現実に居るのと同じ
- 197 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 08:53:43.63 ID:crXMwmqp.net]
- まああまりに糞な抽象化だともう全部publicでレコードとして扱えやとは思うな。
抽象化を万能なものと思い込みすぎな馬鹿が多すぎるからオブジェクト指向に対する誤解が生まれる。
- 198 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:44:19.22 ID:8zz5Zpvs.net]
- っていうか抽象化ってどんな仕様のどの部分を一括に扱ってるのか?
ドキュメントがないと最悪 ここの仕様は特殊だからこれとは別にしないとなって話ができない ドキュメント書かないなら抽象化するな 害悪でしかない
- 199 名前:デフォルトの名無しさん [2020/06/26(金) 09:50:43.03 ID:Op8/e6Io.net]
- >>190
直置きはダメだが ほとんどの場合「棚をしまう為の棚」 「それをしまう為の棚、それをしまうための棚…」 ってなってる で、「ハサミ使いたいんだけどどこにあったっけ?」 って探すのに非常に苦労する。 見つけやすくするための棚だったはずなのに。 それどころか 棚「ハサミは内部で使うから自分で使わなくていいです。 『切る 』という目的だけに集中して、そう命令してください」 と、棚に言われる。 しかし切られた結果を見ると自分が欲しかった結果と微妙に 違うことがよくある。 だから「もう俺が直接切るから、いいからハサミをよこせ」 っていう話になる。 あと抽象化については 「これは抽象的な棚なので中には何も入っていません。 私を参考にした具体的な棚が何処かにあると思うのでそれを 探してください。」となる。 じゃあ「具体的な棚って一体どれだ?なんか長い名前の棚が やたら沢山あるけどどの棚から探せばいいんだ??」 となる
- 200 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:55:00.00 ID:50iMo9Ym.net]
- >>193
たとえ話はややこしいだけで何の意味もないから 具体的な事例で言えよ
- 201 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:55:48.09 ID:50iMo9Ym.net]
- 具体的に何のことを言ってるのか
考えなきゃならんようなたとえ話に価値はねーからな 説明が下手すぎる
- 202 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:13:27.50 ID:wYfFflLL.net]
- >>193
整理が下手なやつの例をあげて、だから整理はすべきでないと言ったって意味がないだろう。
- 203 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:36:41.37 ID:klgKDCEw.net]
- このスレにstaticおじさん、絶対沸いてるだろ。
- 204 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:41:42.69 ID:s43csjES.net]
- >>193
だから具体的な問題>>162に答えてくれよ。 複数のプロセス・スレッドが勝手気ままにデータを処理しても問題ない、というならおめでたいわ。
- 205 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:42:57.59 ID:8zz5Zpvs.net]
- >>198
そんときだけ使えばいいじゃん それ以外じゃ使うなよ
- 206 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:54:38 ID:crXMwmqp.net]
- >>198
アルゴリズムレイヤーでアクセスを無駄に禁止するようなクラスは有害でしかない。 適切なpublic具合というものがある。 例えばc++のstd::vectorなんかはかなりオープンアクセスなクラスだがあれが適切なんだよ。 でもって馬鹿に適切なアクセス制御なんて無理ってこと。 変に細かくするな。 馬鹿はクラスレベルで制御なんかしないでいいからモジュールレベルでアクセスするapiだけ公開してろってこった。
- 207 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:58:13.55 ID:uqHA56uo.net]
- 適切なpublic具合
- 208 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 11:23:09 ID:TcIyIoqu.net]
- トレードオフを理解できてないうちはどっちもどっち
物事の一面しか見れてない >>190や>>193の比喩は理解の程度が知れるという意味ではすごく有意義
- 209 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 11:38:31.41 ID:TyDtokvS.net]
- 適切なpublic具合=ジャイアンルール
- 210 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 11:48:31.80 ID:klgKDCEw.net]
- >>200
たぶん、162はクラスユーザーが呼び出した処理を実行している最中に内部処理を呼び出したら破綻するけど、いいのか?って言いたいのだと思う。 適切なアクセス修飾子をつけろは同意だが、彼に言うことではないと思う。
- 211 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 11:51:10.08 ID:klgKDCEw.net]
- まぁ、スレッドがどうこうは...private関係あるのかな?って感じですが。
- 212 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 12:36:59.06 ID:s43csjES.net]
- >>199
好き勝手にデータに読み書きできるのに、どうやって「その時だけ」を保証するんだよ。 結局カプセル化必須じゃねぇか。 何のアイディアも無しか。アホらしい。
- 213 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 13:04:36 ID:8zz5Zpvs.net]
- >>206
そういう場所だけそうすればいいじゃん 全部そうなら無能過ぎてプログラム組む前にもっとやることあるんじゃないかなぁ
- 214 名前:デフォルトの名無しさん [2020/06/26(金) 13:19:36.46 ID:SlEx0yXd.net]
- 大昔、Javaやりだしてイキりだしたやつらが、オブジェクト指向もできない
老害とか騒いでいた歴史がある。そんな老害から見ると、gcに難しい事をまかせて、 馬鹿を吊り上げる仕組みなんだよなあ〜と皆言っていたのを思い出した。 今はPythonね。もっさ〜として、ダサすぎ。でも「俺AIの最前線だぜ」とか勘違い。 歴史は繰り返すのだ。
- 215 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 13:22:51.90 ID:TcIyIoqu.net]
- atomicityを保証するのを
呼び出し側の責任とするのか呼び出された側の責任とするのかは pros/cons考えて使い分ければいい話でカプセル化必須とかにはならないよ 使う前にopenして終わったらcloseしてください的なAPIと open/close含めて全部やってくれるAPIの違いと同じこと
- 216 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 14:22:11.40 ID:d6LVEoDZ.net]
- >>208
> イキりだしたやつらが、 > 馬鹿を吊り上げる > ダサすぎ。 うわぁ。典型的老害だな。
- 217 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 14:30:22.45 ID:uqHA56uo.net]
- すげえ、スレタイも日本語になってなくて、さらにまともな議論にすらなってないのに盛り上がってるw
オブジェクト指向じゃないやつのオブジェクト指向型言語のコード見れると思ってきたが、カオスだなw
- 218 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 17:24:31.99 ID:MKv++1da.net]
- staticおじさんの詭弁ばかり
- 219 名前:ナ議論にすらならないから、もう、staticおじさん隔離スレ作った方がいいかもね。
【隔離】オブジェクト指向アンチスレ みたいな感じで。 [] - [ここ壊れてます]
- 220 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 17:45:37.11 ID:pGd8NqU0.net]
- >>212
もういっそのこと、こんなんでどうだろうか? 【老害】staticおじさんと戯れるファンの集い【詭弁】
- 221 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:11:48 ID:QQ2hFNnS.net]
- カプセル化はオブジェクト指向に限らずあるんだが
privateにして外からアクセス不能にすることをカプセル化だと思ってる奴は完全に勉強不足
- 222 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:24:19.05 ID:xc/k+9g/.net]
- privateとprotectedの使い分けってみんなどうしてる?
俺は昔はpublic以外はよほど理由がない限り全てprivateにしてたんだけど、最近はよほど理由がない限り全てprotectedにするようになったわ。
- 223 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:33:11.88 ID:50iMo9Ym.net]
- protectedはよくわからんので基本private
必要になったらprotected 必要ないならprivateでいい 変更してはいけないというルールはないんだから
- 224 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:33:48.93 ID:eLfJJdHb.net]
- オブジェクト指向は素晴らしいだろ
金正恩という概念から好きなだけ金正恩を生み出せるんだぞ staticじゃ1匹しか生み出せない その1匹が糖尿で死んだら北朝鮮は成り立たない
- 225 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:36:58.13 ID:eLfJJdHb.net]
- 金与生は金正恩を継承したクラス
もしくは金日成の多態
- 226 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:37:59.75 ID:eLfJJdHb.net]
- 将軍様クラスのプロパティに性別があったとは思わなかったけど
- 227 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:38:24.42 ID:50iMo9Ym.net]
- つまらんよ
- 228 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:39:33 ID:eLfJJdHb.net]
- 北朝鮮人ならえげつない死刑
- 229 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:42:48 ID:QQ2hFNnS.net]
- 金正恩というデータから好きなだけ金正恩産み出すのはオブジェクト思考に限らずできるんだが
オブジェクト指向と全く関係ない 勉強不足
- 230 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 18:59:47 ID:MKv++1da.net]
- >>214
> privateにして外からアクセス不能にすることをカプセル化だと思ってる奴は完全に勉強不足 それな。 カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。 >>215 基本的にはprivate。自分が定義したメンバ変数やメソッドを継承先がどのように使うのか想像ができないのなら、privateにした方がいいと思っている。 継承先で意図しないメソッドの呼び出しや、変数の使い方をされたら困るからね。 当然、継承先での用途を考えた上でprotectedを使う場合もあるけどね。
- 231 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:08:51 ID:QQ2hFNnS.net]
- いやもうお前らprivateとかprotectedとかいう言葉を使ってカプセル化を語るのやめたほうがいいよ
privateという機能がなくてもカプセル化は実現できるから 百歩譲ってデータ隠蔽だけをカプセル化と呼ぶにしても、privateのように外からのアクセスを不能にする機能がなくてもカプセル化は実現できるし
- 232 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:12:26 ID:fnCF+h71.net]
- >>224
そんな方法あるんだ、どうやってやるの?
- 233 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:34:06.00 ID:eLfJJdHb.net]
- >>222
オブジェクト指向でしか出来ないことがあるとでもw
- 234 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:47:03.28 ID:crXMwmqp.net]
- pimpleパターンくらいは知っとけよ。。
てかカプセル化について馬鹿みたいにこだわる奴でまともなインターフェイス設計できる奴見たことねーわ。 リファクタリングもしないで一発で正解にたどり着けるとでも考えてるんだろうな。
- 235 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:48:24.03 ID:SG/+b/+N.net]
- pimple 覚えた pimple ニキビ 覚えたpimple pimple
- 236 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:33:23.82 ID:QQ2hFNnS.net]
- オブジェクト思考言語アレルギーの老害は論外として
特定のオブジェクト指向言語を習得している人は無数にいても、 オブジェクト指向そのものを理解してる人は殆どいなそう
- 237 名前:デフォルトの名無しさん [2020/06/26(金) 20:37:52.02 ID:Op8/e6Io.net]
- >>229
それってオブジェクト指向という概念そのもの がおかしいものだからですよね? っていう議論をずっとしてるんですが 誰にでも理解出来て納得出来ることが正しい ことだと思うんですが
- 238 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:43:25.43 ID:ODDHilOW.net]
- > オブジェクト指向そのものを理解
どういうこと? アランケイがどう考えたとか OOPがどういう成り立ちだとか
- 239 名前:そういういこと? []
- [ここ壊れてます]
- 240 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:54:59.05 ID:0CWC8I0Q.net]
- アランケイが考えたオブジェクト指向は洗練され完成されたオブジェクト指向なのです。
初号機が最強であるのはどこの世界でも同じことです。 初期版が完成です。改良などありえません。
- 241 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 21:47:56.68 ID:ks+n8Bmz.net]
- 第一、privateサポートしてない言語なんて普通にあるしな。Javascriptなんてそうだし。
- 242 名前:223 mailto:sage [2020/06/26(金) 21:51:49.87 ID:ks+n8Bmz.net]
- あ、ID変わっちゃった。223です。
- 243 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:03:26.05 ID:TcIyIoqu.net]
- >>223
>カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。 カプセル化といった時に一般的な定義は2種類あってそれはそのうちの1つで情報隠蔽(Infomation Hiding)とほぼ同じ意味 もう一つはデータとそれを操作する関数/メソッドを一つの単位に束ねることを言う(隠蔽されてるかどうかは気にしない) 人によっては2つを合成した定義でカプセル化という言葉と使ってるので まともな議論をしたければどういう定義でカプセル化と言ってるのか確認する必要がある
- 244 名前:223 mailto:sage [2020/06/26(金) 22:20:46 ID:ks+n8Bmz.net]
- 自分が議論したいというよりは...
このスレ主と>>138みたいな謎方向の議論をする人の思うカプセル化について、そりゃ違うだろって言いたいだけ。 215への回答は聞かれたから答えただけで深い意味はない。
- 245 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:21:20 ID:0CWC8I0Q.net]
- >>235
違う違う。情報隠蔽のことをカプセル化と間違っていってる人がいるだけ カプセル化の定義は必要なものだけをインターフェースとして提供する 必要ないものは隠蔽するってことなんだが 全部必要だから公開しているのに、カプセル化されてない!って言うやつがいるだけ
- 246 名前:デフォルトの名無しさん [2020/06/26(金) 22:33:13 ID:Pmgb6tek.net]
- >>237
それが正しいという一次ソースあるん?
- 247 名前:デフォルトの名無しさん [2020/06/26(金) 22:33:39 ID:Pmgb6tek.net]
- ないんだったらそれあなたの感想ですよね
- 248 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:34:17 ID:TcIyIoqu.net]
- >>237
>カプセル化の定義は必要なものだけをインターフェースとして提供する >必要ないものは隠蔽するってことなんだが 情報隠蔽と何が違うの?
- 249 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:35:17 ID:0CWC8I0Q.net]
- >>240
情報隠蔽は、情報隠蔽しなければカプセル化じゃないって騒ぐが 必要なものだけを公開するなら、情報隠蔽しなくてもカプセル化
- 250 名前:223 mailto:sage [2020/06/26(金) 22:40:01 ID:ks+n8Bmz.net]
- 俺は...カプセル化の本質さえ抑えておけば、言葉としての違いは気にしないけどな。
privateにすること=カプセル化だと勘違いしていても、そいつがカプセル化の有り難みを理解できているのなら、深入りしないだけだよ。 言葉の定義にどこまで拘るかは議論の相手次第。 だが、staticおじさん、貴方は駄目だ。 俺のような細かいことを気にしないレベルの人間ですら駄目だわ。 昔からオブジェクト指向を批判し続けて初心者に誤解を与える老害だから見つけ次第、徹底的に叩く。
- 251 名前:デフォルトの名無しさん [2020/06/26(金) 22:42:23.17 ID:Pmgb6tek.net]
- オブジェクト指向を勉強してる意識高い系のアホが
引数も戻り値も使わず、全部インスタンス変数使ってる例を見て 僕はstaticおじさんになっちゃいそう
|
![](http://yomi.mobi/qr.gif)
|