質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

4回答

2280閲覧

カプセル化が必要な理由がわからない

yyjfou

総合スコア35

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

1クリップ

投稿2021/05/05 13:23

編集2021/05/05 14:06

趣味でweb開発をしていて、プログラミングの勉強をしているものです。

実務でカプセル化はどんな場合に使われるのでしょうか?

カプセル化は他からのデータ書きかえなどを許可しない構造だと思います。

ならばユーザーログインしないと値を書き換えられない、みたいな構造にしたらカプセル化は必要ないのでは?と感じます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2021/05/05 13:45

Webで質問タグがPythonということは、 Djangoとかでしょうか? であれば、すでにフレームワークを使用している時点でカプセル化されているような気がしますが… それを効率いい仕組みだと感じるならば、それがそのままカプセル化の意義の一つと言えますが。
yyjfou

2021/05/05 13:46

フレームワーク関係なく、オブジェクト指向に対する質問です
miyabi_takatsuk

2021/05/05 13:51 編集

Pythonを使って、ですか? であれば、 「趣味でweb開発をしていて、」と文章をつけるのは、ノイズになるかと。 「プログラミング言語」「オブジェクト指向」 という質問タグが存在しますので、そちらにつけかえましょう。 Webであっても、Pythonを使っていないのならば、質問タグから外しましょう。 見てる人が多そう、という意味でつけたなら、ノイズになります。 プログラミング言語や、オブジェクト指向も、多くのユーザーが見ている質問タグですので。
guest

回答4

0

ベストアンサー

カプセル化が必要な理由は、プログラマがバカだからです。

自分が書いたコードの中の数千個の変数名や関数名と、他人が書いたライブラリの中の数万個の変数名や関数名をを全て覚えていて、どのタイミングでどの変数を参照するか、どの変数を更新するか、どの関数を呼び出すのかを覚えていて、新しい変数や関数を作る時にはそれらと重複しない変数名や関数名を作ることが自由自在に出来るプログラマだけが存在して、それを妨害しようとする悪意をもったプログラマが一人も存在しないような世界になったらカプセル化は必要なくなるかもしれません。

そういう世界になったら、私レベルのプログラマはプログラマ失格になるでしょうし、現在実務をしているプログラマの人たちは失職することでしょう。

私たちバカなプログラマは、カプセル化をしてバグの出にくいソフトウェアを開発することでしか、まともに動作するソフトウェアを作ることができないのですよ。

投稿2021/05/05 13:48

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オブジェクト指向で言うところのカプセル化と言うことであれば、
ログインしているとかしてないとかとは全く関係ないレベルの話です。

オブジェクト指向の勉強を進めれば、カプセル化とは何なのかが分かるかと思います。

投稿2021/05/05 13:27

otn

総合スコア84559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ユーザーログインしないと値を書き換えられない、みたいな構造にしたらカプセル化は必要ないのでは?と感じます。

カプセル化の発想は、それと同じかもしれないですね。
ただ、カプセル化の場合は、ログインのように何かしたらアクセス可能になるわけではないので違う面もありますね。
違う面があるのだから、概念としては別物と言えます。なのでカプセル化は必要です。
そしてカプセル化の実装方法の1つとしてログイン制もあると捉えることも出来るかもしれませんね

質問の意図と違っていたらすみません。

というだけで、この質問に対しては回答になっているかもしれませんが
続けさせてもらうと
カプセル化が必要な理由としては、ログインのセキュリティー的な面以外では
思いついたところでは、何かに例えるなら安全装置と言える面があるのではないでしょうか。

ソフト・ライブラリを販売したとして、内部の変数にアクセスして想定外の使い方をされたら困る事とかあるんじゃないでしょうか。
想定外の使い方をされて、問題、事故が起こったりしたときに損害賠償とか請求されても困りますよね。
そういうために、想定外の使い方をされないようにカプセル化をしている。と言う面もあるんじゃないでしょうか。

他にもカプセル化のメリットはあるかと思います。
ちょっと検索してみてヒットしたのをリンクしてみます

カプセル化のメリットとデメリットについて

投稿2021/05/05 17:08

編集2021/05/05 17:39
xail2222

総合スコア1497

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オブジェクト指向の中でカプセル化が一番重要。
もはやあまりにも当たり前すぎるのである程度学習したらいちいち考える必要はなくなる。

投稿2021/05/05 14:30

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問