無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。
偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
前前前前スレ
オブジェクト指向ってクソじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1535085129/
前前前スレ
オブジェクト指向ってクソじゃねぇよ? Part2
https://mevius.5ch.net/test/read.cgi/tech/1539872441/
前前スレ
オブジェクト指向ってクソじゃねぇかよPart3
https://mevius.5ch.net/test/read.cgi/tech/1542884872/
前スレ
オブジェクト指向ってクソじゃねぇかよPart4
https://mevius.5ch.net/test/read.cgi/tech/1556462315/
探検
オブジェクト指向ってクソかよPart5
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/10/08(火) 15:46:57.38ID:YglSDU9b2019/10/08(火) 16:32:40.81ID:wc9EJfFY
オブジェクト指向はクソじゃなかったよ Part3
https://mevius.5ch.net/test/read.cgi/tech/1542885246/
https://mevius.5ch.net/test/read.cgi/tech/1542885246/
2019/10/08(火) 16:33:29.66ID:wc9EJfFY
状態管理技術★オブジェクト指向 VS モナド(関数型)
https://mevius.5ch.net/test/read.cgi/tech/1538080434/
[転載禁止] オブジェクト指向を今すぐやってください(c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1414409620/
オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1451927425/
LinuxカーネルはC言語なのにオブジェクト指向
https://mevius.5ch.net/test/read.cgi/tech/1543063194/
C++はクソだがオブジェクト指向がクソなのではない
https://mevius.5ch.net/test/read.cgi/tech/1544632246/
オブジェクト指向以外のメリットを書くスレ
https://mevius.5ch.net/test/read.cgi/tech/1542808008/
オブジェクト指向の活用方法を教えて下さい
https://mevius.5ch.net/test/read.cgi/tech/1395751447/
https://mevius.5ch.net/test/read.cgi/tech/1538080434/
[転載禁止] オブジェクト指向を今すぐやってください(c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1414409620/
オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1451927425/
LinuxカーネルはC言語なのにオブジェクト指向
https://mevius.5ch.net/test/read.cgi/tech/1543063194/
C++はクソだがオブジェクト指向がクソなのではない
https://mevius.5ch.net/test/read.cgi/tech/1544632246/
オブジェクト指向以外のメリットを書くスレ
https://mevius.5ch.net/test/read.cgi/tech/1542808008/
オブジェクト指向の活用方法を教えて下さい
https://mevius.5ch.net/test/read.cgi/tech/1395751447/
2019/10/08(火) 21:07:58.90ID:LbrU2ENb
前スレ最後の一ヶ月でドドっと進んだな
2019/10/08(火) 22:15:07.68ID:PABlxMbH
staticおじさん超バカにしてたんだけど
前スレにリンクあったから約10年ぶりに読んでみたらちょっと印象変わったわ
むしろOOを必死に説明しようとしてる人たちの煽り耐性の低さと中身の薄さに驚いた
https://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
前スレにリンクあったから約10年ぶりに読んでみたらちょっと印象変わったわ
むしろOOを必死に説明しようとしてる人たちの煽り耐性の低さと中身の薄さに驚いた
https://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
2019/10/08(火) 23:03:10.93ID:Zz7EGsZv
信者は盲目で物事の本質よりも自分が信じた教条や面子が大事だからな
だまされたともしらず
だまされたともしらず
2019/10/08(火) 23:12:45.74ID:Zz7EGsZv
それは、このスレについても一緒
2019/10/08(火) 23:56:30.29ID:5JNTYipx
なにげに1スレが良スレ
staticおじさんのほうが自分がわからないことを認めてル分だけマシ
なにがメリットなのか説明できないのに、
持論を押しつけてくるバカが湧いてくるのは変わらん
staticおじさんのほうが自分がわからないことを認めてル分だけマシ
なにがメリットなのか説明できないのに、
持論を押しつけてくるバカが湧いてくるのは変わらん
2019/10/09(水) 01:01:29.83ID:HOttFWO2
改めて1スレ読んでみた。
身分がヨパラテ書いた批判レスの誤記がやけに目立ったw
身分がヨパラテ書いた批判レスの誤記がやけに目立ったw
2019/10/09(水) 01:06:10.21ID:HOttFWO2
2019/10/09(水) 04:24:15.79ID:TYyTLU0G
当時はRailsが流行ってたからなんじゃないの
2019/10/09(水) 07:09:04.23ID:V2kL4405
なんで「カプセル化ってクソかよ」ってスレタイにしなかったの?
2019/10/09(水) 09:11:51.05ID:utYAxsvn
>>1のマッチポンプという言葉に触発されてチンポをシコシコするようになったのかな
14デフォルトの名無しさん
2019/10/09(水) 09:20:02.77ID:tHn556Tb 継承・カプセル化・多態のオブジェクト指向三本柱マンのうち最初に倒壊したのはカプセル化じゃなくて継承なんだがな。
やれ継承より委譲だの、継承よりコンポジションだの、オブジェクト指向界隈内外からボッコボコよ。
やれ継承より委譲だの、継承よりコンポジションだの、オブジェクト指向界隈内外からボッコボコよ。
2019/10/09(水) 09:47:07.00ID:U4YBgj6o
まじかよ2019年にもなってこんなこと言う奴いるのかよ。終わってるな日本。
2019/10/09(水) 12:41:20.40ID:pozjB7/S
>>15
それ3000年前に土器焼きながら埴輪が言ってた
それ3000年前に土器焼きながら埴輪が言ってた
2019/10/09(水) 13:12:12.54ID:2IGAh0bF
最初に倒壊したのは多態じゃないの?
ぱっと見きれいに書けるんだけど、次第にグダグダになる
カプセル化が次かな。setter と getter を使わないと書けない
というところで破綻している
ぱっと見きれいに書けるんだけど、次第にグダグダになる
カプセル化が次かな。setter と getter を使わないと書けない
というところで破綻している
2019/10/09(水) 13:48:29.97ID:i4LeYaG1
19デフォルトの名無しさん
2019/10/09(水) 15:17:31.68ID:gEtou4VA 完全に倒壊して以後作られた言語が腫れ物に触るように扱ってるのは継承だけ。
逆に言うと他二つは生きてる。
三本柱→二足歩行だから、
おじいちゃんから青年に若返ったとも言える。
逆に言うと他二つは生きてる。
三本柱→二足歩行だから、
おじいちゃんから青年に若返ったとも言える。
2019/10/09(水) 15:38:09.54ID:U4YBgj6o
2019/10/09(水) 17:06:48.31ID:kGq1JDkC
まあアレだよね。自分の設計の下手さを
言語のせいにしてるっていうよくある構図
言語のせいにしてるっていうよくある構図
2019/10/09(水) 17:33:28.21ID:2IGAh0bF
>>18
多態がきれいに決まった例を教えてくれ。
グダグダになった例しか私は知らないが
カプセルかは引数経由でしか内部状態の参照、書き換えを
許さないという意味だから、setter, getter の話では?
多態がきれいに決まった例を教えてくれ。
グダグダになった例しか私は知らないが
カプセルかは引数経由でしか内部状態の参照、書き換えを
許さないという意味だから、setter, getter の話では?
2019/10/09(水) 17:47:56.44ID:kGq1JDkC
>>22
お前なんか考え方がおかしいぞ。
なんだよきれいに決まるって
既存の物理法則か何かを多態で表現できるかどうかとか
そういう話してるんじゃないぞ
「ソフトウェアを作る時」に多態を使うんだよ。
当てはめるんじゃない。ソフトウェアの設計の話だ
多態の例ならGUIシステムで多用されてるだろ。
各コンポーネントはrender()メソッドを持っていて
各コンポーネントそれぞれのやり方で見た目を描画するとかさ
お前なんか考え方がおかしいぞ。
なんだよきれいに決まるって
既存の物理法則か何かを多態で表現できるかどうかとか
そういう話してるんじゃないぞ
「ソフトウェアを作る時」に多態を使うんだよ。
当てはめるんじゃない。ソフトウェアの設計の話だ
多態の例ならGUIシステムで多用されてるだろ。
各コンポーネントはrender()メソッドを持っていて
各コンポーネントそれぞれのやり方で見た目を描画するとかさ
2019/10/09(水) 17:50:35.35ID:kGq1JDkC
>>22
> カプセルかは引数経由でしか内部状態の参照、書き換えを
> 許さないという意味だから
ぜんぜん違う。
obj.value = obj.value + 1
↑これはカプセル化が行われてるかつ、引数経由ではない内部状態の参照・書き換え方法だ
> カプセルかは引数経由でしか内部状態の参照、書き換えを
> 許さないという意味だから
ぜんぜん違う。
obj.value = obj.value + 1
↑これはカプセル化が行われてるかつ、引数経由ではない内部状態の参照・書き換え方法だ
2019/10/09(水) 18:05:43.18ID:QgTihdwL
だからさー、頭いいやつがGUIのフレームワークとか作るのはおおいに結構だし、
凡人がそのサブクラスで画面を作るのもいいんだよ
ただ凡人がクラスデザインを語るなっつーの
凡人がそのサブクラスで画面を作るのもいいんだよ
ただ凡人がクラスデザインを語るなっつーの
2019/10/09(水) 18:13:03.42ID:QgTihdwL
凡人は画面にボタンとかポトペタすればいいし、
クリックのイベントに業務のロジックを構造化プログラミングすればいいんだよ
ボタンと画面の描画は、フレームワークが適切なイベントで描画してくれるよ
画面とボタンの描画イベントが呼ばれるし、ボタンも画面もウィンドウのサブクラスかもしれないけど
凡人は気にするな
クリックのイベントに業務のロジックを構造化プログラミングすればいいんだよ
ボタンと画面の描画は、フレームワークが適切なイベントで描画してくれるよ
画面とボタンの描画イベントが呼ばれるし、ボタンも画面もウィンドウのサブクラスかもしれないけど
凡人は気にするな
2019/10/09(水) 18:20:51.58ID:U4YBgj6o
>>22
自分は18ではないが...
strage = usb
または
strage = sdCard
string text = strage.read(ファイル名)
みたいな記述はよくやる。
※組み込み開発
自分は18ではないが...
strage = usb
または
strage = sdCard
string text = strage.read(ファイル名)
みたいな記述はよくやる。
※組み込み開発
2019/10/09(水) 18:23:55.93ID:8dT9XKEA
>>24
カプセル化の唯一無二の定義があるわけじゃないからそこをすり合わせないと。
それにその例はカプセル化が行われると言えるかどうか外からでは分からないよね
↓こういうコードの一部だったら一般的にはカプセル化されてるとは言わないと思う
struct Object
{
int value;
};
struct Object object = {0, 0};
object.value = object.value + 1;
あとRubyみたく'value='メソッドに引数を渡してる糖衣構文と捉えることもできるから
引数経由(メソッド経由のことだよね?)と言えなくもない
object.value=(object.value + 1)
カプセル化の唯一無二の定義があるわけじゃないからそこをすり合わせないと。
それにその例はカプセル化が行われると言えるかどうか外からでは分からないよね
↓こういうコードの一部だったら一般的にはカプセル化されてるとは言わないと思う
struct Object
{
int value;
};
struct Object object = {0, 0};
object.value = object.value + 1;
あとRubyみたく'value='メソッドに引数を渡してる糖衣構文と捉えることもできるから
引数経由(メソッド経由のことだよね?)と言えなくもない
object.value=(object.value + 1)
2019/10/09(水) 18:44:13.89ID:kGq1JDkC
>>28
> カプセル化の唯一無二の定義があるわけじゃないからそこをすり合わせないと。
オブジェクトの内部表現とインターフェースを分離させること
この分離により、複雑な内部構造をシンプルに見せたり
インターフェースを変更すること無く、内部のデータ構造を効率のいい形に改善したり
互換性を保ちつつリファクタリングしたりと言ったことが用意になる
> カプセル化の唯一無二の定義があるわけじゃないからそこをすり合わせないと。
オブジェクトの内部表現とインターフェースを分離させること
この分離により、複雑な内部構造をシンプルに見せたり
インターフェースを変更すること無く、内部のデータ構造を効率のいい形に改善したり
互換性を保ちつつリファクタリングしたりと言ったことが用意になる
2019/10/09(水) 18:54:59.17ID:/s8TKAVY
2019/10/09(水) 18:56:06.05ID:kGq1JDkC
カプセル化されていれば、インターフェースを変えることなく
内部構造を変更可能になる。
ということは、Rubyなんかは、普通に書いてもそれが出来るので
必ずカプセル化が使われていると言える。
内部構造を変更可能になる。
ということは、Rubyなんかは、普通に書いてもそれが出来るので
必ずカプセル化が使われていると言える。
2019/10/09(水) 19:47:12.49ID:U4YBgj6o
>>22
カプセル化はもっと、シンプルに考えた方がいい。
カプセル化の意義は責務分割を行うことに意義がある。
setterとgetterを用意することが本質ではない。
※結果的に、private変数にアクセスするためのメソッドを用意する形になるが、それが本質ではない。
カプセル化する際は、クラスを使う人側の気持ちを考えて実装すべし。
setX,getYというメソッドを並べまくっても使いにくいクラスが出来上がるだけだから注意だ。
カプセル化はもっと、シンプルに考えた方がいい。
カプセル化の意義は責務分割を行うことに意義がある。
setterとgetterを用意することが本質ではない。
※結果的に、private変数にアクセスするためのメソッドを用意する形になるが、それが本質ではない。
カプセル化する際は、クラスを使う人側の気持ちを考えて実装すべし。
setX,getYというメソッドを並べまくっても使いにくいクラスが出来上がるだけだから注意だ。
2019/10/09(水) 22:25:07.64ID:Nmcqp5OF
何か滑った感のある、新興宗教で頭わいたようなレスだな
34あ
2019/10/09(水) 23:03:33.40ID:8dT9XKEA >>29
俺もほぼ同じ理解なんだけど
そうするとgetter/setterは呼び出し側が依存してるインターフェースを変えずに
内部の実装を変更できるようにする目的で用意するものなので
カプセル化を実現する手段の一つに該当するんじゃないの?
ん、あれ、カプセル化にgetter/setter関係ないって書いたのと同じ人だと勘違いしてた
ま、カプセル化 == getter/setterでしょって言われるとそりゃ違うよってなるよね
俺もほぼ同じ理解なんだけど
そうするとgetter/setterは呼び出し側が依存してるインターフェースを変えずに
内部の実装を変更できるようにする目的で用意するものなので
カプセル化を実現する手段の一つに該当するんじゃないの?
ん、あれ、カプセル化にgetter/setter関係ないって書いたのと同じ人だと勘違いしてた
ま、カプセル化 == getter/setterでしょって言われるとそりゃ違うよってなるよね
2019/10/09(水) 23:58:13.23ID:wHURiiUB
継承は間違った使い方が多すぎるから批判されてる
単なるコード共通化とかな
それなら無くしちまえってのが最近の流れでは
単なるコード共通化とかな
それなら無くしちまえってのが最近の流れでは
2019/10/10(木) 00:06:58.68ID:clBk4+T+
2019/10/10(木) 00:11:30.44ID:+HH5ew/U
>>35
間違ってるも糞もないと思うんだけど
間違ってるも糞もないと思うんだけど
2019/10/10(木) 00:38:19.01ID:P0sO6qGI
2019/10/10(木) 01:48:18.01ID:clBk4+T+
>>38
だから関数を使わない(つまり引数も使わない)で
obj.value = 1 とか v = obj.value が使える状態で
カプセル化できるって言ってんだよ。多くの言語では。
↓ これが間違いだってわかるだろ
> カプセルかは引数経由でしか内部状態の参照、書き換えを
> 許さないという意味だから
だから関数を使わない(つまり引数も使わない)で
obj.value = 1 とか v = obj.value が使える状態で
カプセル化できるって言ってんだよ。多くの言語では。
↓ これが間違いだってわかるだろ
> カプセルかは引数経由でしか内部状態の参照、書き換えを
> 許さないという意味だから
2019/10/10(木) 02:06:50.75ID:clBk4+T+
自分で書こうと思ったコードがまんま見つかったので拝借w
JavaScriptの例な
https://qiita.com/hogefuga/items/eefbbf6f4d2ff682c7e0
console.log(object.value); // no value
object.value = 'test';
console.log(object.value); // value: test
↑これは明らかにカプセル化されてる。
(リンク先を見ればgetter/setter経由なのがわかる)
しかし、objectの実装を以下のように変えても全く同じように動く
const object = {value: 'no value'};
ここでなんかおかしな話だなと気づかなければいけない。
クラスのインターフェースは全く変わらないというのに
クラスの実装によってカプセル化されてる or されてない が決定するのはおかしな話。
もちろんそんな変なことはない。両方とも「カプセル化されてる」んだよ。
Javaにおいて、カプセル化するというのは「getX/setX関数のみを使いパブリックフィールドを直接触らないようにすること」
その理由はパブリックフィールドを直接使うと、内部実装を変更したときにインターフェースが変わってしまうことがあるから
だから、Javaでは全てを「getX/setX関数経由でアクセス」すること=カプセル化であるが、
JavaScriptにおいては、パブリックプロパティを直接参照しても、内部実装を変更したときにインターフェースが
変わらないようになってるから、JavaSciprtではデフォルトで全てのオブジェクトがカプセル化されてると言える
このように言語仕様でデフォルトでカプセル化されてる(もしくはカプセル化のための専用の機能がある)言語には
C#、Ruby、Python、PHP等がある。
言語仕様にカプセル化サポートの機能がある言語では、「引数経由でしか内部状態の参照、書き換えない」は間違い。
JavaScriptの例な
https://qiita.com/hogefuga/items/eefbbf6f4d2ff682c7e0
console.log(object.value); // no value
object.value = 'test';
console.log(object.value); // value: test
↑これは明らかにカプセル化されてる。
(リンク先を見ればgetter/setter経由なのがわかる)
しかし、objectの実装を以下のように変えても全く同じように動く
const object = {value: 'no value'};
ここでなんかおかしな話だなと気づかなければいけない。
クラスのインターフェースは全く変わらないというのに
クラスの実装によってカプセル化されてる or されてない が決定するのはおかしな話。
もちろんそんな変なことはない。両方とも「カプセル化されてる」んだよ。
Javaにおいて、カプセル化するというのは「getX/setX関数のみを使いパブリックフィールドを直接触らないようにすること」
その理由はパブリックフィールドを直接使うと、内部実装を変更したときにインターフェースが変わってしまうことがあるから
だから、Javaでは全てを「getX/setX関数経由でアクセス」すること=カプセル化であるが、
JavaScriptにおいては、パブリックプロパティを直接参照しても、内部実装を変更したときにインターフェースが
変わらないようになってるから、JavaSciprtではデフォルトで全てのオブジェクトがカプセル化されてると言える
このように言語仕様でデフォルトでカプセル化されてる(もしくはカプセル化のための専用の機能がある)言語には
C#、Ruby、Python、PHP等がある。
言語仕様にカプセル化サポートの機能がある言語では、「引数経由でしか内部状態の参照、書き換えない」は間違い。
2019/10/10(木) 02:11:13.44ID:clBk4+T+
ようするに、今話をしてるのは、オブジェクト指向のカプセル化とはどういうことなのか?
という話なのだから、特定の言語での実装の話をするのは間違い。
"オブジェクトがカプセル化されていれば" インターフェースを変えること無く
内部の実装を変更することが可能になる。
言い方を逆にすると、インターフェースを変えること無く内部の実装を変更することが可能であれば
"そのオブジェクトはカプセル化されている" ということ
という話なのだから、特定の言語での実装の話をするのは間違い。
"オブジェクトがカプセル化されていれば" インターフェースを変えること無く
内部の実装を変更することが可能になる。
言い方を逆にすると、インターフェースを変えること無く内部の実装を変更することが可能であれば
"そのオブジェクトはカプセル化されている" ということ
2019/10/10(木) 05:56:07.99ID:mQOxxhmy
継承は、10年くらい前はmixinだのtraitだの流行ったけど、今やどうでもいいわって感じだな
2019/10/10(木) 08:58:56.73ID:WGsUN34T
1のテンプレ、時代遅れすぎないか?
2019/10/10(木) 09:35:51.74ID:6kYzxc6O
最先端だろ
2019/10/10(木) 22:18:20.63ID:EN4r3i1C
>>40
カプセル化の概念を狭く捉えすぎ
Javaのgetter/setterやRubyのアクセサ、C#のプロパティなんかは
カプセル化を実現するための手段の一つであってそれイコールカプセル化じゃない
それにJSでもRubyでもC#でも直接インスタンス変数にアクセスしてるコードを
getter/setterやアクセサやプロパティ経由に変更した場合に呼び出し側に変更が必要な場合もあるから
デフォルトでカプセル化されてるとか考えるのは間違ってるよ
人にもう少し勉強したほうが良いよとか言う前に自分が勉強しようね
カプセル化の概念を狭く捉えすぎ
Javaのgetter/setterやRubyのアクセサ、C#のプロパティなんかは
カプセル化を実現するための手段の一つであってそれイコールカプセル化じゃない
それにJSでもRubyでもC#でも直接インスタンス変数にアクセスしてるコードを
getter/setterやアクセサやプロパティ経由に変更した場合に呼び出し側に変更が必要な場合もあるから
デフォルトでカプセル化されてるとか考えるのは間違ってるよ
人にもう少し勉強したほうが良いよとか言う前に自分が勉強しようね
2019/10/10(木) 23:56:14.42ID:2XAtZlBW
…カプセル化じゃない
…間違ってるよ
…勉強しようね
…間違ってるよ
…勉強しようね
2019/10/11(金) 01:26:24.59ID:cg6Wcsaq
>>46
それな。自分の意見を何一つ言ってないwww
それな。自分の意見を何一つ言ってないwww
2019/10/11(金) 01:37:36.70ID:cg6Wcsaq
たまにクラスにprivateが無いからカプセル化できないと言ってるやつがいるが、
「_で始まる変数名はprivateとする」という規約を作れば実現可能
C言語でオブジェクト指向をするという話と同じなんだよ。
C言語はオブジェクト指向言語ではないのでクラスなどが無いが
だからといってC言語でオブジェクト指向ができないわけじゃない。
言語機能として、privateやプロパティはカプセル化専用の機能であるが
カプセル化専用の機能がないからと言って、カプセル化ができないわけじゃない。
カプセル化専用の機能がなくとも、「_で始まる変数名はprivateとする」
「publicフィールドを使わずに、関数経由で読み書きする」という"規約"でカプセル化出来る。
関数経由で読み書きするのは、カプセル化専用の機能(の一つ)が無いJavaで
カプセル化するための"規約"に過ぎず、多くの言語では関数経由にする必要がない。
いずれにしろ、カプセル化をどうやって実現するかは言語の機能によって変わるが
カプセル化の概念は、内部構造とインターフェースを分離するして
外から内部構造を直接いじらないようにすること
「_で始まる変数名はprivateとする」という規約を作れば実現可能
C言語でオブジェクト指向をするという話と同じなんだよ。
C言語はオブジェクト指向言語ではないのでクラスなどが無いが
だからといってC言語でオブジェクト指向ができないわけじゃない。
言語機能として、privateやプロパティはカプセル化専用の機能であるが
カプセル化専用の機能がないからと言って、カプセル化ができないわけじゃない。
カプセル化専用の機能がなくとも、「_で始まる変数名はprivateとする」
「publicフィールドを使わずに、関数経由で読み書きする」という"規約"でカプセル化出来る。
関数経由で読み書きするのは、カプセル化専用の機能(の一つ)が無いJavaで
カプセル化するための"規約"に過ぎず、多くの言語では関数経由にする必要がない。
いずれにしろ、カプセル化をどうやって実現するかは言語の機能によって変わるが
カプセル化の概念は、内部構造とインターフェースを分離するして
外から内部構造を直接いじらないようにすること
2019/10/11(金) 07:28:14.10ID:Txg9tUjJ
プログラムの基礎であるメンバのスコープまたは
シンボルの命名規則を使ったアクセス制限規約のこと言ってんのかよ
元々簡単な筈のことなのに説明が下手にくどくて、
煙に巻かれて読んで損したような気分
シンボルの命名規則を使ったアクセス制限規約のこと言ってんのかよ
元々簡単な筈のことなのに説明が下手にくどくて、
煙に巻かれて読んで損したような気分
2019/10/11(金) 08:30:07.55ID:m78/Olsy
2019/10/11(金) 12:59:52.11ID:kot4gcq1
larabelとかよくできてるじゃん
2019/10/11(金) 14:21:29.12ID:dN/CgRLR
カプセル化はデータとデータに対する操作をセットにすること
privateでデータを隠すのはデータ隠蔽
インターフェースで実装を隠すのは情報隠蔽
privateでデータを隠すのはデータ隠蔽
インターフェースで実装を隠すのは情報隠蔽
2019/10/11(金) 14:35:13.43ID:QtmRuluN
× カプセル化はデータとデータに対する操作をセットにすること
○ オブジェクト指向はデータとデータに対する操作をセットにすること
データとデータに対する操作をセットにすることは、カプセル化とは関係ない
○ オブジェクト指向はデータとデータに対する操作をセットにすること
データとデータに対する操作をセットにすることは、カプセル化とは関係ない
2019/10/11(金) 14:38:29.98ID:QtmRuluN
privateでデータを隠すのはデータ隠蔽
インターフェースで実装を隠すのは情報隠蔽
そしてカプセル化という概念は、
「データ隠蔽」と「情報隠蔽」を使って実現するもの
privateやインターフェースがなくても規約等で「データ隠蔽」と
「情報隠蔽」相当のことを行うことも可能だが面倒になりやすい。
そのために言語が用意してくれる機能がprivateやインターフェース
インターフェースで実装を隠すのは情報隠蔽
そしてカプセル化という概念は、
「データ隠蔽」と「情報隠蔽」を使って実現するもの
privateやインターフェースがなくても規約等で「データ隠蔽」と
「情報隠蔽」相当のことを行うことも可能だが面倒になりやすい。
そのために言語が用意してくれる機能がprivateやインターフェース
2019/10/11(金) 14:42:40.80ID:jSXBX1w1
オレオレ定義の押しつけあいで言葉遊びしてて虚しくねぇの?
2019/10/11(金) 14:45:08.49ID:QtmRuluN
一般的な定義を言ってるんだが?
2019/10/11(金) 15:05:22.26ID:dN/CgRLR
>>53
それどこ情報?
それどこ情報?
2019/10/11(金) 15:06:27.08ID:dN/CgRLR
>>54
カプセル化の定義は何?
カプセル化の定義は何?
2019/10/11(金) 15:11:03.25ID:dN/CgRLR
ちなみにワイはwikipedia
オブジェクト指向はオブジェクトを大事にします
ってことなので値と操作をセットにすることとは違うよ
オブジェクト指向はオブジェクトを大事にします
ってことなので値と操作をセットにすることとは違うよ
2019/10/11(金) 15:24:31.99ID:QtmRuluN
2019/10/11(金) 15:28:02.10ID:QtmRuluN
>>60のリンク先を更に探すとここにたどり着いた
http://web.archive.org/web/20080906224409/http://www.itmweb.com/essay550.htm
http://web.archive.org/web/20080906224409/http://www.itmweb.com/essay550.htm
2019/10/11(金) 15:29:01.27ID:mjZX3Aly
読めない(´・ω・`)
2019/10/11(金) 15:30:20.85ID:dN/CgRLR
>>60
僕のが正しいですよね
僕のが正しいですよね
2019/10/11(金) 15:34:07.32ID:QtmRuluN
いいえ
2019/10/11(金) 15:53:18.86ID:dN/CgRLR
>>64
いいえじゃないが
いいえじゃないが
2019/10/11(金) 15:54:47.89ID:dN/CgRLR
ちなみに僕はJavaのブロンズの資格持ちです
Javaの試験では僕が示したとおりに解答しないと落ちます
Javaの試験では僕が示したとおりに解答しないと落ちます
2019/10/11(金) 15:56:16.21ID:dN/CgRLR
僕の定義は一般的ですよ
全世界で行われてるプログラミングの最も人気のある試験での模範解答なので
全世界で行われてるプログラミングの最も人気のある試験での模範解答なので
2019/10/11(金) 15:58:39.66ID:dN/CgRLR
そしてあなたはカプセル化を説明できていない
2019/10/11(金) 16:01:06.01ID:dN/CgRLR
カプセル化とは何か?
2019/10/11(金) 16:03:57.37ID:mjZX3Aly
ウインダムとかミクラスとかアギラとか
2019/10/11(金) 16:06:36.86ID:QtmRuluN
>>41で書いたとおり
"オブジェクトがカプセル化されていれば" インターフェースを変えること無く
内部の実装を変更することが可能になる。
言い方を逆にすると、インターフェースを変えること無く内部の実装を変更することが可能であれば
"そのオブジェクトはカプセル化されている" ということ
"オブジェクトがカプセル化されていれば" インターフェースを変えること無く
内部の実装を変更することが可能になる。
言い方を逆にすると、インターフェースを変えること無く内部の実装を変更することが可能であれば
"そのオブジェクトはカプセル化されている" ということ
2019/10/11(金) 16:15:29.39ID:dN/CgRLR
>>71
それ情報隠蔽やで
それ情報隠蔽やで
2019/10/11(金) 16:15:57.04ID:dN/CgRLR
試験落ちてまうど
2019/10/11(金) 16:17:48.83ID:QtmRuluN
2019/10/11(金) 16:19:56.39ID:dN/CgRLR
>>74
君の思いはわかったけど独りよがりの思い込みに価値などない、君はJavaブロンズに受からない
君の思いはわかったけど独りよがりの思い込みに価値などない、君はJavaブロンズに受からない
2019/10/11(金) 16:20:25.93ID:dN/CgRLR
君は完全に間違っている
2019/10/11(金) 16:21:29.10ID:dN/CgRLR
カプセル化は値と操作の一体化のこと
2019/10/11(金) 16:26:03.75ID:dN/CgRLR
Javaブロンズの前で君たちの浅はかな理解など取るに足らぬ
2019/10/11(金) 16:43:07.90ID:LwZAFcHp
カプセル化おじさんはちからをためている。
2019/10/11(金) 17:10:40.83ID:ALv2Fv/b
どうしてキャプセレチオンしないのよーッ!
2019/10/11(金) 17:48:10.46ID:6SqPsHXs
ところで、ここまでオブジェクト指向をクソだとする根拠があがらないのはなぜ?
オブジェクト指向プログラマーvs誰がとは言わんがオブジェクト指向プログラマー気取り が激突するスレかな?
オブジェクト指向プログラマーvs誰がとは言わんがオブジェクト指向プログラマー気取り が激突するスレかな?
2019/10/11(金) 17:57:40.40ID:ljKmFHFW
>>81
そもそも、オブジェクト指向にメリットが無いからな
強いて言えば単に費やす時間が無駄なだけ
オブジェクト指向とはソースファイルのどこに処理を書くか?
ただそれだけの技術である
→実はどこに書いたって動く(核爆)
そもそも、オブジェクト指向にメリットが無いからな
強いて言えば単に費やす時間が無駄なだけ
オブジェクト指向とはソースファイルのどこに処理を書くか?
ただそれだけの技術である
→実はどこに書いたって動く(核爆)
2019/10/11(金) 18:02:01.44ID:dN/CgRLR
オブジェクト指向がクソなのはインスタンス変数の存在のせい
できるだけメソッドの行数を減らすとかインスタンス変数を使わないメソッドはオブジェクト指向じゃないとか巷で言われてるせいでそれを真に受けた意識高い初心者がゴミのようなコードを量産してしまうところにオブジェクト指向の限界を僕は感じましたよ
できるだけメソッドの行数を減らすとかインスタンス変数を使わないメソッドはオブジェクト指向じゃないとか巷で言われてるせいでそれを真に受けた意識高い初心者がゴミのようなコードを量産してしまうところにオブジェクト指向の限界を僕は感じましたよ
2019/10/11(金) 18:14:37.08ID:dN/CgRLR
オブジェクト指向で作られたhello worldを見ればわかるがオブジェクト指向は過度な抽象化を促進する抽象化圧力つまりアブストラクションプレッシャリングアクセラレイトがかかるからそれをいなせる胆力がないと使いこなすのは難しい
2019/10/11(金) 18:21:24.34ID:6SqPsHXs
>>83
なるほど、staticおじさんがstaticおじさんになった時の主張に似ているね。
オブジェクト指向の定義はさておき、インスタンス化のメリットはクラスという型から必要な数だけオブジェクトを生成できること。
そのメリットが無いのならJavaやC#のMathみたいにstatic化すればいいじゃんって思うし、オブジェクト指向をクソ呼ばわりする根拠が弱い気がするが...。
実際、自分もMathみたいにインスタンス化が不要であればstaticにするし。
まぁ、staticおじさんみたいに全部static化はしないが。
>>82
まぁ、既存の方法で困っていないのならオブジェクト指向は採用しなくてもいいんじゃないかな?
クソ呼ばわりしたら、なんで?って聞くけど。
コーディングの行数は比較したことがないからなんとも言えないが、オブジェクト指向導入で工数削減なら実現した事例は、いくらでもあるよ。
書いたコードを再利用しやすいのがオブジェクト指向のメリットの一つだからね。
なるほど、staticおじさんがstaticおじさんになった時の主張に似ているね。
オブジェクト指向の定義はさておき、インスタンス化のメリットはクラスという型から必要な数だけオブジェクトを生成できること。
そのメリットが無いのならJavaやC#のMathみたいにstatic化すればいいじゃんって思うし、オブジェクト指向をクソ呼ばわりする根拠が弱い気がするが...。
実際、自分もMathみたいにインスタンス化が不要であればstaticにするし。
まぁ、staticおじさんみたいに全部static化はしないが。
>>82
まぁ、既存の方法で困っていないのならオブジェクト指向は採用しなくてもいいんじゃないかな?
クソ呼ばわりしたら、なんで?って聞くけど。
コーディングの行数は比較したことがないからなんとも言えないが、オブジェクト指向導入で工数削減なら実現した事例は、いくらでもあるよ。
書いたコードを再利用しやすいのがオブジェクト指向のメリットの一つだからね。
2019/10/11(金) 18:54:22.09ID:QtmRuluN
2019/10/11(金) 20:44:45.28ID:kv91xo2J
細胞が膜で覆われてるのに似てる。
中身のものを直接扱えないのもな。
中身のものを直接扱えないのもな。
2019/10/11(金) 20:59:44.57ID:Obz6LqVu
カプセル化を説明するときはリモコンや自販機や車とか、あとお店のサービスで普通例えない?
的外れな例えはむしろ害となりがち
的外れな例えはむしろ害となりがち
2019/10/12(土) 00:05:00.41ID:hC2MVz5n
変なのがワラワラ湧いてきたな。
オブジェクト指向はまるで池沼ホイホイだな。
オブジェクト指向はまるで池沼ホイホイだな。
2019/10/12(土) 03:38:52.22ID:m58DXjin
カプセル化と継承を同じレベルで考えてるやつがいるからな。
継承は「行うこと」だが、カプセル化は「行うこと」じゃなくて概念。
カプセル化という概念がわかっていて、その概念に従って設計すれば
こういうメリットがありますよーっていう話だから
カプセル化という概念に従った設計をするときに使える便利な道具が
privateやインターフェース。だからといって別に使う必要があるわけじゃない。
多く言語ではカプセル化という概念を取り入れて言語を作っているから、
publicプロパティを使っていても、カプセル化に従うことが出来るが、
Javaではsetter/getterというワークアラウンド(_で始まる名前をprivate変数とするという規約と同じ)が
必要になるが、多くの言語ではそんな事気にしなくてもカプセル化という概念を満たすコードが書ける
継承は「行うこと」だが、カプセル化は「行うこと」じゃなくて概念。
カプセル化という概念がわかっていて、その概念に従って設計すれば
こういうメリットがありますよーっていう話だから
カプセル化という概念に従った設計をするときに使える便利な道具が
privateやインターフェース。だからといって別に使う必要があるわけじゃない。
多く言語ではカプセル化という概念を取り入れて言語を作っているから、
publicプロパティを使っていても、カプセル化に従うことが出来るが、
Javaではsetter/getterというワークアラウンド(_で始まる名前をprivate変数とするという規約と同じ)が
必要になるが、多くの言語ではそんな事気にしなくてもカプセル化という概念を満たすコードが書ける
2019/10/12(土) 06:02:26.53ID:hC2MVz5n
カプセル化とは何か人によって解釈がさまざまで、よく話が発散するが、
カプセル化を含むオブジェクト指向の害を弾劾するこのスレにおいて
自分の考えこそカプセル化として正しいとか主張すること自体
スレ違いなのは理解できている?
カプセル化を含むオブジェクト指向の害を弾劾するこのスレにおいて
自分の考えこそカプセル化として正しいとか主張すること自体
スレ違いなのは理解できている?
2019/10/12(土) 06:31:54.75ID:1JRUpTA+
腹いてえ下痢だよゲリぃ
グリーンピース食べすぎたわ
グリーンピース食べすぎたわ
2019/10/12(土) 06:34:02.05ID:hC2MVz5n
ボッチしとけよ
2019/10/12(土) 09:27:37.09ID:tUC1lSfU
2019/10/12(土) 09:40:03.04ID:PKccBz0E
オブジェクト戦士(バカ)多いな
2019/10/12(土) 09:48:44.50ID:tUC1lSfU
> 変なのがワラワラ湧いてきたな。
> オブジェクト指向はまるで池沼ホイホイだな。
> オブジェクト戦士(バカ)多いな
ここは罵り合うだけのスレかな?
やーい、お前のソースコードs t a t i c!
> オブジェクト指向はまるで池沼ホイホイだな。
> オブジェクト戦士(バカ)多いな
ここは罵り合うだけのスレかな?
やーい、お前のソースコードs t a t i c!
2019/10/12(土) 10:28:24.31ID:7TGqmTiW
カプセル化おじさんのレス見て思うのは
自分の無知や間違いを認められなくなったら技術者としては終わりだなってこと
歳を取ると老害が増える理由
自分の無知や間違いを認められなくなったら技術者としては終わりだなってこと
歳を取ると老害が増える理由
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【悲報】高市早苗さん、もう辞職しか選択肢がない… [271912485]
- 【愛国者速報】フィフィ、中国の“日本産水産物輸入停止”措置に私見「中国依存しないとやっていけない企業は考えを改めて」 [856698234]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
- 中国・環球時報「沖縄は日本領ではないのでは?」高市 [931948549]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
