1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OOPの三大要素について

Posted at

はじめに

 オブジェクト指向(OOP)には3つの三大要素があります。クラス、ポリモーフィズム、継承がその三大要素です。順に概要とメリットを説明していきます。

クラス

 クラスとは、変数とメソッドをまとめたものです。そのメリットは主に以下の3つです。

  • まとめる
  • 隠す
  • たくさんインスタンスを作る

順に説明していきます。

 クラスによって変数とメソッドをまとめることで、コード全体が整理され、見やすくなります。また、グローバル変数の適用範囲を絞ることができ、グローバル変数に関してエラーが出た際、コード全体ではなくそのクラスの部分だけを確認すればよいので、対応が楽になります。

 次に「隠す」とは、クラス内で定義した変数またはメソッドを外部からアクセスできないようにすることです。こうすることで、変数に不適切な値が入った場合、その変数にアクセスできるのは同じクラスにまとめたメソッドのみとなり、問題の原因を特定しやすくなります。

 最後に、クラスを定義するとそのインスタンスをいくらでも作ることができ、同種かつ複数の情報を扱いやすくなるのがメリットです。

ポリモーフィズム

 ポリモーフィズムとは、呼び出す側の形式を統一することを指します。

#親クラスの定義
class Animal():
    def speak(self):
        pass

#子クラスの定義
class Cat(Animal):
    def speak(self):
        return 'にゃー'
    
class Dog(Animal):
    def speak(self):
        return 'ワン'
        
#ポリモーフィズムで同一の呼び出し方が可能
def animal_speak(animal):
    print(animal.speak())

dog=Dog()
cat=Cat()

animal_speak(dog) #ワン
animal_speak(cat) #にゃー

DogとCatは異なるクラスですが、ポリモーフィズムによってどちらの speak メソッドも同じように呼び出すことができます。このように、呼び出す側に変更を加えることなく、複数の異なるクラスに対して同じ処理を行えるのがポリモーフィズムの大きなメリットです。

継承

 継承とは、あるクラスの変数やメソッドをそのまま他のクラスで使えるようにする仕組みです。

#親クラス
class Animal():
    def speak(self):
        pass

    def explain(self):
        print("動物とは生物学における生物の分類群の一つ(Wikipewdiaより)")
    
#Animalクラスを継承
class Cat(Animal):
    def speak(self):
        return 'にゃー'
    
cat=Cat()

print(cat.speak()) #にゃー
cat.explain()   #動物とは生物学における生物の分類群の一つ(Wikipewdiaより)

Cat クラスでは explain メソッドを定義していませんが、Animal クラスを継承しているため、explain メソッドを使うことができます。これにより、コードの重複を避けることができるのが大きなメリットです。

参考文献

平澤 章. オブジェクト指向でなぜつくるのかー知っておきたいプログラミング、UML、設計の基礎知識ー.日経BP社,2004,[317]

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?