オブジェクト指向の三大原則:カプセル化・継承・ポリモーフィズムを理解する

オブジェクト指向プログラミングの基本であるカプセル化、継承、ポリモーフィズムについて、その概念と実践方法をわかりやすく解説します。

ソフトウェア開発において、オブジェクト指向(OOP:Object-Oriented Programming)は、複雑なシステムを整理しやすく、再利用性の高い設計を可能にする考え方です。

その中核をなす「三大原則」が、**カプセル化・継承・ポリモーフィズム(多態性)**です。

この記事では、それぞれの原則の意味とメリット、簡単な実装例を通して解説していきます。


カプセル化(Encapsulation)

カプセル化とは?

カプセル化とは、「データ(変数)と、それを操作する処理(メソッド)を1つの単位にまとめ、外部からの直接アクセスを制限すること」です。

内部の実装を隠し、必要な操作だけを公開することで、データの保護や安全性を高めます。

メリット

  • オブジェクトの内部状態を外部から守れる(データの保護)
  • 実装の変更が外部に影響しにくくなる(保守性向上)
  • オブジェクトの使い方が明確になる(インターフェースの明示)

実装例(Python)

python
CopyEdit
class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # 外部から直接アクセスできない

    def deposit(self, amount):
        self.__balance += amount

    def withdraw(self, amount):
        if amount <= self.__balance:
            self.__balance -= amount

    def get_balance(self):
        return self.__balance

継承(Inheritance)

継承とは?

継承とは、既存のクラス(親クラス)の機能を、新しいクラス(子クラス)に引き継ぐ仕組みです。

共通部分を親クラスにまとめ、個別の違いを子クラスで追加することで、コードの再利用性と構造の明確化が可能になります。

メリット

  • コードの重複を削減できる
  • 共通処理を親クラスにまとめることで、修正もしやすくなる
  • 「is-a(〜である)」関係を表現できる

実装例(Python)

python
CopyEdit
class Animal:
    def speak(self):
        print("Some sound")

class Dog(Animal):
    def speak(self):
        print("Woof!")

class Cat(Animal):
    def speak(self):
        print("Meow!")

ポリモーフィズム(Polymorphism)

ポリモーフィズムとは?

ポリモーフィズムとは、「同じ操作(メソッド名)でありながら、異なるオブジェクトが異なる振る舞いをすること」を指します。

これは、継承やインターフェースを利用して、共通のインターフェースで異なる実装を提供できる柔軟性を意味します。

メリット

  • 同一インターフェースで処理できるため、コードがシンプルになる
  • 拡張がしやすく、オープン・クローズドの原則にも合致する
  • 実装の詳細を気にせず処理を記述できる(抽象度が高い)

実装例(Python)

python
CopyEdit
def make_it_speak(animal):
    animal.speak()

dog = Dog()
cat = Cat()

make_it_speak(dog)  # Woof!
make_it_speak(cat)  # Meow!

まとめ

オブジェクト指向の三大原則である「カプセル化・継承・ポリモーフィズム」は、それぞれ以下のような役割を担っています:

  • カプセル化:データと処理の一体化、外部からの保護
  • 継承:コードの再利用、階層構造の表現
  • ポリモーフィズム:柔軟なインターフェースと拡張性の確保

これらの原則を理解し、実践に取り入れることで、保守性・再利用性・拡張性に優れたソフトウェア設計が可能になります。

はじめは1つずつ意識するところから、徐々に複合的に活用できるようになると、オブジェクト指向の真価が実感できるようになるでしょう。

編集部

編集部

オブジェクト指向の三大原則:カプセル化・継承・ポリモーフィズムを理解する