犬の年齢をもとに「子犬」「成犬」「老犬」と分類するメソッドは、犬クラスをより実用的にするために便利です。Rubyでは、年齢属性を使って簡単に条件分岐でライフステージを返すことができます。本記事では、メソッドの構造と設計例を解説します。
基本的なメソッド構造
ライフステージを判定するメソッドは、犬クラス内に定義します。年齢(age)を属性として持ち、if / elsif / else を使って条件分岐するのが一般的です。
例えば、以下のような構造が考えられます。
class Dog attr_accessor :name, :age def initialize(name, age) @name = name @age = age end def life_stage if @age < 1 '子犬' elsif @age < 7 '成犬' else '老犬' end endend
メソッドの使い方
上記のDogクラスを使うと、インスタンス化した犬オブジェクトに対して life_stage メソッドを呼ぶだけでライフステージを判定できます。
例:
dog = Dog.new('ポチ', 3)puts dog.life_stage # 出力: 成犬old_dog = Dog.new('タロー', 10)puts old_dog.life_stage # 出力: 老犬
柔軟性を持たせる設計
ライフステージの境界年齢は犬種やサイズによって異なる場合があります。その場合、境界値をクラス定数や引数として設定することで、柔軟に対応できます。
例えば:
class Dog attr_accessor :name, :age PUPPY_AGE = 1 SENIOR_AGE = 7 def life_stage if @age < PUPPY_AGE '子犬' elsif @age < SENIOR_AGE '成犬' else '老犬' end endend
まとめ
Rubyで犬の年齢に応じた「子犬」「成犬」「老犬」を判定するメソッドは、年齢属性と条件分岐を組み合わせることで簡単に実装できます。必要に応じて境界値を定数化したり引数化することで、犬種や用途に応じた柔軟な設計が可能です。


コメント