カプセル化(英語: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)
探検
カプセル化の有害性、オブジェクト指向は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/06/18(木) 23:47:36.69ID:l/2SQUll161デフォルトの名無しさん
2020/06/25(木) 12:25:19.77ID:XTsRyKlX クラス使っても、staticにするとか訳のわからない事を言い出すし、根本的にオブジェクト指向を理解していない人達が愚痴っているだけだよな。
むしろ、何でもstaticにするのはC言語やC++言語から入った初心者なら誰もがやる失敗。
そんな初心者の失敗をいい歳したおっさんが、オブジェクト指向を批判しながらstaticを勧めるから駄目なんだよ。
我々からすれば、俺らの黒歴史時代の経験を何で上から目線で偉そうに語っているんだ?って感じだね。
流石に、上から目線で語る程、俺の黒歴史は酷くなかったぞ。
むしろ、何でもstaticにするのはC言語やC++言語から入った初心者なら誰もがやる失敗。
そんな初心者の失敗をいい歳したおっさんが、オブジェクト指向を批判しながらstaticを勧めるから駄目なんだよ。
我々からすれば、俺らの黒歴史時代の経験を何で上から目線で偉そうに語っているんだ?って感じだね。
流石に、上から目線で語る程、俺の黒歴史は酷くなかったぞ。
162デフォルトの名無しさん
2020/06/25(木) 12:43:43.74ID:KZb+gCmD カプセル化が要らない、と言うのなら、
誰もがデータを読み書きできる状態でどうやってアトミック処理を保証するのか
を教えて欲しいな。
もしかしたら大発明かも。
誰もがデータを読み書きできる状態でどうやってアトミック処理を保証するのか
を教えて欲しいな。
もしかしたら大発明かも。
163デフォルトの名無しさん
2020/06/25(木) 12:49:36.79ID:Q34w5rfS >>160
内包されるよりいくらかCool
ただ、そこまでpublicにできるならstaticにしてほしい
実行時にstatesがnoneでないと正しく動かないんですよこのメソッドって
言われても知らねーよそんなのって感じ
じゃあstatesはどうやってnoneにするんだべって
俺に調べさせるのやめてもらっていい?
もっと言えばstaticにすればそんなことないじゃん?
内包されるよりいくらかCool
ただ、そこまでpublicにできるならstaticにしてほしい
実行時にstatesがnoneでないと正しく動かないんですよこのメソッドって
言われても知らねーよそんなのって感じ
じゃあstatesはどうやってnoneにするんだべって
俺に調べさせるのやめてもらっていい?
もっと言えばstaticにすればそんなことないじゃん?
164デフォルトの名無しさん
2020/06/25(木) 13:01:46.41ID:9YSX2wtH >>163
内包したらテストできないだろ?
内包したらテストできないだろ?
165デフォルトの名無しさん
2020/06/25(木) 13:06:39.24ID:XTsRyKlX そもそも、クラスって正常に動く前提で使うものであって、なんで、クラスを使う側がクラス内部動作をテストしないといけないのかわからん。
クラスのテストは、クラスを実装する側の責任だろうに。
...というツッコミをそろそろしてもいいかな?
クラスのテストは、クラスを実装する側の責任だろうに。
...というツッコミをそろそろしてもいいかな?
166デフォルトの名無しさん
2020/06/25(木) 13:17:56.03ID:p+gLKGcc167デフォルトの名無しさん
2020/06/25(木) 13:23:03.90ID:p+gLKGcc >>163
そのstatesがnoneでなければならないという仕様は、そのクラスの使い方として外部に明示すべき仕様だろう。そそういう情報が示されていないならドキュメントの不備だし、そういう仕様が公開されていても外部からstatesの値を参照または設定できないのなら設計の不備だろう。
延々と繰り返し指摘しているように、それはオブジェクト指向そのものの問題でなく正しく設計、運用がされていない問題だろう。
そのstatesがnoneでなければならないという仕様は、そのクラスの使い方として外部に明示すべき仕様だろう。そそういう情報が示されていないならドキュメントの不備だし、そういう仕様が公開されていても外部からstatesの値を参照または設定できないのなら設計の不備だろう。
延々と繰り返し指摘しているように、それはオブジェクト指向そのものの問題でなく正しく設計、運用がされていない問題だろう。
168デフォルトの名無しさん
2020/06/25(木) 13:29:58.05ID:XTsRyKlX >>166
あっ、ほんとだ。
あっ、ほんとだ。
169デフォルトの名無しさん
2020/06/25(木) 15:28:55.17ID:xmAi/11M カプセル化の最大のメリットは中で何をしているかどうなっているかは気にせずに
外からは引数を与えると仕様通りの値が戻ってくるというところだよね?
外からは引数を与えると仕様通りの値が戻ってくるというところだよね?
170デフォルトの名無しさん
2020/06/25(木) 16:47:53.33ID:CiEXbKUP グローバル変数に格納されている値で関数の挙動が変わるより悲惨だぞ。
グローバル変数が見えないんだから。
グローバル変数が見えないんだから。
171デフォルトの名無しさん
2020/06/25(木) 16:52:12.11ID:BM3o+zlw ん?
172デフォルトの名無しさん
2020/06/25(木) 17:00:47.93ID:XTsRyKlX ID変えて振り出しに戻るって奴?
173デフォルトの名無しさん
2020/06/25(木) 17:03:53.35ID:p+gLKGcc ここまで話の通じない奴だと思うと相手するのがバカらしくなってくるね。まさに徒労という言葉がふさわしい。
174デフォルトの名無しさん
2020/06/25(木) 19:27:44.23ID:RQlIhWFK175デフォルトの名無しさん
2020/06/25(木) 19:35:56.42ID:oGWS7APt 全部staticってどうするんだろう
メソッドの引数すごいことになってそう
メソッドの引数すごいことになってそう
176デフォルトの名無しさん
2020/06/25(木) 20:15:30.81ID:LQ8CyLE7 オブジェクト指向のあらゆる用語が
ノムリッシュみたいになってると思う
JavaScriptが発展して、クラス名と同じ名前の
ファイル名にしなくていい事が分かったわけじゃん
それどころかクラスすら必要なしでオブジェクトが作れる事が
分かったわけじゃん
クラス名と同じ名前のコンストラクタなん定義しなくても
オブジェクトが作れる事が分かったじゃん
オブジェクトとは詰まるところ連想配列と大して違いが
ないキーと値で構成された入れ物でしかない事がわかった。
この「連想配列と違いがない」というシンプルな真実が
どれだけありがたいことか
クラスを始めとする様々なルールは
ソフトウェア設計上の重要な概念かと思ってたら
単なるJavaの変な言語仕様でしかなかったわけだ。
変数を「フィールド」
関数を「メソッド」
関数を「コンストラクタ」
こう言い換える必要がどこにある?
こんなノムリッシュなバズワードに
今までどれだけ煙にまかれて
シンプルな真実が見えなくなってたことか
ノムリッシュみたいになってると思う
JavaScriptが発展して、クラス名と同じ名前の
ファイル名にしなくていい事が分かったわけじゃん
それどころかクラスすら必要なしでオブジェクトが作れる事が
分かったわけじゃん
クラス名と同じ名前のコンストラクタなん定義しなくても
オブジェクトが作れる事が分かったじゃん
オブジェクトとは詰まるところ連想配列と大して違いが
ないキーと値で構成された入れ物でしかない事がわかった。
この「連想配列と違いがない」というシンプルな真実が
どれだけありがたいことか
クラスを始めとする様々なルールは
ソフトウェア設計上の重要な概念かと思ってたら
単なるJavaの変な言語仕様でしかなかったわけだ。
変数を「フィールド」
関数を「メソッド」
関数を「コンストラクタ」
こう言い換える必要がどこにある?
こんなノムリッシュなバズワードに
今までどれだけ煙にまかれて
シンプルな真実が見えなくなってたことか
177デフォルトの名無しさん
2020/06/25(木) 20:22:00.90ID:9YSX2wtH >>176
3行でまとめて
3行でまとめて
178デフォルトの名無しさん
2020/06/25(木) 20:24:37.53ID:LQ8CyLE7 それに加えて
「継承」「抽象クラス」「オーバーライド」
「カプセル化」「ポリモーフィズム」
こんな用語は必ずしもやるのが正しいものではないし
やればやるほどシステムを必要以上に複雑にして
邪魔にしかならないものばかり
それなのに
「オブジェクト指向の本質は継承とカプセル化とポリモーフィズムだ。」
なんて馬鹿げた事を言い始めるノムリッシュな奴が出始めて
JavaScriptならオブジェクトの内部に
別のオブジェクトを入れるという一瞬の操作で
終わるものを「委譲」など余計な用語を定義して
わざわざ定義しなくてもいいようなくだらない
小難しそうな用語だらけになって
「お前はooの概念を正しく理解してない」
という偉そうな批判がどれだけ飛び交うことか
「継承」「抽象クラス」「オーバーライド」
「カプセル化」「ポリモーフィズム」
こんな用語は必ずしもやるのが正しいものではないし
やればやるほどシステムを必要以上に複雑にして
邪魔にしかならないものばかり
それなのに
「オブジェクト指向の本質は継承とカプセル化とポリモーフィズムだ。」
なんて馬鹿げた事を言い始めるノムリッシュな奴が出始めて
JavaScriptならオブジェクトの内部に
別のオブジェクトを入れるという一瞬の操作で
終わるものを「委譲」など余計な用語を定義して
わざわざ定義しなくてもいいようなくだらない
小難しそうな用語だらけになって
「お前はooの概念を正しく理解してない」
という偉そうな批判がどれだけ飛び交うことか
179デフォルトの名無しさん
2020/06/25(木) 20:31:34.09ID:LQ8CyLE7 webフレームワークの
MVCの「モデル」ってそんなに重要ものなのか?
「モデル」なんてものがSQLやDBMSを隠蔽して
何がありがたいと言うのか
むしろ隠蔽されて困ることの方が多いんじゃないか?
何故一度テーブル作成時にて定義した
大量の列定義を
またモデル層のフィールド定義で2度もやり直さないといけないのか
要らないだろ。「モデル」なんて
最近は従来軽視されてきたクライアントサイドJavaScriptの
方がよっぽど重要なことが分かってきて
ReactやVueのようなクライアントサイドフレームワークが
重要視されてるわけじゃん
「オブジェクト指向」って結局何がありがたいのよ?
MVCの「モデル」ってそんなに重要ものなのか?
「モデル」なんてものがSQLやDBMSを隠蔽して
何がありがたいと言うのか
むしろ隠蔽されて困ることの方が多いんじゃないか?
何故一度テーブル作成時にて定義した
大量の列定義を
またモデル層のフィールド定義で2度もやり直さないといけないのか
要らないだろ。「モデル」なんて
最近は従来軽視されてきたクライアントサイドJavaScriptの
方がよっぽど重要なことが分かってきて
ReactやVueのようなクライアントサイドフレームワークが
重要視されてるわけじゃん
「オブジェクト指向」って結局何がありがたいのよ?
180デフォルトの名無しさん
2020/06/25(木) 21:03:02.32ID:9YSX2wtH 1行でまとめて
181デフォルトの名無しさん
2020/06/25(木) 21:03:32.44ID:9YSX2wtH > 「オブジェクト指向」って結局何がありがたいのよ?
多くの人で作業分担し、協力してプログラムを作れる所
多くの人で作業分担し、協力してプログラムを作れる所
182デフォルトの名無しさん
2020/06/25(木) 21:03:50.52ID:9YSX2wtH ReactやVueはオブジェクト指向
183デフォルトの名無しさん
2020/06/25(木) 21:03:50.90ID:lu0UaGfG184デフォルトの名無しさん
2020/06/25(木) 21:04:45.08ID:9YSX2wtH185デフォルトの名無しさん
2020/06/25(木) 21:05:53.76ID:lu0UaGfG >>180
抽象化を理解できないかわいそうな子
抽象化を理解できないかわいそうな子
186デフォルトの名無しさん
2020/06/25(木) 21:09:21.00ID:9YSX2wtH187デフォルトの名無しさん
2020/06/25(木) 21:17:15.89ID:lu0UaGfG188デフォルトの名無しさん
2020/06/25(木) 21:43:56.18ID:9YSX2wtH だから読んでないと言ってるw
189デフォルトの名無しさん
2020/06/26(金) 02:54:16.76ID:uM2i3sYA 関数化したりクラス化したらプログラムが高速化したんだけどGCが発生するタイミングが細かくなったってことでええんか?
190デフォルトの名無しさん
2020/06/26(金) 07:35:03.68ID:eLfJJdHb オブジェクト指向は整理術
棚なんて要らん棚があるから余計な物も管理する羽目になると床置する人が現実に居るのと同じ
棚なんて要らん棚があるから余計な物も管理する羽目になると床置する人が現実に居るのと同じ
191デフォルトの名無しさん
2020/06/26(金) 08:53:43.63ID:crXMwmqp まああまりに糞な抽象化だともう全部publicでレコードとして扱えやとは思うな。
抽象化を万能なものと思い込みすぎな馬鹿が多すぎるからオブジェクト指向に対する誤解が生まれる。
抽象化を万能なものと思い込みすぎな馬鹿が多すぎるからオブジェクト指向に対する誤解が生まれる。
192デフォルトの名無しさん
2020/06/26(金) 09:44:19.22ID:8zz5Zpvs っていうか抽象化ってどんな仕様のどの部分を一括に扱ってるのか?
ドキュメントがないと最悪
ここの仕様は特殊だからこれとは別にしないとなって話ができない
ドキュメント書かないなら抽象化するな
害悪でしかない
ドキュメントがないと最悪
ここの仕様は特殊だからこれとは別にしないとなって話ができない
ドキュメント書かないなら抽象化するな
害悪でしかない
193デフォルトの名無しさん
2020/06/26(金) 09:50:43.03ID:Op8/e6Io >>190
直置きはダメだが
ほとんどの場合「棚をしまう為の棚」
「それをしまう為の棚、それをしまうための棚…」
ってなってる
で、「ハサミ使いたいんだけどどこにあったっけ?」
って探すのに非常に苦労する。
見つけやすくするための棚だったはずなのに。
それどころか
棚「ハサミは内部で使うから自分で使わなくていいです。
『切る 』という目的だけに集中して、そう命令してください」
と、棚に言われる。
しかし切られた結果を見ると自分が欲しかった結果と微妙に
違うことがよくある。
だから「もう俺が直接切るから、いいからハサミをよこせ」
っていう話になる。
あと抽象化については
「これは抽象的な棚なので中には何も入っていません。
私を参考にした具体的な棚が何処かにあると思うのでそれを
探してください。」となる。
じゃあ「具体的な棚って一体どれだ?なんか長い名前の棚が
やたら沢山あるけどどの棚から探せばいいんだ??」
となる
直置きはダメだが
ほとんどの場合「棚をしまう為の棚」
「それをしまう為の棚、それをしまうための棚…」
ってなってる
で、「ハサミ使いたいんだけどどこにあったっけ?」
って探すのに非常に苦労する。
見つけやすくするための棚だったはずなのに。
それどころか
棚「ハサミは内部で使うから自分で使わなくていいです。
『切る 』という目的だけに集中して、そう命令してください」
と、棚に言われる。
しかし切られた結果を見ると自分が欲しかった結果と微妙に
違うことがよくある。
だから「もう俺が直接切るから、いいからハサミをよこせ」
っていう話になる。
あと抽象化については
「これは抽象的な棚なので中には何も入っていません。
私を参考にした具体的な棚が何処かにあると思うのでそれを
探してください。」となる。
じゃあ「具体的な棚って一体どれだ?なんか長い名前の棚が
やたら沢山あるけどどの棚から探せばいいんだ??」
となる
194デフォルトの名無しさん
2020/06/26(金) 09:55:00.00ID:50iMo9Ym195デフォルトの名無しさん
2020/06/26(金) 09:55:48.09ID:50iMo9Ym 具体的に何のことを言ってるのか
考えなきゃならんようなたとえ話に価値はねーからな
説明が下手すぎる
考えなきゃならんようなたとえ話に価値はねーからな
説明が下手すぎる
196デフォルトの名無しさん
2020/06/26(金) 10:13:27.50ID:wYfFflLL >>193
整理が下手なやつの例をあげて、だから整理はすべきでないと言ったって意味がないだろう。
整理が下手なやつの例をあげて、だから整理はすべきでないと言ったって意味がないだろう。
197デフォルトの名無しさん
2020/06/26(金) 10:36:41.37ID:klgKDCEw このスレにstaticおじさん、絶対沸いてるだろ。
198デフォルトの名無しさん
2020/06/26(金) 10:41:42.69ID:s43csjES199デフォルトの名無しさん
2020/06/26(金) 10:42:57.59ID:8zz5Zpvs200デフォルトの名無しさん
2020/06/26(金) 10:54:38.35ID:crXMwmqp >>198
アルゴリズムレイヤーでアクセスを無駄に禁止するようなクラスは有害でしかない。
適切なpublic具合というものがある。
例えばc++のstd::vectorなんかはかなりオープンアクセスなクラスだがあれが適切なんだよ。
でもって馬鹿に適切なアクセス制御なんて無理ってこと。
変に細かくするな。
馬鹿はクラスレベルで制御なんかしないでいいからモジュールレベルでアクセスするapiだけ公開してろってこった。
アルゴリズムレイヤーでアクセスを無駄に禁止するようなクラスは有害でしかない。
適切なpublic具合というものがある。
例えばc++のstd::vectorなんかはかなりオープンアクセスなクラスだがあれが適切なんだよ。
でもって馬鹿に適切なアクセス制御なんて無理ってこと。
変に細かくするな。
馬鹿はクラスレベルで制御なんかしないでいいからモジュールレベルでアクセスするapiだけ公開してろってこった。
201デフォルトの名無しさん
2020/06/26(金) 10:58:13.55ID:uqHA56uo 適切なpublic具合
202デフォルトの名無しさん
2020/06/26(金) 11:23:09.67ID:TcIyIoqu203デフォルトの名無しさん
2020/06/26(金) 11:38:31.41ID:TyDtokvS 適切なpublic具合=ジャイアンルール
204デフォルトの名無しさん
2020/06/26(金) 11:48:31.80ID:klgKDCEw >>200
たぶん、162はクラスユーザーが呼び出した処理を実行している最中に内部処理を呼び出したら破綻するけど、いいのか?って言いたいのだと思う。
適切なアクセス修飾子をつけろは同意だが、彼に言うことではないと思う。
たぶん、162はクラスユーザーが呼び出した処理を実行している最中に内部処理を呼び出したら破綻するけど、いいのか?って言いたいのだと思う。
適切なアクセス修飾子をつけろは同意だが、彼に言うことではないと思う。
205デフォルトの名無しさん
2020/06/26(金) 11:51:10.08ID:klgKDCEw まぁ、スレッドがどうこうは...private関係あるのかな?って感じですが。
206デフォルトの名無しさん
2020/06/26(金) 12:36:59.06ID:s43csjES207デフォルトの名無しさん
2020/06/26(金) 13:04:36.71ID:8zz5Zpvs208デフォルトの名無しさん
2020/06/26(金) 13:19:36.46ID:SlEx0yXd 大昔、Javaやりだしてイキりだしたやつらが、オブジェクト指向もできない
老害とか騒いでいた歴史がある。そんな老害から見ると、gcに難しい事をまかせて、
馬鹿を吊り上げる仕組みなんだよなあ〜と皆言っていたのを思い出した。
今はPythonね。もっさ〜として、ダサすぎ。でも「俺AIの最前線だぜ」とか勘違い。
歴史は繰り返すのだ。
老害とか騒いでいた歴史がある。そんな老害から見ると、gcに難しい事をまかせて、
馬鹿を吊り上げる仕組みなんだよなあ〜と皆言っていたのを思い出した。
今はPythonね。もっさ〜として、ダサすぎ。でも「俺AIの最前線だぜ」とか勘違い。
歴史は繰り返すのだ。
209デフォルトの名無しさん
2020/06/26(金) 13:22:51.90ID:TcIyIoqu atomicityを保証するのを
呼び出し側の責任とするのか呼び出された側の責任とするのかは
pros/cons考えて使い分ければいい話でカプセル化必須とかにはならないよ
使う前にopenして終わったらcloseしてください的なAPIと
open/close含めて全部やってくれるAPIの違いと同じこと
呼び出し側の責任とするのか呼び出された側の責任とするのかは
pros/cons考えて使い分ければいい話でカプセル化必須とかにはならないよ
使う前にopenして終わったらcloseしてください的なAPIと
open/close含めて全部やってくれるAPIの違いと同じこと
210デフォルトの名無しさん
2020/06/26(金) 14:22:11.40ID:d6LVEoDZ211デフォルトの名無しさん
2020/06/26(金) 14:30:22.45ID:uqHA56uo すげえ、スレタイも日本語になってなくて、さらにまともな議論にすらなってないのに盛り上がってるw
オブジェクト指向じゃないやつのオブジェクト指向型言語のコード見れると思ってきたが、カオスだなw
オブジェクト指向じゃないやつのオブジェクト指向型言語のコード見れると思ってきたが、カオスだなw
212デフォルトの名無しさん
2020/06/26(金) 17:24:31.99ID:MKv++1da staticおじさんの詭弁ばかりで議論にすらならないから、もう、staticおじさん隔離スレ作った方がいいかもね。
【隔離】オブジェクト指向アンチスレ
みたいな感じで。
【隔離】オブジェクト指向アンチスレ
みたいな感じで。
213デフォルトの名無しさん
2020/06/26(金) 17:45:37.11ID:pGd8NqU0214デフォルトの名無しさん
2020/06/26(金) 18:11:48.36ID:QQ2hFNnS カプセル化はオブジェクト指向に限らずあるんだが
privateにして外からアクセス不能にすることをカプセル化だと思ってる奴は完全に勉強不足
privateにして外からアクセス不能にすることをカプセル化だと思ってる奴は完全に勉強不足
215デフォルトの名無しさん
2020/06/26(金) 18:24:19.05ID:xc/k+9g/ privateとprotectedの使い分けってみんなどうしてる?
俺は昔はpublic以外はよほど理由がない限り全てprivateにしてたんだけど、最近はよほど理由がない限り全てprotectedにするようになったわ。
俺は昔はpublic以外はよほど理由がない限り全てprivateにしてたんだけど、最近はよほど理由がない限り全てprotectedにするようになったわ。
216デフォルトの名無しさん
2020/06/26(金) 18:33:11.88ID:50iMo9Ym protectedはよくわからんので基本private
必要になったらprotected
必要ないならprivateでいい
変更してはいけないというルールはないんだから
必要になったらprotected
必要ないならprivateでいい
変更してはいけないというルールはないんだから
217デフォルトの名無しさん
2020/06/26(金) 18:33:48.93ID:eLfJJdHb オブジェクト指向は素晴らしいだろ
金正恩という概念から好きなだけ金正恩を生み出せるんだぞ
staticじゃ1匹しか生み出せない
その1匹が糖尿で死んだら北朝鮮は成り立たない
金正恩という概念から好きなだけ金正恩を生み出せるんだぞ
staticじゃ1匹しか生み出せない
その1匹が糖尿で死んだら北朝鮮は成り立たない
218デフォルトの名無しさん
2020/06/26(金) 18:36:58.13ID:eLfJJdHb 金与生は金正恩を継承したクラス
もしくは金日成の多態
もしくは金日成の多態
219デフォルトの名無しさん
2020/06/26(金) 18:37:59.75ID:eLfJJdHb 将軍様クラスのプロパティに性別があったとは思わなかったけど
220デフォルトの名無しさん
2020/06/26(金) 18:38:24.42ID:50iMo9Ym つまらんよ
221デフォルトの名無しさん
2020/06/26(金) 18:39:33.79ID:eLfJJdHb 北朝鮮人ならえげつない死刑
222デフォルトの名無しさん
2020/06/26(金) 18:42:48.62ID:QQ2hFNnS 金正恩というデータから好きなだけ金正恩産み出すのはオブジェクト思考に限らずできるんだが
オブジェクト指向と全く関係ない
勉強不足
オブジェクト指向と全く関係ない
勉強不足
223デフォルトの名無しさん
2020/06/26(金) 18:59:47.63ID:MKv++1da >>214
> privateにして外からアクセス不能にすることをカプセル化だと思ってる奴は完全に勉強不足
それな。
カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。
>>215
基本的にはprivate。自分が定義したメンバ変数やメソッドを継承先がどのように使うのか想像ができないのなら、privateにした方がいいと思っている。
継承先で意図しないメソッドの呼び出しや、変数の使い方をされたら困るからね。
当然、継承先での用途を考えた上でprotectedを使う場合もあるけどね。
> privateにして外からアクセス不能にすることをカプセル化だと思ってる奴は完全に勉強不足
それな。
カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。
>>215
基本的にはprivate。自分が定義したメンバ変数やメソッドを継承先がどのように使うのか想像ができないのなら、privateにした方がいいと思っている。
継承先で意図しないメソッドの呼び出しや、変数の使い方をされたら困るからね。
当然、継承先での用途を考えた上でprotectedを使う場合もあるけどね。
224デフォルトの名無しさん
2020/06/26(金) 19:08:51.52ID:QQ2hFNnS いやもうお前らprivateとかprotectedとかいう言葉を使ってカプセル化を語るのやめたほうがいいよ
privateという機能がなくてもカプセル化は実現できるから
百歩譲ってデータ隠蔽だけをカプセル化と呼ぶにしても、privateのように外からのアクセスを不能にする機能がなくてもカプセル化は実現できるし
privateという機能がなくてもカプセル化は実現できるから
百歩譲ってデータ隠蔽だけをカプセル化と呼ぶにしても、privateのように外からのアクセスを不能にする機能がなくてもカプセル化は実現できるし
225デフォルトの名無しさん
2020/06/26(金) 19:12:26.17ID:fnCF+h71 >>224
そんな方法あるんだ、どうやってやるの?
そんな方法あるんだ、どうやってやるの?
226デフォルトの名無しさん
2020/06/26(金) 19:34:06.00ID:eLfJJdHb >>222
オブジェクト指向でしか出来ないことがあるとでもw
オブジェクト指向でしか出来ないことがあるとでもw
227デフォルトの名無しさん
2020/06/26(金) 19:47:03.28ID:crXMwmqp pimpleパターンくらいは知っとけよ。。
てかカプセル化について馬鹿みたいにこだわる奴でまともなインターフェイス設計できる奴見たことねーわ。
リファクタリングもしないで一発で正解にたどり着けるとでも考えてるんだろうな。
てかカプセル化について馬鹿みたいにこだわる奴でまともなインターフェイス設計できる奴見たことねーわ。
リファクタリングもしないで一発で正解にたどり着けるとでも考えてるんだろうな。
228デフォルトの名無しさん
2020/06/26(金) 19:48:24.03ID:SG/+b/+N pimple 覚えた pimple ニキビ 覚えたpimple pimple
229デフォルトの名無しさん
2020/06/26(金) 20:33:23.82ID:QQ2hFNnS オブジェクト思考言語アレルギーの老害は論外として
特定のオブジェクト指向言語を習得している人は無数にいても、
オブジェクト指向そのものを理解してる人は殆どいなそう
特定のオブジェクト指向言語を習得している人は無数にいても、
オブジェクト指向そのものを理解してる人は殆どいなそう
230デフォルトの名無しさん
2020/06/26(金) 20:37:52.02ID:Op8/e6Io231デフォルトの名無しさん
2020/06/26(金) 20:43:25.43ID:ODDHilOW > オブジェクト指向そのものを理解
どういうこと?
アランケイがどう考えたとか
OOPがどういう成り立ちだとかそういういこと?
どういうこと?
アランケイがどう考えたとか
OOPがどういう成り立ちだとかそういういこと?
232デフォルトの名無しさん
2020/06/26(金) 20:54:59.05ID:0CWC8I0Q アランケイが考えたオブジェクト指向は洗練され完成されたオブジェクト指向なのです。
初号機が最強であるのはどこの世界でも同じことです。
初期版が完成です。改良などありえません。
初号機が最強であるのはどこの世界でも同じことです。
初期版が完成です。改良などありえません。
233デフォルトの名無しさん
2020/06/26(金) 21:47:56.68ID:ks+n8Bmz 第一、privateサポートしてない言語なんて普通にあるしな。Javascriptなんてそうだし。
234223
2020/06/26(金) 21:51:49.87ID:ks+n8Bmz あ、ID変わっちゃった。223です。
235デフォルトの名無しさん
2020/06/26(金) 22:03:26.05ID:TcIyIoqu >>223
>カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。
カプセル化といった時に一般的な定義は2種類あってそれはそのうちの1つで情報隠蔽(Infomation Hiding)とほぼ同じ意味
もう一つはデータとそれを操作する関数/メソッドを一つの単位に束ねることを言う(隠蔽されてるかどうかは気にしない)
人によっては2つを合成した定義でカプセル化という言葉と使ってるので
まともな議論をしたければどういう定義でカプセル化と言ってるのか確認する必要がある
>カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。
カプセル化といった時に一般的な定義は2種類あってそれはそのうちの1つで情報隠蔽(Infomation Hiding)とほぼ同じ意味
もう一つはデータとそれを操作する関数/メソッドを一つの単位に束ねることを言う(隠蔽されてるかどうかは気にしない)
人によっては2つを合成した定義でカプセル化という言葉と使ってるので
まともな議論をしたければどういう定義でカプセル化と言ってるのか確認する必要がある
236223
2020/06/26(金) 22:20:46.34ID:ks+n8Bmz 自分が議論したいというよりは...
このスレ主と>>138みたいな謎方向の議論をする人の思うカプセル化について、そりゃ違うだろって言いたいだけ。
215への回答は聞かれたから答えただけで深い意味はない。
このスレ主と>>138みたいな謎方向の議論をする人の思うカプセル化について、そりゃ違うだろって言いたいだけ。
215への回答は聞かれたから答えただけで深い意味はない。
237デフォルトの名無しさん
2020/06/26(金) 22:21:20.66ID:0CWC8I0Q >>235
違う違う。情報隠蔽のことをカプセル化と間違っていってる人がいるだけ
カプセル化の定義は必要なものだけをインターフェースとして提供する
必要ないものは隠蔽するってことなんだが
全部必要だから公開しているのに、カプセル化されてない!って言うやつがいるだけ
違う違う。情報隠蔽のことをカプセル化と間違っていってる人がいるだけ
カプセル化の定義は必要なものだけをインターフェースとして提供する
必要ないものは隠蔽するってことなんだが
全部必要だから公開しているのに、カプセル化されてない!って言うやつがいるだけ
238デフォルトの名無しさん
2020/06/26(金) 22:33:13.54ID:Pmgb6tek >>237
それが正しいという一次ソースあるん?
それが正しいという一次ソースあるん?
239デフォルトの名無しさん
2020/06/26(金) 22:33:39.59ID:Pmgb6tek ないんだったらそれあなたの感想ですよね
240デフォルトの名無しさん
2020/06/26(金) 22:34:17.18ID:TcIyIoqu241デフォルトの名無しさん
2020/06/26(金) 22:35:17.42ID:0CWC8I0Q242223
2020/06/26(金) 22:40:01.42ID:ks+n8Bmz 俺は...カプセル化の本質さえ抑えておけば、言葉としての違いは気にしないけどな。
privateにすること=カプセル化だと勘違いしていても、そいつがカプセル化の有り難みを理解できているのなら、深入りしないだけだよ。
言葉の定義にどこまで拘るかは議論の相手次第。
だが、staticおじさん、貴方は駄目だ。
俺のような細かいことを気にしないレベルの人間ですら駄目だわ。
昔からオブジェクト指向を批判し続けて初心者に誤解を与える老害だから見つけ次第、徹底的に叩く。
privateにすること=カプセル化だと勘違いしていても、そいつがカプセル化の有り難みを理解できているのなら、深入りしないだけだよ。
言葉の定義にどこまで拘るかは議論の相手次第。
だが、staticおじさん、貴方は駄目だ。
俺のような細かいことを気にしないレベルの人間ですら駄目だわ。
昔からオブジェクト指向を批判し続けて初心者に誤解を与える老害だから見つけ次第、徹底的に叩く。
243デフォルトの名無しさん
2020/06/26(金) 22:42:23.17ID:Pmgb6tek オブジェクト指向を勉強してる意識高い系のアホが
引数も戻り値も使わず、全部インスタンス変数使ってる例を見て
僕はstaticおじさんになっちゃいそう
引数も戻り値も使わず、全部インスタンス変数使ってる例を見て
僕はstaticおじさんになっちゃいそう
244デフォルトの名無しさん
2020/06/26(金) 22:49:00.20ID:TcIyIoqu245デフォルトの名無しさん
2020/06/26(金) 22:50:30.87ID:Pmgb6tek 構造化プログラミングをできるようになって
データと関数をオブジェクトとしてまとめるともっと良いかもと
オブジェクト指向を身につけるならいんだけど
オブジェクト指向では名詞を抜き出すんだ
そうやってオブジェクトを分ければ良いプログラムができあがるんだと
オブジェクト指向に幻想抱いてるアホが作ったプログラムは手に負えん
データと関数をオブジェクトとしてまとめるともっと良いかもと
オブジェクト指向を身につけるならいんだけど
オブジェクト指向では名詞を抜き出すんだ
そうやってオブジェクトを分ければ良いプログラムができあがるんだと
オブジェクト指向に幻想抱いてるアホが作ったプログラムは手に負えん
246デフォルトの名無しさん
2020/06/26(金) 22:50:54.79ID:0CWC8I0Q247デフォルトの名無しさん
2020/06/26(金) 22:51:29.48ID:0CWC8I0Q >>245
オブジェクト指向に幻想抱いてる天才が作ったプログラムなら手に負えるだろ?
オブジェクト指向に幻想抱いてる天才が作ったプログラムなら手に負えるだろ?
248デフォルトの名無しさん
2020/06/26(金) 22:52:06.30ID:Pmgb6tek >>247
天才は幻想を抱かない
天才は幻想を抱かない
249デフォルトの名無しさん
2020/06/26(金) 22:52:57.33ID:Pmgb6tek 僕は天才だからわかる
僕のどこが天才なのかは説明できないけどわかって
僕のどこが天才なのかは説明できないけどわかって
250デフォルトの名無しさん
2020/06/26(金) 22:53:19.24ID:0CWC8I0Q251デフォルトの名無しさん
2020/06/26(金) 22:54:34.05ID:Pmgb6tek252デフォルトの名無しさん
2020/06/26(金) 23:08:18.29ID:0CWC8I0Q >>251
だからオブジェクト指向自体には問題がないって言ってるんでしょ?
だからオブジェクト指向自体には問題がないって言ってるんでしょ?
253デフォルトの名無しさん
2020/06/26(金) 23:08:49.57ID:0CWC8I0Q 人の話と技術の話の区別ぐらいつけよう。
人をいくらアホだ馬鹿だと叩いても
技術を否定したことにはならない
人をいくらアホだ馬鹿だと叩いても
技術を否定したことにはならない
254デフォルトの名無しさん
2020/06/26(金) 23:09:53.77ID:Pmgb6tek ListやStack、HTTP Clientといったものはオブジェクト指向と見事に調和するんだけど
それは変えられることがないから、これはこういう機能のものだってのが決まっていて
システムの仕様が変わっても変更されることがない
いっぽうでビジネスドメインにオブジェクト指向を適用しようとすると
仕様がころころ変わるから最初の設計ではうまくいかなくなることが多い
仕様が変わったらオブジェクトの設計もやり直せるならいんだけど
一度システムが動き出したら数万〜数億の人が影響受けるから
なかなか変えられないのが実際のところ
カプセル化されると困るというのはそういう状況の話じゃないかと僕は思いました
ドメインの安定性によってオブジェクト指向の適否は左右されると天才の僕は提言します
それは変えられることがないから、これはこういう機能のものだってのが決まっていて
システムの仕様が変わっても変更されることがない
いっぽうでビジネスドメインにオブジェクト指向を適用しようとすると
仕様がころころ変わるから最初の設計ではうまくいかなくなることが多い
仕様が変わったらオブジェクトの設計もやり直せるならいんだけど
一度システムが動き出したら数万〜数億の人が影響受けるから
なかなか変えられないのが実際のところ
カプセル化されると困るというのはそういう状況の話じゃないかと僕は思いました
ドメインの安定性によってオブジェクト指向の適否は左右されると天才の僕は提言します
255デフォルトの名無しさん
2020/06/26(金) 23:12:02.84ID:Pmgb6tek256デフォルトの名無しさん
2020/06/26(金) 23:18:57.04ID:0CWC8I0Q >>255
お前がそうであってほしいと願ってるのはなぜ?w
お前がそうであってほしいと願ってるのはなぜ?w
257デフォルトの名無しさん
2020/06/26(金) 23:20:58.30ID:Pmgb6tek >>256
何いってんだお前
何いってんだお前
258デフォルトの名無しさん
2020/06/26(金) 23:21:20.47ID:Pmgb6tek 僕が願ってるのは世界平和だけ
259デフォルトの名無しさん
2020/06/26(金) 23:35:54.37ID:n1YsnRgt カプセル化するなら
一切ソースコードレビューしなくていいんだな
変数やメソッドの命名もインデントも全部
適当にやるからな
文句つけるならテストの結果だけで文句を言って
くれよ、ソースコードには文句言うなよな。
例外をキャッチする必要もないな。
俺が利用するクラスで発生した問題はそのクラス内部の
責任だ。内部事情は意識しなくてもいいんだからな。
おっとロギングも内部事情だからやる必要ないな。
そんな事情は利用側は知りたくもないし結果だけが
欲しいんだもんな。
逆にこれらを押し付けるなら全部publicで問題ないよな。
クラスの内部を知りたいってことだからな。
「↑こいつはカプセル化が何なのかを理解してない。」
カプセル化おじさんがどうせこう言うだろうから先に
言っておいたわ。
一切ソースコードレビューしなくていいんだな
変数やメソッドの命名もインデントも全部
適当にやるからな
文句つけるならテストの結果だけで文句を言って
くれよ、ソースコードには文句言うなよな。
例外をキャッチする必要もないな。
俺が利用するクラスで発生した問題はそのクラス内部の
責任だ。内部事情は意識しなくてもいいんだからな。
おっとロギングも内部事情だからやる必要ないな。
そんな事情は利用側は知りたくもないし結果だけが
欲しいんだもんな。
逆にこれらを押し付けるなら全部publicで問題ないよな。
クラスの内部を知りたいってことだからな。
「↑こいつはカプセル化が何なのかを理解してない。」
カプセル化おじさんがどうせこう言うだろうから先に
言っておいたわ。
260デフォルトの名無しさん
2020/06/26(金) 23:45:57.60ID:0CWC8I0Q■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 5:55:55.555
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
- 【悲報】男性人気アイドルグループJO1、中国公演中止wwwwwwwwwwwwwwwwwwwwwwwwwww
