オブジェクト指向の説明
オブジェクト指向とは、クラスを使って抽象化すること。
「クラス」とは変数やメソッドをまとめたもの(抽象化)abstractization
「インスタンス」とはクラスを呼び出したもの ひとつの歴史(具体化)concretization
オブジェクト指向の基本的な考え方
- クラス(抽象化):
- クラスは、オブジェクトの設計図のようなもの。クラスには、そのオブジェクトが持つ特徴(属性)や動き(メソッド)を定義する。
- 例えば、「犬」というクラスを作ると、そのクラスには犬が共通して持っている特徴や動きが含まれる。
- インスタンス(具体化):
- インスタンスは、クラスから作られた具体的なオブジェクト。クラスは設計図、インスタンスはその設計図から作られた実際のもの。
- 例えば、「バロン」や「さくら」は「犬」クラスのインスタンス。それぞれ具体的な特徴(バロンは白グレイ、さくらは黒白)と動きを持っている。
例え話で説明
クラスの定義
「犬」というクラスを定義し、そのクラスが持つ特徴と動きを決めます。
class Dog:
def __init__(self, name, color, breed):
self.name = name
self.color = color
self.breed = breed
def bark(self):
print("ワンワン")
def run(self, speed):
if speed == "早く":
print(f"{self.name}が早く走る")
elif speed == "ゆっくり":
print(f"{self.name}がゆっくり走る")
def wag_tail(self):
print(f"{self.name}が尻尾を振る")
インスタンスの作成
「犬」クラスから具体的なインスタンス(バロンとさくら)を作る。
# バロンのインスタンスを作る
baron = Dog("バロン", "白グレイ", "ウィペット")
# さくらのインスタンスを作る
sakura = Dog("さくら", "黒白", "ロングコートチワワ")
# バロンの特徴を確認する
print(f"名前: {baron.name}, 色: {baron.color}, 犬種: {baron.breed}")
# バロンの動きを使う
baron.bark() # ワンワン
baron.run("早く") # バロンが早く走る
baron.wag_tail() # バロンが尻尾を振る
# さくらの特徴を確認する
print(f"名前: {sakura.name}, 色: {sakura.color}, 犬種: {sakura.breed}")
# さくらの動きを使う
sakura.bark() # ワンワン
sakura.run("ゆっくり") # さくらがゆっくり走る
sakura.wag_tail() # さくらが尻尾を振る
まとめ
オブジェクト指向は、ものごとを「クラス」(抽象化)として考え、そのクラスから具体的なオブジェクト(インスタンス)を作り、そのオブジェクトが持っている特徴(属性)と動き(メソッド)をプログラミングで表現する考え方です。


