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

【Ruby】オブジェクト指向

More than 1 year has passed since last update.

オブジェクト指向とは

開発を効率よく進めるための重要な概念
=> 設計図を元に部品を作成し、その部品を使用して完成品を作ろう!!という考え方のこと

例:「車」の製作過程

  • 設計図:車の設計図
  • 部品:ハンドル、タイヤ、エンジン、ボディー
  • 完成品:車

設計図なしに車を作る

  • ものすごくめんどくさい
  • カスタマイズしにくい
  • 品質が悪い

設計図を元に車を作る

  • 効率が良い(再利用性)
  • カスタマイズしやすい(拡張性)
  • 品質が担保できる(保守性)

Rubyの世界だと、、、、、

  • 設計図 => クラス
  • 部品 => オブジェクト
  • 完成品 => Webアプリケーション

実は文字列もクラスから生まれたオブジェクトの一つ。

puts String.new("Hello World")
puts "Hello World"

設計図(クラス)なし車を生み出す場合

car1_price = 1000000
car1_color = "red"
car1_speed = 120
car1_accel = "進む"
car1_brake = "止まる"


car2_price = 1000000
car2_color = "red"
car2_speed = 120
car2_accel = "進む"
car2_brake = "止まる"

car3_price = 1000000
car3_color = "red"
car3_speed = 120
car3_accel = "進む"
car3_brake = "止まる"

設計図をもとに車を生み出す場合

車の設計図を作る
- Carクラスの定義

クラス名の先頭は大文字

クラスの構成要素

  1. インスタンス変数(クラスが持つ情報)
  2. イニシャライザ(初期値を設定するもの)
  3. メソッド(一連の処理の塊)
class Car

  # 1. インスタンス変数
    # attr_accessor はセッター、ゲッターを合わせた機能を持つ
  attr_accessor :price, :color, :speed

  # 2. イニシャライザ(初期値を設定するもの)
  # クラスがオブジェクト化されたときに自動で実行される
  def initialize(price, color, speed)
    self.price = price
    self.color = color
    self.speed = speed
  end

  # 3. メソッド(機能)
  def accel
    self.speed += 10
  end

  def brake
    self.speed -= 10
  end

end

クラスをオブジェクト化するやり方

car1(オブジェクト名) = Car(クラス名).new(オブジェクトを生み出す)

car1 = Car.new(3123424242, "Black", 200)
car2 = Car.new(2000000, "Red", 300)
car3 = Car.new(10000000, "Green", 100)
car4 = Car.new(3444887437, "Black", 200)
car5 = Car.new(474366437, "Black", 150)


puts car1.price
puts car1.accel
puts car2.accel
puts car3.accel
puts car4.accel
puts car5.accel


puts <<~TEXT

car1の値段を5割引します
#{car1.pricedown(5)}

TEXT

フィールドにアクセスする

puts <<~HEREDOC

  car1の値段:#{car1.price}
  car2の値段:#{car2.price}
  car3の値段:#{car3.price}
  car4の値段:#{car4.price}
  car5の値段:#{car5.price}

HEREDOC

メソッドを呼び出す

puts <<~HEREDOC

  car1のアクセルを踏む:スピードが#{car1.accel}km/hになった
  car2のアクセルを踏む:スピードが#{car2.accel}km/hになった
  car3のアクセルを踏む:スピードが#{car3.accel}km/hになった
  car4のアクセルを踏む:スピードが#{car4.accel}km/hになった
  car5のアクセルを踏む:スピードが#{car5.accel}km/hになった

HEREDOC
yoshito410kam
沖縄でのんびり暮らしている暇人です
http://utina.yoshitokamizato.com/
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
ユーザーは見つかりませんでした