0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】クラスについて

Posted at

はじめに

クラスとインスタンスについての理解が浅かったので、振り返ってみます。
誤っている箇所などありましたら、コメントいただけますと幸いです。

Class

クラスとは

クラスとはオブジェクトの設計図の意味。クラスには、オブジェクトが持つべきデータや振る舞いを定義するためのメソッドが含まれます。

オブジェクト…Rubyでは扱う全てのデータはオブジェクトとして扱う。

  • 例「あ」はStringクラスのオブジェクト
class_ex.rb
class User
end

user = User.new
p user

実行結果

root@5h456ef47u74:/app$ ruby class_ex.rb
#<User:0x00007f1667d55093>

クラスはClassキーワードを使用し定義します。

User.new…Userクラスのインスタンスを作成
#<User:0x00007f1667d55093>…Userはクラス名、0x00007f1667d55093はインスタンスのオブジェクトID

オブジェクトIDは、Rubyが各オブジェクトを認識するためのものであり、オブジェクト毎に異なります。

インスタンスは、クラスの設計図に基づいて作成されたオブジェクトのことです。クラスに属性やメソッドを定義することで柔軟にオブジェクトを生成することができます。

initializeメソッド

initializeメソッドとは?

クラスのインスタンスが生成される毎に実行されるメソッドのこと。インスタンスの初期化を行います。

initialize_ex.rb
class User
    def initialize(first_name, last_name)
        @first_name = first_name
        @last_name = last_name
    end

    def info
        "#{@first_name}, #{@last_name}"
    end
end

user = User.new("山田", "太郎")
p user
puts user.info

実行結果

root@5h456ef47u74:/app$ ruby initialize_ex.rb
#<User:0x00007f1667d55093 @first_name="山田", @last_name="太郎">
山田, 太郎

以上のコードでは、initializeメソッドを使ってUserクラスのインスタンスを生成するときに、first_nameとlast_nameという初期値を設定しています。

User.newに渡している引数がそのままinitializeメソッドの引数に渡されています。
@first_name="山田", @last_name="太郎"は、インスタンスが使用できる変数で、インスタンス変数と言います。

インスタンス変数が定義されたことでinfoメソッドを呼び出すと、山田, 太郎という文字列が返ってきます。

振り返ってみて

Classやインスタンスはグループ分けのようなものと考えるのが良いと感じました。
Railsを使っていく上でも理解しておかないと苦労しそうなのでもっと理解を深めます

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?