Raspberry Pi & Python 開発ブログ ☆彡

Raspberry PiとPythonの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

カプセル化とは

f:id:raspberrypi:20220402141333j:plain

ブログ管理者のP.Hです!

今回はオブジェクト指向のカプセル化について解説しようと思います。 オブジェクト指向には主に3つの機能がありますが、カプセル化の役割が一番大きいと私は思います。 大事な内容になりますので、最後までぜひ一読ください。

カプセル化とは

クラスを使い、機能ごとにコードをひとつの塊(カプセル)として作成することです。 こうすることで、コードを簡単に流用することができます。また、バグが発生した場合でも 機能ごとにコードが分かれているため、対処がしやすいという利点もあります。

具体的にどのようにするかというと、クラスを使ってコーディングすればいいだけです。

カプセル化の例

クラスを使うと、変数と関数をひとつの塊(カプセル)としてコーディングすることができます。 下記がクラスの書き方の例になります。

# --- ここからクラス---

class MyClass: # class クラス名(クラス名は任意 わかりやすい名前にする)

    def __init__(self):# コンストラクタ はじめに1回だけ実行される。変数の初期化に主に使われる 
        self.name = "" # nameという変数に初期値""を設定する

    def set(self, name): # 引数の値をnameという変数にセットする関数 
        self.name = name

    def get(self): # name変数の値を表示する関数
        print(self.name)

# --- クラス終わり---

a = MyClass() # クラスをインスタンス化(メモリに展開する)
a.set("123") # "123"という値をセットする
a.get() # "123"という値が表示される

カプセル化の説明

今回、例として名前を設定したり、表示したりするクラスを記載しました。 ここからクラス ~ クラス終わり までがクラスになります。

もし、名前を設定/表示する機能を別のプログラムでも使いたい場合、 このクラスの部分を別のプログラムにそのままコピーすれば、すぐにこの機能を使うことができます。

そして下記のような場合に、カプセル化の威力が発揮されます(あくまで一例)。

  1. 温度センサーを購入して、Raspberry Piに取り付ける。
  2. Webに温度センサーの値を読み込むコードが記載されたクラスのファイルがある。
  3. クラスのファイルをダウンロードし、自分のプログラムに組み込んで実行すると温度センサーから温度を値をすぐに読み取ることができる。

クラスとしてカプセル化されたコードをWebからダウンロードするだけで、自分でコードを書かなくても 目的を達成することができるのです。

機能ごとにクラスとしてコードをまとめておけば、すぐにコードを流用できます。 そしてpythonは非常に有名な言語ですので、Webにいろいろな機能を持ったクラスが既に存在しているのです。

自分でコードを書く部分ももちろんありますが、多くはWebにあるコードを流用することで開発スピードを上げることができます。 これがカプセル化の利点です。

バグが見つかった時

バグが見つかった時もクラスを使っていると解決しやすくなります。 基本的に機能ごとにクラスで分かれているので、バグの箇所を発見しやすいですし、 修正もクラス単位で行えばいいので管理も簡単です。

クラスを使わなくても関数で同じ機能を実現できるか?

クラスを使わなくても複数の変数 + 関数をひとつのファイルで作って、ファイルごとコピーすれば、 クラスと同じ機能を実現することは可能だと思います。 はじめはクラスは何となく難しいイメージがあり、今まで通り変数 + 関数で作ればいいんじゃないの?と思うかもしれません。 しかし、クラスには継承等の他の利点もあるため、必ずクラスを使うようにしてください。 クラスは変数 + 関数の機能を包含していますので、クラスで作るべきなのです。

カプセル化の説明でした。クラスが便利だと感じて頂けたでしょうか。 慣れるとクラスしか使わなくなります。

今回は以上になります。