Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

オブジェクト指向について徹底解説(2) ~「クラス」を徹底解説~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210729065304p:plain

おはようございます。Shotaです。

オブジェクト指向プログラミングという言葉をよく耳にしますが、この概念ははっきりわかるとはなかなか言えないと思います。

オブジェクト指向がわからない!」

「クラス?インスタンス?どういうことなの??」

このような疑問を感じている人も少なくないでしょう。上述のように、オブジェクト指向の概念で曖昧になりがちなポイントがたくさんあります。

今日の記事では、Pythonの具体的なプログラムを使ってオブジェクト指向でよく使われる基本的な用語「クラス」「インスタンス」「メソッド」を解説します。



オブジェクト指向における「クラス」とは?

オブジェクト指向には、「クラス」という考え方があります。クラスとは、これから作る「ものの定義」です。

例えば、

❓「これから作るものができること」

❓「これから作るものが覚えられること」

と言うような内容を決めておきます。オブジェクト指向では『ロボットをおいて仕事をさせるように』プログラミングを進めていきます。ロボットは指示されたことしかできないので、予め「あの命令を受けたらこのようにする」というような指示を決めて利用します。

つまり、クラスとは「これから仕事をしてもらうロボットの設計図」と理解してもらえればわかりやすいでしょう。


インスタンスとは?

インスタンスとは、クラスから作られた動く「もの」のことです。

クラスはあくまで設計図でしかないので、クラスだけでは仕事をしてくれません。実際に動かすためには、「実際に動くもの」である「インスタンス」を設計する必要があります。

インスタンスは「クラスという設計図から生み出された実際に動くロボット」と理解してもらえると非常にわかりやすいと思います。

なお、クラスからインスタンスを作ることを「インスタンス化」と呼びます。


メソッドとは?

メソッドとは、プログラムの一連の処理をまとめたパッケージのようなものです。一連の処理に名前をつけ、後からその一連の処理を簡単に呼び出すことができるようにしておきます。


オブジェクト指向で作ってみよう

上述の説明だけでは非常にわかりにくいと思いますので、実際にPythonのプログラムを使って説明していきます。

今日の記事では、「入力した文字列とその文字数を表示する」プログラムを実際に作成していこうと思います。


▼実際のプログラム(使用している言語はPython)

#クラスの定義
class Sample:

    letter = input('文字を入力:')

    def show(self):
        print(f'入力した文字:{self.letter}, 文字数:{len(self.letter)}')

#インスタンスの作成
ins = Sample()
ins.show()


▼出力結果

文字を入力:Hello world
入力した文字:Hello world, 文字数:11


上記のプログラムを実際に見ていくと、

  1. 「入力した文字列とその文字数を表示する」クラスを作る
  2. クラスでできることは、文字列を入力することやその文字列を表示すること
  3. インスタンスを用意して、実際にクラスを使ってみる


このような仕組みになっていると思います。

まず最初に、クラスの仕組みを見ていきましょう。

class Sample:

    letter = input('文字を入力:')

    def show(self):
        print(f'入力した文字:{self.letter}, 文字数:{len(self.letter)}')


まず、この部分では文字を入力させるように相手に命令し、その入力した文字とその文字数を表示する処理を行っています。

上記のプログラムの、

def show(self):
    print(f'入力した文字:{self.letter}, 文字数:{len(self.letter)}')


このような部分が、クラスのできること―すなわち、「メソッド」になります。

そこで、以下のような記述でインスタンスを作り、実際にクラスを使っています。

ins = Sample()
ins.show()


仕組みは非常に簡単で、変数insをSampleクラスのインスタンスとして用意し、その作ったインスタンスを用いてshowメソッドを用意しています。

このように「クラス」が機能しています。


まとめ

今日は昨日に引き続き、「オブジェクト指向」について解説しました。

今日取り上げた話題は以下のようになります。


今日の記事を参考に、「オブジェクト指向」の具体的なイメージが湧いてくれれば幸いです。

今日の記事はこれで終了です。

【参考サイト】

www.sejuku.net