Ruby – クラス – getter/setter

概要

Rubyのインスタンス変数(プロパティー)は、Rubyのインスタンス変数(プロパティー)は、クラス内に隠蔽(encapsulate)されていて、外部からの参照・変更はできない。

アクセスメソッドを使うことで参照・変更が可能となるが、それだけだと全くオープンになるだけなので、不適切な値への対処などを体系的に行うことができない。

getter、setterは関数定義にひと手間かかるが、インスタンス変数の参照、代入時の処理が可能となる。以下は、そのコード例。

getter

クラス定義内でgetterを定義する場合、インスタンス変数の名前をそのままメソッド名にして、インスタンス変数の内容を返す。プロパティーを読みだす際に特段の処理が必要な場面はあまり想定されず、アクセスメソッドで公開するのと変わらないと思われる。

setter

関数名を[インスタンス変数名]=([引数])とすることで、セッターを定義できる。セッターの中で、インスタンス変数に値をセットする。

プロパティーへの代入の場合は、その有効性のチェックなどの処理が必要な場合も想定されるので、アクセスメソッドで単に自由に代入を許すよりも、セッターで必要な処理をさせる必要がないか意識すべきと考える。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です