MENU

【雑記】初心者向けに実践的なオブジェクト指向を解説してみた

目次

1. オブジェクト指向とは

※前提条件:本記事は初心者に向けてイメージを掴んでいただくものであるため、厳密には違うかもしれません。
私のプログラミングメンタリングを長らく受講していただいている方に向けて、オブジェクト指向をわかりやすく説明したかったのですが、良い記事が見つからず、本記事を執筆することにしました。
オブジェクト指向とは、プログラムを機能単位(オブジェクト)に分けて、その中にメソッド(実行単位)を記載していく設計思想です。PythonやSwiftなど、モダンな言語に採用されています。

2. 実例

以下は、挨拶をするプログラムの例です。

フォルダ構成

  • parents:この機能は何を実装すれば良いのかの設計書
  • child:parentsに書かれた設計書をもとに機能を実装
  • main:プログラムを実行するだけのもの
# class宣言
class Human:

    # コンストラクタ
    def __init__(self, name, year, birth):
        self.name = name
        self.year = year
        self.birth = birth

    # 自己紹介メソッド
    def introduce(self):
        pass

    # 名前取得メソッド
    def get_name(self):
        return self.name
from perents_greet import Human
#Humanクラスを継承して、HumanHealthを定義
class HumanHealth(Human):

    # コンストラクタ
    def __init__(self, name, year, birth, height, weight):

        #親クラスのコンストラクタを呼び出す
        super().__init__(name, year, birth)

        self.height = height
        self.weight = weight

    # BMIメソッドを追加
    def get_bmi(self):
        return round(self.weight/(self.height**2),2)

    # 自己紹介メソッドをオーバーライド
    def introduce(self):
        text = "私の名前は、{}です。今年で{}歳になります。BMIは{}です。"
        return text.format(self.name, self.year, self.get_bmi())
from perents_greet import Human
#Humanクラスを継承して、HumanHealthを定義
class HumanHealth(Human):

    # コンストラクタ
    def __init__(self, name, year, birth, height, weight):

        #親クラスのコンストラクタを呼び出す
        super().__init__(name, year, birth)

        self.height = height
        self.weight = weight

    # BMIメソッドを追加
    def get_bmi(self):
        return round(self.weight/(self.height**2),2)

    # 自己紹介メソッドをオーバーライド
    def introduce(self):
        text = "私の名前は、{}です。今年で{}歳になります。BMIは{}です。既婚者で趣味はサッカーです。"
        return text.format(self.name, self.year, self.get_bmi())
import child_greet_1
import child_greet_2

# somaはchild_greet_1を実行
souma = child_greet_1.HumanHealth("souma", 26, "19931013", 1.7, 70)
print (souma.introduce())

# kojiはchild_greet_2を実行
koji = child_greet_2.HumanHealth("koji", 26, "19931013", 1.7, 70)
print (koji.introduce())

実行結果

私の名前は、soumaです。今年で26歳になります。BMIは24.22です。
私の名前は、kojiです。今年で26歳になります。BMIは24.22です。既婚者で趣味はサッカーです

somaさんはシャイなようで、BMIまでしか教えてくれませんでした。
一方でkojiさんは、オープンなようで、家族構成や趣味まで教えてくれました。
このように同じ親クラスの継承でもそれぞれで挨拶するという機能は同じです。
一方で、挨拶内容には違いがあるようです。
これがオブジェクト指向の考え方です。

親クラスで、機能とやりたいことを定義しておいて、実装は子クラスに任せる。これがオブジェクト指向が現場で使われている設計方法です。

3. おわりに

最後まで記事を読んでいただきありがとうございます。
オブジェクト指向いかがでしたか?
複数人の開発者で作り上げるプロジェクトでは必須の考え方になります。
コードの中に設計書を設けることである程度実装が統一されます。
ぜひこの考えか方をマスターして、脱初心者を目指してみてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Rio@iOSエンジニアのアバター Rio@iOSエンジニア 経営者兼モバイルアプリエンジニア

都内のモバイルアプリ開発会社経営者。
モバイルアプリの新規の請負開発及び保守運用を引き受ける。
Denso→Honda→現在
#RxSwift #MVVM #Firebase #Python3

コメント

コメントする

目次