オブジェクト指向プログラミングには、「カプセル化(かくせるか)」という、とっても大切な考え方があるよ。
「カプセル化」は、簡単に言うと「データの入った箱をカプセルで包んで、外から直接触れないようにすること」なんだ。まるで、お薬のカプセルみたいに、大事な中身を外から見えなくして、安全に守るイメージだよ。
プログラミングでなぜカプセル化が大切かというと、次のような理由があるんだ。
もし、プログラムの中のデータを誰でも好き勝手に変更できてしまうと、思わぬ間違いが起こってしまうかもしれないよね。カプセル化することで、データを直接変更するのを防ぎ、決められた方法(メソッド)を通してだけ変更できるようにするんだ。
カプセル化された部分は、外から見ると「どんな仕組みで動いているか」を気にしなくてよくなるんだ。使う人は、そのカプセルが「何ができるか」だけを知っていればいいから、プログラム全体がシンプルになって、分かりやすくなるんだよ。
もし、カプセルの中の仕組みを変える必要があっても、外から見える部分(メソッド)を変えなければ、そのカプセルを使っている他のプログラムには影響が出ないんだ。だから、プログラムの変更がもっと簡単になるんだよ。
例を挙げてみよう。テレビのリモコンを考えてみて。
みんなは、リモコンの「チャンネルボタン」や「音量ボタン」を押すだけで、テレビのチャンネルが変わったり、音量が大きくなったりするよね?リモコンの中にどんな部品が入っていて、どうやって電気信号を送っているかは、普通は気にしないよね?
これがカプセル化なんだ。リモコン(オブジェクト)は、ボタン(メソッド)という決められた方法を通して、テレビ(外部)を操作させてくれるけど、リモコンの中の複雑な仕組みは、私たちからは見えないように隠されているんだ。
Pythonでは、厳密な「隠す」機能は他の言語ほどではないけれど、変数名の前にアンダースコア(_
)を一つか二つ付けることで、「これは直接触らないでね」というメッセージを表すことができるんだ。これについては、次の「情報隠蔽」のところで詳しく説明するね!
カプセル化は、安全で分かりやすいプログラムを作るための、とっても大切な考え方だよ!