オブジェクト指向とは

f:id:AK474747:20190811212328p:plain

今日は中々打ち合わせやらで、自分の勉強が進まなかったんだけど、 極力毎日ブログは書きたいので、簡単なものを書こうかなと。

しばらくAWSの流れだったんだけど、AWSは理解が難しいので今日はオブジェクト指向ってやつについて書くよ。

僕はプログラミング初学者なわけでRubyをずっと使ってきたんだけど、Rubyオブジェクト指向言語と言われているらしい。

で、オブジェクト指向ってそもそもなんだよっていう話。今回はRubyを用いてまとめていこうかと思うよ。

オブジェクト指向とは

オブジェクト指向とは、複数のオブジェクトを組み合わせてプログラムを構築する考え方。

オブジェクトとはデータと処理の集まりのことですが、漠然として集合体のことではなく、一つのテーマを持った集合体のことです。

人であれば「名前」、「年齢」、「出身地」などのデータを持ちます。

オブジェクト(今回のテーマは人)であれば、こういったデータの他に「振る舞い」があります。

例えば名前を聞くという「振る舞い」と、それに対して、自分の名前を返すという「振る舞い」。 ここでいう「振る舞い」をオブジェクト指向で考えると処理にあたるということです。

概念的ではありますが、特別理解できないということではないと思います。

オブジェクト指向って何?という問いに対して、「現実と一緒だ」なんて回答もあるくらいです。

オブジェクト指向とクラス

オブジェクト指向の概念を説明しても、じゃあプログラミングに落とし込んだらどうなるか中々想像できないかと思います。

そこで必要になるのがクラスの概念です。

クラスとは

オブジェクト指向言語において、データと処理をひとまとめにしたもの。 オブジェクトの設計図とも呼ばれる。

実際にRubyで書いてみます。

class Person
  def initialize(name, age , birthplace)
    @name = name
    @age = age
    @birthday = birthday
  end

  def answer_name
    puts @name
  end
end

人(person)クラスを定義して、名前や生年月日を持たせています。これがオブジェクト指向におけるデータのことです。

人(person)クラスで定義された人は、answer_nameメソッドという「振る舞い」をします。これがオブジェクト指向における処理のことです。

ここで定義されたクラスもオブジェクト、@nameといったインスタンス変数もオブジェクト、answer_methodもオブジェクトということになります。

結局、オブジェクト指向で生まれたものは全てオブジェクトと呼ばれることになります。

その中でもクラスは設計図、インスタンスは実体化したデータ、メソッドは実体化した処理とでもイメージすればいいのかなと思います。

いいか?結局、現実と一緒だ