Railsチュートリアルの第四章クラスについて勉強しました。
コンストラクタについて
次の処理は文字列のオブジェクトを暗黙で作成するリテラルコンストラクタとなります。
暗黙のリテラルコンストラクタを使う代わりに、明示的に同等の名前付きコンストラクタを使うことができます。名前付きコンストラクタは、クラス名に対してnewメソッドを呼び出します。
配列のインスタンス生成は次のように行います。
Hash.new はハッシュのデフォルト 値を引数に取ります。これは、キーが存在しない場合のデフォルト値です。
クラス継承
クラスの階層はsuperclassメソッドを使って確認することができます。
クラスの作成例です。文字列を前からと後ろからのどちらから読んでも同じ場合、trueを返すpalindrome?メソッドを持つWordクラスです。
このクラスとメソッドの使用例です。
上記処理ですが、クラスの継承を利用することでより良い書き方をすることができます。
Stringクラスを継承することで、自作のpalindrome以外にもStringクラスのメソッドを利用できるようになります。
superclassで階層の確認ができます。
組込みクラスの変更
Rubyでは基本クラスの拡張も可能になっています。そのため次のようにStringクラスに新たな機能を追加することもできます。
ですが、基本的にはこのような拡張は行なわない方がいいみたいです。
コントローラクラス
Railsのコントローラクラスは次のような感じです。
上記のStaticPagesControllerクラスはApplicationControllerを継承しており、homeメソッド、helpメソッド、aboutメソッドを備えています。
クラスの階層は次のように確認できます。
ユーザークラス
実際にクラスを作成していく手順です。ユーザクラスを作成していきます。こんな感じです。
example_user.rbというファイル名です。動作確認が終わったら削除するので作成場所はどこでも良さそうでした。
次の処理は@nameおよび@emailインスタンス変数について、取り出し(get) と割り当て(set) を行う "ゲッター" と "セッター" というメソッドをそれぞれ作成します。
最初の行にあるinitializeは、Rubyの特殊なメソッドです。これは User.newを実行すると自動的に呼び出されるメソッドです。この場合のinitializeメソッドは、以下のようにattributesという引数を1つ取ります。
最後に、formatted_emailメソッドを定義しましょう (4.2.2)。このメソッドは、文字列の式展開を利用して、@nameと@emailに割り当てられた値をユーザーのメールアドレスとして構成します。
railsコンソールで動作確認します。
これで動くのですが、テキトーでいいかなとつくってみたexample_user.rbの置き場所が悪かったためエラーになりました。今回はまぁこんな感じということで先に進みます。。
ここまで終わったら、今回作成したexample_user.rbを削除してGitにコミットします。