【Ruby入門】クラスをコーディング(1) classを作る
  • facebookページ
  • twitterページ
  • 2017.12.18

    【Ruby入門】クラスをコーディング(1) classを作る

    クラスに関する前2記事「【Ruby入門】クラスとオブジェクト」「【Ruby入門】クラスの継承、オーバーライド 」を読んでいただいた方々は、なんとなく釈然としないはずです。

    それもそのはず、ソースコードが一切出てきていないからです。

    コードを実際に見ないと、プログラマ的に納得できないですよね。

    よって本記事では、今まで学習してきたことをソースコードにしてみます。

    前2記事と本記事を行ったり来たりして、理解を深めてくださいね!

    クラスの基本形 def 〜 end

    ではまず、クラスの基本形からいきましょう。

    以下のとおりです。

    これ以降、今までさんざん出てきたBookクラスを順に作っていきましょう。

    まずはBookクラスの枠組みを作ります。

    コンストラクタとインスタンスメソッド

    コンストラクタとインスタンスメソッドを作りましょう。

    前記事では変数はたくさん出てきましたが、本のタイトルと著者だけに省略します。

    (実行しても何も返ってきません。)

    Rubyでは、インスタンス直後に自動的に呼ばれるメソッドを、initializeメソッドといいます。前記事でコンストラクタとして解説したものと同じです。

    インスタンス変数は@で始まります。

    mytitle = “” と myauthor = “” は、インスタンス化のときに引数を受け取り、それをインスタンス変数に格納する記述です。しかし何も受け取らなければ空文字を入れるという意味になります。

    インスタンスメソッドdisplayを追加してみました。インスタンス化したあとに呼び出せるメソッドです。後ほど解説します

    アクセサメソッド

    インスタンスの外部からインスタンス内部の変数へ直接アクセスせず、アクセサメソッド経由でアクセスするのが一般的です。

    よって、アクセサメソッドを追加してみましょう。

    もちろんこれでもよいのですが、もう少しスマートに書きましょう。

    attr_accessorメソッドを使いました。

    アクセサメソッドの種類は以下のとおりです。仕様に応じて適切なものを選んでください。

     

    • attr_reader 参照のみ可
    • attr_writer 変更のみ可
    • attr_accessor 参照と変更の両方可

     

    クラスメソッド、定数

    クラスメソッドは、クラスそのものに紐づくメソッドです。インスタンスとは無関係です。

    早速使いましょう。何回インスタンス化されたかを管理する変数countを定義します。

    頭に@を2つ付けて変数名を書くと、クラス変数の定義になります。

    クラスメソッド定義の部分「class << count」は、以下のように書くことも可能です。

    クラス変数は、外からもアクセスできます。このように宣言します。

    呼び出すときは以下のとおりです。コロンを2つつなげます。

    [実行結果]

    メソッドのアクセス修飾子を定義する

    メソッドによっては他からアクセスさせてはいけないものがあります。

    Bookクラスでいうと、インスタンス変数を初期化するメソッドなどです。

    そのようなメソッドは、他から呼ばれないようにprivateにしましょう。

    privateを書いた以降に定義したメソッドは、すべてprivateになります。

    特定のメソッドだけprivate指定したい場合は、以下のようにします。

    ここまでの完成形

    今までの内容でできたクラスの完成形は以下のとおりです。じっくりご覧ください。

    まとめ

    本記事では、Rubyのクラスの基本を解説しました。

    ここまで来るのは大変だったでしょう?お疲れさまでした!

    ただ、残念ながら大切な話はまだ続きます。

    もう少しお付き合いください!



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE