69
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Ruby】クラスとかインスタンスについて改めて学習してみた

Last updated at Posted at 2018-12-03

株式会社diffeasy中尾です。
エンジニアになってもうすぐ半年になります。

アドベントカレンダー4日目で何を書こうか迷いましたが、知識がモヤっとしている事を整理しようと思いました。

そこで、普段Railsを使用しているのですが、クラスとかインスタンスが自分の中でモヤっとしていたので「楽しいruby」で復習してみました。
https://www.amazon.co.jp/dp/4797386290/ref=cm_sw_r_tw_dp_U_x_vesbCbC09HZZV

#イメージ
クラスが型で、その型から生成したものがインスタンスと良く書かれてますが、スマートフォンでイメージを整理してみました。

スクリーンショット 2018-09-16 16.29.42.png

スマートフォンクラスに、スマートフォン共通の機能を持たせ、Android・iOSインスタンスでそれぞれ独自の機能を持たせるイメージですかね。

#クラスについて
では、クラスについてです。今回は基本的な以下2点まとめてみました。

  • クラスの定義
  • 初期処理の定義

##コード

class HelloWorld

# 初期処理の定義
    def initialize(myname = "Ruby")
        @name = myname
    end

end

##クラスの定義

 class クラス名
   クラスの定義
 end
  • クラス名は必ず大文字スタート
  • 今回HelloWorldというクラスを定義してます。

##初期処理の定義

  def initialize
    処理
  end
  • initializeメソッドは、newでインスタンスを生成した際、実行されるメソッド
  • 詳しくは、次のインスタンスについてに実行例を記載してます。

#インスタンスについて
インスタンスについて、実際にコードを書きながら以下4点まとめてみました。

  • インスタンス変数とは
  • 初期処理実行
  • インスタンス生成
  • インスタンスメソッド定義
  • インスタンスメソッド実行

##コード

class HelloWorld

# ①初期処理実行
    def initialize(myname = "Ruby")
        @name = myname
    end

# ②インスタンス生成
    bob = HelloWorld.new("Bob")
    alice = HelloWorld.new("Alice")
    ruby = HelloWorld.new

# ③インスタンスメソッド定義
    def hello
        puts "Hello, world. I am #{@name}."
    end

# ④インスタンスメソッド実行
    bob.hello
    alice.hello
    ruby.hello

end

##実行結果

Hello, world. I am Bob.
Hello, world. I am Alice.
Hello, world. I am Ruby.

##解説

###インスタンス変数とは

  • @変数名で、インスタンス変数の宣言可
  • インスタンス変数は、インスタンス内であれば、メソッドスコープ関係無く参照可
  • インスタンス変数は、インスタンスメソッドから参照可

###①初期処理実行

  • インスタンス変数@nameに初期値Rubyを代入しているため、引数が何も無かった場合@nameRubyになる

###②インスタンス生成

  • クラス名.newで生成
  • 生成したインスタンスを変数に代入可。今回は変数bob・alice・rubyでそれぞれ受取。
  • bob = HelloWorld.new("Bob")の場合、インスタンス生成時に呼び出されるメソッドinitializeの引数がBobとなり、@nameは引数のBobとなる。※aliceも同様
  • ruby = HelloWorld.newの場合、インスタンス生成時に呼び出されるメソッドinitializeの引数は無いため、@nameは初期値のRubyとなる。

###③インスタンスメソッド定義

  • 定義方法
def メソッド名
 処理内容
end

###④インスタンスメソッド実行

  • インスタンス.メソッドで実行

#参考にしたリンク

69
56
3

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
69
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?