はじめに
Rubyを学習している中でクラスやモジュールの使い方や使用するメリットを整理した内容になります。基本的な使い方を記載していますが、他にも様々な機能があるため、参考情報として見ていただけると幸いです。
クラスの基本的な使い方とメリット
インスタンス化
今回例としてUserクラスを定義します。
class User
def initialize(name)
@name = name
end
def getname
@name
end
end
user = User.new("tanaka") #これでUserクラスをインスタンス化できる
p user.getname
# "tanaka"
継承
Userクラスを継承することで、Playerクラス内ででUserクラスで定義したインスタンス変数やメソッドを使用することができます。
class Player < User #これでUserクラス継承ができる
end
player = Player.new("tanaka")
p player.getname
# "tanaka"
オーバーライド
Userクラス(スーパークラス)で定義したメソッドをPlayerクラス(サブクラス)用にメソッドの再定義をすることができます。
class Player < User
def getname
p "Playerクラスでオーバーライドしてます"
@name
end
end
player = Player.new("tanaka")
p player.getname
# "Playerクラスでオーバーライドしてます"
# "tanaka"
メリット
クラスはオブジェクト単位でメソッドや変数をまとめることができ、
コードの再利用性や、可読性向上を図ることができます。
モジュールのメリットと使い方
module UserCommon
def getname
@name
end
end
class User
include UserCommon #これでUserCommonモジュールをUserクラスで使用できる
def initialize(name)
@name = name
end
end
user = User.new("tanaka")
p user.getname
# "tanaka"
メリット
モジュールは特定のクラスで再利用したいメソッドがある場合に一箇所に集めておける仕組みです。
クラスのようにインスタンス化はできないですが、再利用したいメソッドをモジュールに切り分けることで可読性向上を図ることができます。
まとめ
クラスはインスタンス化して、継承やオーバーライドを使用することで、コードの再利用性や可読性向上させることができる。
モジュールはインスタンス化できないが、メソッドをまとめておけ、コードの可読性向上させることができる。