プログラミングは言語を覚えるだけじゃなく、その時に最も優れている考え方で構築します。
その考え方がオブジェクト指向という考え方です。
ちょっとややこしいというか、なかなか覚えにくいというか、わかりずらいんです。
そこで、オブジェクト指向プログラミングを小学生にもわかるように説明するよ。
オブジェクト指向ってなに?
「オブジェクト指向は、
例えば、『犬』というオブジェクトを考えてみよう:
1. 特徴(データ):
– 名前
– 年齢
– 色
2. できること(機能):
– 吠える
– 走る
– 寝る
これらの特徴とできることを一つの『犬』という箱(
そして、『柴犬』や『トイプードル』など、
このように、似たようなものをまとめて考えたり、
プログラムを書くときも、この考え方を使うと、
この説明は、オブジェクト指向の基本的な概念(オブジェクト、
まだ、わかりにくいですよね。
では、プログラミング言語のPythonを使って説明してみるよ
pythonでオブジェクト指向という方法でプログラミングしてみた
ちょっとpythonを使って、簡単な内容のプログラムを作ってみたよ。
class Dog:
def __init__(self, name, age, color):
self.name = name
self.age = age
self.color = color
def bark(self):
print(f”{self.name}が吠えました:ワン!
def run(self):
print(f”{self.name}が走っています!”)
def sleep(self):
print(f”{self.name}は寝ています。Zzz.
# 犬のオブジェクトを作る
my_dog = Dog(“ポチ”, 3, “茶色”)
# 犬の特徴を見る
print(f”名前: {my_dog.name}”)
print(f”年齢: {my_dog.age}歳”)
print(f”色: {my_dog.color}”)
# 犬にできることをやってもらう
my_dog.bark()
my_dog.run()
my_dog.sleep()
もうひとつプログラムを作ってみよう。
“`python
class Dog:
def __init__(self, name, age, color):
self.name = name
self.age = age
self.color = color
def bark(self):
print(f”{self.name}が吠えました:ワン!
def run(self):
print(f”{self.name}が走っています!”)
def sleep(self):
print(f”{self.name}は寝ています。Zzz.
# 犬のオブジェクトを作る
my_dog = Dog(“ポチ”, 3, “茶色”)
# 犬の特徴を見る
print(f”名前: {my_dog.name}”)
print(f”年齢: {my_dog.age}歳”)
print(f”色: {my_dog.color}”)
# 犬にできることをやってもらう
my_dog.bark()
my_dog.run()
my_dog.sleep()
“`
このプログラムを実行すると、次のような出力が得られます:
“`
名前: ポチ
年齢: 3歳
色: 茶色
ポチが吠えました:ワン!ワン!
ポチが走っています!
ポチは寝ています。Zzz…
“`
説明:
1. `class Dog:` で、「犬」というオブジェクトの設計図(クラス)を作ります。
2. `__init__` は、新しい犬を作るときに呼ばれる特別な関数です。名前、年齢、
3. `bark()`, `run()`, `sleep()` は犬ができることを表す関数(メソッド)です。
4. `my_dog = Dog(“ポチ”, 3, “茶色”)` で、実際の犬(オブジェクト)を作ります。
5. `my_dog.name` のように、犬の特徴(属性)を見ることができます。
6. `my_dog.bark()` のように、犬にできることをやってもらえます。
このプログラムは、
犬という「
これにより、
どうでしょう?
少しは掴めたかな?
なかなか難しよね。
こんなややっこし考え方なのに、どうしてこの考え方でプログラミングするのでしょうか
どうしてオブジェクト指向というプログラミング手法が考えられた のか
できるだけわかりやすいように説明しますね。
「料理を作る」
1. レシピ本(クラス):
オブジェクト指向では、「クラス」というものを作ります。
例えば、「
2. 実際の料理(オブジェクト):
レシピを使って実際に作った料理が「オブジェクト」です。
3. 材料と調理手順(属性とメソッド):
レシピには材料(属性)と調理手順(メソッド)
カレーの場合、材料(属性)は肉、野菜、
調理手順(メソッド)は「切る」「炒める」「
4. アレンジ(継承):
基本のカレーレシピを少し変えて、「ビーフカレー」や「
これが「継承」
5. 協力して料理(カプセル化):
友達と一緒に料理するとき、「あなたは野菜を切って」「
これが「カプセル化」という考え方です。
6. 同じ言葉でも料理によって違う(ポリモーフィズム):
「切る」という言葉でも、
これが「
同じ名前の操作でも、
オブジェクト指向プログラミングは、このように「料理を作る」
レシピ(クラス)を作り、
材料(
この方法を使うと、大きな料理(プログラム)でも、
どうでしたか?
一度で理解できるものではないですが、この例を覚えておくと理解できるようになるよ。
ぜひプログラミングするときは、オブジェクト指向を意識して作ってみてね