🕌

Ruby クラスについて

2023/03/19に公開

概念

クラスとは

メソッドなどをひとつにまとめた設計図のようなもの
設計図がクラスだとすると、設計の内容にあたるのがメソッド
書き方はclassの後に任意のクラス名、クラス名は始まりが大文字
クラス内に記述されたメソッドをインスタンスメソッドという

インスタンスとは

  • 設計図をもとに作成される「モノ」がインスタンス
  • 書き方は、クラス名の後ろに.newをつける
  • インスタンス名.メソッド名とすることで呼び出せる
  • インスタンスは、クラスで書かれている設計を元に生成されるオブジェクトでもある

オブジェクトとは

  • 人や動物、車などありとあらゆるものがオブジェクト
  • Rubyは、全てのデータをオブジェクトとして扱う
  • オブジェクトは、必ずどこかのクラスに所属
  • 所属しているクラスによって使えるメソッドが変わる

selfとは

  • selfは、オブジェクト自身の事
  • クラスメソッド、レシーバとして使われるselfの2種類がある

クラスメソッド

  • クラスメソッドは、クラスから実行できるメソッド
  • クラス全体に関わる情報を変更するメソッドを作成するときなどに使用

レシーバのself

  • レシーバとは、メソッドを呼び出したオブジェクト自身のこと
  • ( . )の左側の部分がレシーバ
  • インスタンスメソッド内でselfを定義した場合、そのメソッドを呼び出したレシーバがselfの値
  • この後に学習するRailsにも self を使う記述が出てくる

継承

継承とは

  • 既にクラスで定義したメソッドを別のクラスでも受け継ぐことを継承という
  • 元となるクラスを親クラス(スーパークラス)
  • メソッドを受け継ぎ、新しく作成するクラスを子クラス(サブクラス)
  • 子クラスから親クラスのメソッドを呼ぶことができる

継承のメリット

  • 重複したコードがなくなり、スッキリとしたコードになる
  • 複雑に見えるコードを可読性のあるコード(読みやすいコード)にできる

継承の書き方

  • クラス名の後に「<」を付けて継承したいクラス名を記述
  • 親と子の関係だと、子クラス < 親クラス
  • どちらも始まりは大文字というルール

継承するべきか判断するポイント

  • 「AはBの一種である」が成立するかどうか
  • 上記のような関係のことをis-aの関係という
  • 例えば、「バスは車の一種である」

オーバーライド

オーバーライドとは

  • 継承を行った「親子関係」であるクラスでは、メソッドを上書きできる
  • 親クラスで定義されたメソッド名と同じメソッド名を子クラスで定義し、メソッド内の処理を上書きすることを「オーバーライド」と言う
  • 親クラスのメソッドの中身が書き換えられるわけではなく、子クラス内で呼び出した時のみ、上書きされている
  • 親クラスのメソッドだけでは、実現したい機能が満たせず、子クラスで機能を追加したい場合などに利用

オーバーライドのメリット

  • 似ている機能を1つのメソッド名に合わせて、それぞれの子クラスで適した処理を定義する事ができる

superとは

  • 子クラスのメソッド内で定義すると、親クラス内にある同じ名前のメソッドを呼び出すことができる
  • superの書き方は、メソッド内に「super」と定義するのみ

データ型を学ぼう:シンボルについて

シンボルとは

  • 見た目は文字列のようで、内部では整数として扱われているオブジェクト
  • 文字列の前に、コロン(:)を付ける

シンボルと文字列の違いとは

  • シンボルは文字列の前にコロン(:)で定義する
     文字列はダブルクォーテーション("")で囲んで定義する
  • シンボルは書き換えられない
     文字列は変更可能
  • シンボルは同じオブジェクトを参照している(一意性がある)
     文字列は同じオブジェクトではない
  • シンボルは文字列よりも処理が高速

どういう時に使うべきか

  • 処理が高速であるため、検索を行う時
  • ハッシュのキーなど「同じものが複数あると困るもの」を扱う時

とりあえずRubyのレッスン一通り終わってRailsに入る!
実践しないとやっぱ頭に入らんから今はある程度の理解で進めてるけど、前ちょっとやってたおかげで理解しやすくてよかった🫠
昨日できなかった分頑張れた!メリハリだいじ!

Discussion