tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:Rubyのクラスについて

Railsチュートリアルの第四章クラスについて勉強しました。

コンストラクタについて

次の処理は文字列のオブジェクトを暗黙で作成するリテラルコンストラクタとなります。
f:id:tyoshikawa1106:20150719221008p:plain


暗黙のリテラルコンストラクタを使う代わりに、明示的に同等の名前付きコンストラクタを使うことができます。名前付きコンストラクタは、クラス名に対してnewメソッドを呼び出します。
f:id:tyoshikawa1106:20150719221054p:plain


配列のインスタンス生成は次のように行います。
f:id:tyoshikawa1106:20150719221152p:plain


Hash.new はハッシュのデフォルト 値を引数に取ります。これは、キーが存在しない場合のデフォルト値です。
f:id:tyoshikawa1106:20150719221253p:plain

クラス継承

クラスの階層はsuperclassメソッドを使って確認することができます。
f:id:tyoshikawa1106:20150719221412p:plain


クラスの作成例です。文字列を前からと後ろからのどちらから読んでも同じ場合、trueを返すpalindrome?メソッドを持つWordクラスです。
f:id:tyoshikawa1106:20150719221702p:plain


このクラスとメソッドの使用例です。
f:id:tyoshikawa1106:20150719221725p:plain


上記処理ですが、クラスの継承を利用することでより良い書き方をすることができます。
f:id:tyoshikawa1106:20150719221823p:plain


Stringクラスを継承することで、自作のpalindrome以外にもStringクラスのメソッドを利用できるようになります。
f:id:tyoshikawa1106:20150719221922p:plain


superclassで階層の確認ができます。
f:id:tyoshikawa1106:20150719222005p:plain

組込みクラスの変更

Rubyでは基本クラスの拡張も可能になっています。そのため次のようにStringクラスに新たな機能を追加することもできます。
f:id:tyoshikawa1106:20150719222755p:plain


ですが、基本的にはこのような拡張は行なわない方がいいみたいです。

コントローラクラス

Railsのコントローラクラスは次のような感じです。
f:id:tyoshikawa1106:20150719222755p:plain


上記のStaticPagesControllerクラスはApplicationControllerを継承しており、homeメソッド、helpメソッド、aboutメソッドを備えています。


クラスの階層は次のように確認できます。
f:id:tyoshikawa1106:20150719223157p:plain

ユーザークラス

実際にクラスを作成していく手順です。ユーザクラスを作成していきます。こんな感じです。
f:id:tyoshikawa1106:20150719224511p:plain


example_user.rbというファイル名です。動作確認が終わったら削除するので作成場所はどこでも良さそうでした。


次の処理は@nameおよび@emailインスタンス変数について、取り出し(get) と割り当て(set) を行う "ゲッター" と "セッター" というメソッドをそれぞれ作成します。
f:id:tyoshikawa1106:20150719224725p:plain


最初の行にあるinitializeは、Rubyの特殊なメソッドです。これは User.newを実行すると自動的に呼び出されるメソッドです。この場合のinitializeメソッドは、以下のようにattributesという引数を1つ取ります。
f:id:tyoshikawa1106:20150719224753p:plain


最後に、formatted_emailメソッドを定義しましょう (4.2.2)。このメソッドは、文字列の式展開を利用して、@nameと@emailに割り当てられた値をユーザーのメールアドレスとして構成します。
f:id:tyoshikawa1106:20150719224902p:plain


railsコンソールで動作確認します。
f:id:tyoshikawa1106:20150719224933p:plain


これで動くのですが、テキトーでいいかなとつくってみたexample_user.rbの置き場所が悪かったためエラーになりました。今回はまぁこんな感じということで先に進みます。。


ここまで終わったら、今回作成したexample_user.rbを削除してGitにコミットします。
f:id:tyoshikawa1106:20150719225333p:plain

f:id:tyoshikawa1106:20150719225501p:plain