LoginSignup
1
1

More than 3 years have passed since last update.

Rubyのクラスとインスタンスを用いてコードを書く

Last updated at Posted at 2020-09-08

はじめに

プログラミング学習中の者です。初投稿です。
学習したことを書くことで、自分の中により定着させることができればと思っています。
よろしくお願い致します。

早速本題に入ります。

本題

某プログラミングスクールで出たRubyの問題について、解答に少し手間取ってしまったので忘れないためにメモします。
すごく初歩的な問題ではあるのですが・・
問題と正解は下記の通り(問題の内容がそのままだと宜しくないのでちょっとだけ変えてます)。

問題


class Article

  def initialize(author, title, content)
    @author = author
    @title = title
    @content = content
  end

end

# クラスとインスタンスを使用して、上記のコードに追加を行い、以下の出力結果を得られるようにする

書いた人: 鈴木
タイトル: はじめまして
本文: 初投稿です

正解(模範解答)


class Article

  def initialize(author, title, content) #3行目
    @author = author
    @title = title
    @content = content
  end

  def author #9行目
    @author
  end

  def title #13行目
    @title
  end

  def content #17行目
    @content
  end

end

article1 = Article.new("鈴木", "はじめまして", "初投稿です") #23行目

puts "書いた人: #{article1.author}" #25行目
puts "タイトル: #{article1.title}"
puts "本文: #{article1.content}"

自分のために解説してみる

まず最初に下記を押さえておく

  • インスタンスメソッドはクラスの中で定義する
  • initializeメソッドもインスタンスメソッドの1つ
  • インスタンス変数は、そのクラス内すべてのインスタンスメソッドで使える(スコープ)

それぞれの行について詳しく
(3〜7行目)
initializeメソッドの中で定義したインスタンス変数に、引数で受け取った、鈴木はじめまして初投稿ですという3つの値をそれぞれのインスタンス変数に代入する。

(9〜19行目)
インスタンス変数の値を返すためのインスタンスメソッドをそれぞれ定義する。
当然ながら、例えば、これらのインスタンスメソッドを定義しない状態で、25行目をarticle1.authorではなく@authorと書いたところで鈴木とは出力されない。

(23行目)
Articleクラスのインスタンスを生成し、変数article1に代入。
その際に実引数として鈴木はじめまして初投稿ですという3つの値を、仮引数authortitlecontentにそれぞれ渡している。

(25〜27行目)
9〜19行目で定義したインスタンスメソッドを呼び出す。
インスタンスメソッドはインスタンス名.メソッド名で呼び出せる。

おわり

この記事を書いたおかげで、クラスとインスタンスに関することを忘れないようにできたのではないかと思います。
いい機会になりました。また何かあったら書いてみます。

ここまでお付き合いしてくださった方ありがとうございました。

1
1
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
1
1