Python3系の勉強中にオブジェクト指向について調べている時に分からなかった点について質問します。Python3系に依存しない一般論的な解答でも構いません。
疑問
カプセル化で情報を隠蔽すればフィールドが保護されて安全と聞きました[1]が、
クラスを設計するとき、フィールドのアクセス権を何でもかんでも全部privateにしてgetter/setter or getterを付ければいい、というのは誤解ですか?
そう思った理由
[1]の理由から外部からどのような操作がされるか分かったものではないpublicなフィールドを使う必要はないのではないかという理由です。
出典
[1]
https://webpia.jp/encapsulation/
カプセル化とは、オブジェクトやデータをカプセルのように保護するという意味から来ています。
「オブジェクト内のデータ」を包み
「オブジェクト外からの不正アクセス」から守る
https://kanda-it-school-kensyu.com/java-basic-contents/jb_ch03/jb_0303/
フィールド変数にprivateをつけて他からのアクセスを制限し、専用の操作(メソッド)を用意することをカプセル化と呼ぶ。
private修飾子を利用して外部からの、直接アクセスでメンバ変数の変更を防ぐことができる。
専用のアクセサメソッドを利用することで、外部からの間違ったアクセスを未然に防ぐことができる。 https://www.gamecradle.net/document/main/content/doki/session14/index39.html
外部からクラスメンバに直接アクセスさせない=オブジェクトの動作の安全性・安定性を高める。
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/a03_02.html
故意あるいは事故でデータが損なわれないよう,(略)カプセル化機能を大いに活用すべきである。
……
回答6件
あなたの回答
tips
プレビュー