Raspberry Pi & Python 開発ブログ ☆彡

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

オブジェクト指向の概要説明

f:id:raspberrypi:20220315154223j:plain

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

今回からオブジェクト指向について解説しようと思います。 この内容はとても重要ですので、5回に渡って詳しく説明しようと思います。

  1. 概要・言葉の説明
  2. クラスの基本的な使い方
  3. カプセル(部品)化
  4. 継承
  5. 多様性(ポリモーフィズム)

それではまず概要・言葉の説明から記載してきます。

言葉について正しく理解する

私が初心者の頃、わかりにくかったことは、新しい用語を正しく理解することでした。 オブジェクト指向 = クラス?なのか、プログラミングで多様性ってどういうこと?? 私にはすごくわかりにくかった印象があります。

まずはこれから記載する概要を読んで頂き、あわせて言葉の意味も正しく理解して頂きたいと思っています。

オブジェクト指向とクラスの関係

オブジェクト指向は主に以下の3つ機能があります。

  • カプセル(部品)化
  • 継承
  • 多様性(ポリモーフィズム)

そして、プログラムを物(オブジェクト)のように作っていく考え方を オブジェクト指向と呼んでいます。そして、それを実現するために コーディングする時は、クラスという機能を使います。整理すると

  • オブジェクト指向 ⇒ プログラミングの考え方、概念
  • クラス ⇒ オブジェクト指向を実現するためのコーディング手法

オブジェクト指向とは

オブジェクト指向とは、物を作るようなイメージでプログラミングをすると 複雑なコードを管理しやすく、また汎用性のある使い勝手の良いプログラムを 作ることができる、ということです。

パソコンを例に各機能について解説します。

カプセル(部品)化のイメージ

パソコンを作る時の流れは以下のようになります。

  1. CPU、メモリ、HDD、光学ドライブ、マザーボード等の各部品を作る(購入する)
  2. 部品を組み合わせてパソコンを完成させる。

プログラムもオブジェクト(物)と同じように、まず各部品ごとにゴーディングをします(部品化)。 そして、部品のコードを組み合わせて、最終的に作りたいブログラムを完成させます。

部品ごとにコードを作っておけば、他のブログラムにも流用できます。また バグが見つかった時、問題の部品のコードのみに着目し修正することができます。 パソコンの場合でも、HDDが壊れたらHDDだけ交換すればよいので、簡単に修理をすることができます。

継承のイメージ

DVDドライブは既に完成済み。この状態からDVD+BDドライブを作る時に、DVDドライブの部分は そのまま流用(継承)したいですよね。そして、BD部分だけを新しく設計すれば効率的にDVDD+BDドライブを制作できます。

既存のコードを流用して機能を追加する、または既存のコードの一部を変更することを継承と言います。 既存のコードをそのまま使うことができるので、効率的です。さらに言えば、初心者がよくやってしまう 同じコードを複数個所に書いてしまうことを防いでくれます。同じコードを複数個所に書いて、 ひとつだけ修正漏れがあった、なんていうバグをなくすことができます。

多様性(ポリモーフィズム)のイメージ

多様性はアタッチメントをイメージしてください。メインの部分は変えずに、装着するものを変えることで 機能を簡単に増やすことができます。USBはUSBのしくみは変えずに、装着するデバイスを変えることで ストレージ、Wi-Fi、カメラ等いろいろな機能(多様性)を実現することができます。

アタッチメント部分を作るだけでいいので簡単に後付けで機能を追加することができます。 拡張が容易にできる点が、多様性の利点になります。

まとめ

これらの3つの便利な機能を使うことで、複雑なコードを管理してプログラミングできるようになります。

重要

  • 部品化することで、流用が容易にできる
  • 部品にバグがあった場合は、部品の箇所のみ修正すればよい
  • 共通部分は継承し、一部の機能を追加、修正することができる
  • 多様性により、拡張性が高いコードを作成できる


コードは書かずにまずは概要・イメージを説明しました。実際にクラスを使ってコーディングするのですが、 これは書き方が決まっており、その通りに書くしかありません。重要なのは、上記で記載した通り、 なぜこの機能が必要なのかです。

次回は、概要ではなく具体的な内容・コーディング方法を記載してきます。 今回は以上になります。