Help us understand the problem. What is going on with this article?

Ruby入門第17回〜クラスを作る〜

More than 1 year has passed since last update.

Rubyについて簡潔にまとめたものを何回かに分けて投稿していきます。サクッと読めるようにしたいので一記事の長さはできるだけ短くしています。

環境

Ruby : Ruby 2.5.1
OS : macOS High Sierra バージョン 10.13.5

クラスを作る

Rubyにはあらかじめ様々なクラスが用意されていますが、クラスは自分で作ることもできます。クラスの作成は以下のようにやります。また、クラス名は必ず大文字で始めます。

helloworld.rb
class クラス名
end

helloworld.rb
class User
end

これでクラスを作ることはできましたが、これだけではあまり意味があまりません。次はインスタンスを作成します。

インスタンスを作る

インスタンスとは、クラスから生み出された具体的なデータです。クラスを学校のクラスと例えるならインスタンスはそのクラスの生徒に当たります。インスタンスは、newメソッドを使って作成します。

newメソッド

newメソッドは、クラスに対して使います。newメソッドを使うことでそのクラスのインスタンスを生成します。

helloworld.rb
class クラス名
end

クラス名.new

helloworld.rb
class User
end

taro = User.new

インスタンスメソッド

クラスの中で定義し、インスタンスに対して使うメソッドをインスタンスメソッドと言います。インスタンスメソッドは、クラスから生み出されたインスタンスからしか呼び出すことができません。以下のような書き方になります。

helloworld.rb
class クラス名
 def メソッド名
  処理
 end
end

helloworld.rb
class User

 def greeting
  puts "Hello!"
 end

end

taro = User.new
taro.greeting
ターミナル
MacBook-Pro-od-hoge:~ hoge$ ruby helloworld.rb
Hello!

initializeメソッド

インスタンスは変数を使って値を保持することができます。インスタンスが生成された際に値を持たせることができるのがこのinitializeメソッドです。newメソッドが呼ばれた際にこのメソッドも呼び出されます。

helloworld.rb
class クラス名
 def initialize
  処理
 end
end
変数 = クラス名.new(引数)

helloworld.rb
class User
 def initialize(name)
  @name = name
 end
end

taro = User.new("taro")

インスタンス変数

インスタンスの中で値を保持しておくために使われるのがインスタンス変数です。インスタンス変数は、クラス内であれば全メソッドで使用できます。インスタンス変数を定義する際は、変数名の前に「@」を1つつけます。

helloworld.rb
class クラス名
 @変数名 = 代入する値
end

helloworld.rb
class User
 def initialize(name)
  @name = name
 end

 def greeting
  puts "Hello, I'm #{@name}"
 end
end

taro = User.new("taro")
taro.greeting
ターミナル
MacBook-Pro-od-hoge:~ hoge$ ruby helloworld.rb
Hello, I'm taro

終わりに

これでRuby入門第17回〜クラスを作る〜は終了です。それではまた。

参考

インスタンス変数 - RubyLife
インスタンスメソッド - RubyLife

io_fleming
インプットしたものをゆるゆるアウトプットしていこうと思います。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした