sugulogの日記

Ruby基礎文法、自分自身でメソッドを作ろう!クラスとインスタンス!!〜後編〜

f:id:sugulog:20200915235700p:plain
こんにちは、すぐるです!

sugulogをお読みいただきありがとうございます!!

このブログは、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準に書いています。

少しでもお役に立てれば幸いです。

 

今回は、自分自身でメソッドを作ろうということで

の後編について簡単に解説します!!

その為このブログを読むことで、自分自身でメソッドを作る方法を理解できるのはもちろん、それに付属する様々な概要についても理解が深まります。

是非最後までご愛読ください。

また今回は、前回のブログの内容を踏まえた上で書いてます。

まだ前回のブログを読んでいない方は、そちらからお読みください。

sugulog.hatenadiary.jp

今回は、

について順番に解説していきます。

では早速、みていきましょう!!

インスタンス

クラスを元にして作られるデータのこと。 

前回ブログのカレーを使い例えると、クラスはカレーの一般的なレシピ(設計図)ですが、インスタンスはその一般的なレシピから作られた各家庭のカレーのことです。

クラスは設計図のみなのでカレーという実体はないですが、インスタンスはその設計図を元に作られた各家庭のカレーその物なので実体を持つという違いがあります!

少し想像しにくいですが、この後さらに深堀していくので頑張っていきましょう!!

ではここでクラスのインスタンスを生成し、インスタンスを出力するメソッドだけ押さえておきましょう。

・newメソッド

使用したクラスのインスタンスを生成して返すメソッド。

書き方としては、以下の通りです。

f:id:sugulog:20200915135927p:plain

クラス名.newでクラスのインスタンスを生成し、再利用できるようにするため変数に代入しています。

後はputsで出力することでインスタンスが出力されます!

ではいよいよ、大詰めに入っていきますよ〜。

インスタンスメソッド

インスタンスが使用できるメソッドで、クラスに定義する。インスタンスごとの個別の情報を使った処理をする。

前回ブログのメソッド定義と同じくdef~endを使い、クラスの中に定義します。

f:id:sugulog:20200915173924p:plain

 ここで注目してもらいたいことが2点あります。

まず1点目が、インスタンスメソッドの実行方法です。

クラスの中のインスタンスメソッドということで、クラスでインスタンスを生成した後の変数に続けてインスタンスメソッド名を記述することで実行することができます。

またこの際、今回は引数で30という値を渡しています。

2点目が@cooking_timeです。

これはインスタンス変数と呼ばれインスタンスで使える変数で、頭に@をつけます。

こうすることでスコープの幅が広がり、クラス内のインスタンスならどのメソッドにも適用できるようになります。

・クラスメソッド

クラスが使用できるメソッド。クラス共通の情報を使った処理をする。

インスタンスメソッドはインスタンス各々の処理を扱い、クラスメソッドはクラス全体に共通する処理を行います!

つまり、全てのインスタンスに共通する処理ってことですね!!

f:id:sugulog:20200915231310p:plain

インスタンスメソッドと同じくdef~endを使い定義しますが、メソッド名はself.クラスメソッド名で記述します。

そしてメソッドを実行する際は、クラス名.クラスメソッド名で実行できます。

この際、selfは必要ないので注意しましょう!

またクラス変数というものもあり、頭に@を2つ記述することで使用できます。

クラス変数は、全てのインスタンスに共通する情報を扱う際に定義します。

では最後に、インスタンス生成すると同時に実行される処理の、定義の仕方をみていきましょう!!

・initializeメソッド

インスタンスが生成された瞬間に実行する処理を定義するインスタンスメソッド。

では実際にみてみましょう!

f:id:sugulog:20200915234446p:plain

書き方としてはdef~endを使い定義しますが、メソッド名はinitializeとし、今回はnewメソッドでインスタンス生成時に引数として3つの値を渡すため、initializeでもその値を受けるための記述をしています。

またメソッド内では受けた値をそれぞれインスタンス変数に代入し、他のインスタンスでも使えるようにしています。

initializeメソッドはこのnewメソッドが実行された際に、実行されるインスタンスメソッドということですね!!

 

以上、今回のブログでした。

自分自身でメソッドを作る方法を理解できるのはもちろん、それに付属する様々な概要についても理解が深まりましたか??

前半・後半と長く、クラスとインスタンスの概念は少し捉えにくかったと思います。

しかし、1歩ずつ確実に押さえていきましょう(≧∀≦)/

 

最後に!!

今後も、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準にブログを書いていきます。

少しでも気になった方はお試しでもいいので1度、読者登録お願いします!

またTwitterでもプログラミングに関することを中心に情報を発信してます。

宜しければそちらのフォローもお願いします。

最後までご愛読いただきありがとうございました!!