7月31日 8月1日 学習記録

実施内容

  • progate

    Ruby V

    第1章:継承

    第2章:Dateクラスとクラスメソッド

本日学習した内容

JavaJavaScriptと共通している箇所は、文章のみの記述にとどめる。

  • 1:継承

    実際の開発では、すべてのクラスを1から作るのではなく、既存のクラスのインスタンス変数、メソッド等を引き継いだクラスを作る方が効果的である。

    このように、既存のクラスから別に新規のクラスを作り出す事を継承と呼ぶ。

    継承は「class 継承先のクラス名 <継承元のクラス名」と記述する。

    以下は、「Menu」クラスを継承して「Food」クラスを作成する例。

    ※継承において、継承元のクラス(例ではMenuクラス)を親クラス、継承元のクラス(例ではFoodクラス)を子クラスと呼ぶ。

  • 2:継承の仕組み

    子クラスでは、何も定義していなくても親クラスのインスタンス変数、インスタンスメソッドを使用することができる。

    子クラスには、新規にインスタンス変数、インスタンスメソッドを定義できる。

    ただし、子クラスのみに定義されているインスタンス変数、インスタンスメソッドは、親クラスでは使用できない。

  • 3:オーバーライドについて

    Rubyでも親クラスに定義されているメソッドを、子クラスで再定義(オーバーライド)できる。

    JavaJavaScriptでコンストラクタのオーバーライドが可能だったように、initializeメソッドもオーバーライドが可能。

    initializeメソッドをオーバーライドする場合は、メソッドの先頭で「super」と記述する必要がある。(親クラスのinitializeメソッドを呼び出す。)

  • 4:日付を扱うクラス

    Dateクラスを用いれば、プログラムで日付を扱う事ができる。

    DateクラスはRubyに標準で用意されている為、ファイルの先頭で「repuire "date"」とすることで使用する事ができる。("./date"としないように注意!)

  • 5:Dateクラスのインスタンス

    Dateクラスも、これまでのクラスと同様に、「Date.new」とすることで、インスタンスを作成できる。

    インスタンス作成時に「年、月、日」を引数として渡す事で、その年月日の情報を変数に格納できる。

    以下の例のようにすると、コンソールに「2020-07-31」と表示される。

  • 6:Dateクラスのインスタンスメソッド

    Dateクラスには、様々なインスタンスメソッドが定義されている。

    ここでは一例として、Dateクラスのインスタンスの日付が「日曜日」かどうかを判定するメソッド「sunday?」メソッドを示す。

    以下の例では、「2020年7月31日」は日曜日ではない為、コンソールに「false」と出力される。

  • 7:その他、Dateクラスの使い方の例

    Dateクラスのインスタンス作成時に「Date.today」とする事で、今日の日付のインスタンスを作成できる。

    このように、クラス名に対して呼び出すメソッドの事をクラスメソッドという。

    クラスメソッドを定義する場合は、「def クラス名.メソッド名 処理の内容 end」と記述する。

今日のエラー

今日はエラーなし

疑問に思ったこと

インスタンスメソッドとクラスメソッドは、定義の仕方、呼び出し方以外にどんな違いがあるか?