はじめに
今回は、Rubyのオブジェクト指向についてダラダラとアウトプットしていこうと思います!
単一責任の原則
アプリケーションの設計を考える上で、必要となる決まりの1つです!
これは、それぞれのクラスには、明確な役割が1つだけ与えられている必要があるということです!
「1つのクラスからは1つの振る舞いしか持たない」という原則を意識しないと、他者から見た時に意図のわからないアプリケーションが完成してしまう恐れがあります!
用語
self
Rubyのインスタンスメソッド内で、selfという記述は特別な意味を持っています!
selfは、selfが書かれているインスタンスメソッドを適用したインスタンス自身が代入されている変数だということです!
これによって、インスタンス変数の値のみを戻り値としたメソッドをゲッターと呼びます!
ゲッター
クラスが設定したインスタンス変数の値をインスタンスから読み取って表示するためだけに定義するメソッドのことです!
セッター
あるインスタンスが持つインスタンス変数の値だけを更新するためだけのメソッドのことをセッターと言います!
セッターのメソッドでは
def インスタンス変数名=
と名前に=が入っていることが特徴です!
Rubyには少し特徴があります!
それは「名前に=がついたメソッドの呼び出しの際のメソッド名=の前後は幾ら半角スペースを空けても構わない」、「引数の()は省略できる」という仕様があります!
これを利用することで、あたかも変数代入かのようにセッターを利用することが慣例となっています!
オブジェクト指向
アプリケーションを作成する時に、登場する役割ごとに分けて実装する方針のことを言います!
Webアプリケーションに使用される多くの言語が、オブジェクト指向で実装する必要があります!
オブジェクト指向のメリットは2つあります
- 役割ごとにオブジェクトを分けることで、実装がしやすくなる
- 役割ごとにオブジェクトを分けることで、後からコードを改変する時も、他のオブジェクトに影響しなくなる
オブジェクトとは、Rubyにおけるクラスやインスタンス、その他のことを意味しています!
オブジェクトの切り分け
オブジェクトの切り分けは、1つの正解におさまりません!!
オブジェクトの切り分けにはこれという正解はありません!!
オブジェクト指向はあくまで設計思想の1つです!
また、このようなコードは色白な問題が複雑に絡み合うことから「スパゲッティコード」と呼ばれています!
Ruby on Railsのオブジェクト指向
このオブジェクト指向はRailsでも応用することができます!
クラス名のファイルに、そのクラス内容を記述する点などはRailsのモデルのファイルでもよく見られる光景です!
オブジェクトとして存在することは、オブジェクト指向に従えば、ある役割をそれぞれ持っています!
Railsではバリテージョンを設定するなどの責任があります!
コメント