LoginSignup
0
0

More than 5 years have passed since last update.

【Ruby】コーディングメモ(クラス)

Posted at

環境

ruby 2.4.1p111

クラスファイルを作成

hello.rb
class Hello
    # 初期処理
    def initialize(msg)
        #@msgはクラス内で参照可能なインスタンス変数です
        @msg= msg
    end

    # インスタンス変数に値を設定できるメソッドを用意
    def msg=(value)
        @msg= value
    end

    # メッセージ出力メソッド
    def outputMsg
        puts "Hello " + @msg
    end
end

HelloクラスのHelloクラスのメソッドを呼び出す

main.rb
load "hello.rb"
hello = Hello.new("Initialized Msg.")
hello.outputMsg

hello.msg = "Overwrited Msg."
hello.outputMsg

結果

Hello Initialized Msg.
Hello Overwrited Msg.

インスタンス変数に関して補足

  • hello.rbでインスタンス変数@msgに値設定用のメソッドを用意しましたが、attr_accessor メソッドを用意しておけば、以下のメソッドは不要となります。また、attr_accessor メソッドを用意しておく事で、値設定のみでなく、クラス呼び出し元にて、インスタンス変数値の取得も可能となります。
hello.rb
    def msg=(value)
        @msg= value
    end
  • 修正版は以下となります。
hello.rb
class Hello
    attr_accessor :msg
    # 初期処理
    def initialize(msg)
        #@msgはクラス内で参照可能なインスタンス変数です
        @msg= msg
    end

    # メッセージ出力メソッド
    def outputMsg
        puts "Hello " + @msg
    end
end

クラスの継承

  • 継承の記載方法は以下です。

class クラス < スーパークラス
  ...
end
  • 実際には以下の様に書きます。
  • Employee(employee.rb) がスーパークラスで、Tanaka(tanaka.rb)が継承します。
  • main.rb で呼び出しています。
employee.rb
class Employee
  attr_accessor :name
  def initialize(name)
    @name = name
  end

  def sayName
    puts "My Name is " + @name
  end
end
tanaka.rb
class Tanaka < Employee
  def doing
    puts "I'm working."
  end
end
main.rb
load "employee.rb"
load "tanaka.rb"

tanaka = Tanaka.new("Ichiro Tanaka");
tanaka.doing
tanaka.sayName
  • 結果は以下となります。
I'm working.
My Name is Ichiro Tanaka
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0