過去に作成したプログラムについて、オブジェクト指向で書いてみる課題に取り組みました。
クラスを切り出すにあたって、まずは切り出せるオブジェクトを検討。
オブジェクトとは「もの・こと」
視覚的に確認できる「もの」をまずは書き出し、その後に見えない「こと」を書き出しました。
書き出したなかから、それぞれのオブジェクトの性質を鑑み(属性に含めるかどうかなど)、プログラムで行いたい処理にそって選定します。
クラスとは「一種のデータ型」です。オブジェクトの設計図ともいわれます。
クラスの3つの要素は以下。
- 名前
- データ(属性。静的な値)
- 振る舞い(動作。動的な値)
クラスを作成するプログラム上のメリットとしては以下があります。
- クラスでのデータ保持は堅牢
ハッシュデータと比較すると条件を満たさない場合には書き換えができません。
- 自分が保持しているデータを利用する独自メソッドを持てる。
クラスを定めたあとは、コードをかきながらそれぞれに付与する属性や与える振る舞いについて検討を重ねます。
今回はRubyリファレンスを見ながら使えるメソッドを検討します。
オブジェクトのインスタンス変数に値を含めることができるメソッド。
instance method Object#instance_variable_set
配列データの最後の要素が不要になったらpop。
戻り値は取り出された要素ですが、元の配列データに配列データの最後の要素が取り除かれた状態になります。
一方、delete_at(pos)では指定された位置 pos にある要素を取り除き、それを返します。
せっかくクラスを定義するので、前回とは異なる、インスタンス変数を活用するメソッドを考えようと思います。
今日はここまで。