LoginSignup
2
1

オブジェクト指向とは?なんとなくわかったじゃなくする。

Posted at

面接対策でおそらく聞かれるであろうオブジェクト指向について説明できるようになりたい。
chatGPTを使いながら勉強を進めていきます。

オブジェクト指向とは?

オブジェクト指向(Object-Oriented)は、プログラミングの設計思想や方法論の1つで、現実世界の物事や概念を「オブジェクト」として捉え、それらのオブジェクト間の関係や相互作用をプログラムに落とし込むことを目指します。

分かりやすく例を挙げると、考えてみてください。現実の世界で「車」というものを考えた時、車には「色」や「速度」、「ブランド」といった属性があり、また「走る」や「止まる」といった動作ができますよね。

この「車」というものをオブジェクト指向の考え方でプログラムに表現すると、

  • 属性(プロパティ、フィールド):色、速度、ブランドなど
  • 動作(メソッド、関数):走る、止まるなど

といった形で「車」というオブジェクトを設計します。

このようにオブジェクト指向は、現実の事象や概念をプログラムに落とし込むことができるため、大規模なプログラムや複雑なシステムを効率よく開発する際に役立ちます。

また、オブジェクト指向には以下のような主要な概念があります:

  1. カプセル化:オブジェクトの内部情報や詳細を隠蔽し、必要な部分だけを外部に公開すること。
  2. 継承:あるオブジェクトの特性や機能を受け継ぎ、新しいオブジェクトを作成すること。
  3. 多態性:同じ名前の動作でも、オブジェクトの種類によって異なる動きをすること。

このような特性を利用することで、再利用性や拡張性、保守性の高いプログラムを開発することが可能となります。

簡潔的に人に説明する際にどのようにオブジェクト指向を説明する?

簡潔にオブジェクト指向を説明する場合、以下のように表現できます:

「オブジェクト指向は、現実の物や概念を"オブジェクト"としてプログラムに表現する考え方。オブジェクトは属性(例:車の色)と動作(例:車が走る)を持ち、これを使って効率的にプログラムを組み立てることができます。」

オブジェクト思考の主要概念をコードで解説

Rubyのコードを使って、オブジェクト指向の主要な概念(カプセル化、継承、多態性)を説明します。

  1. カプセル化
class Car
  # インスタンス変数は外部から直接アクセスできない(カプセル化)
  def initialize(color)
    @color = color
  end

  # colorを取得するためのメソッド(ゲッター)
  def color
    @color
  end

  # colorを設定するためのメソッド(セッター)
  def color=(new_color)
    @color = new_color
  end
end

car = Car.new("red")
puts car.color         # "red"を出力
car.color = "blue"
puts car.color         # "blue"を出力
  1. 継承
class Vehicle
  def move
    puts "Vehicle is moving"
  end
end

# CarクラスがVehicleクラスを継承
class Car < Vehicle
  def honk
    puts "Beep beep!"
  end
end

car = Car.new
car.move  # "Vehicle is moving"を出力
car.honk  # "Beep beep!"を出力
  1. 多態性
class Bird
  def speak
    puts "Some sound"
  end
end

class Sparrow < Bird
  def speak
    puts "Chirp chirp"
  end
end

class Parrot < Bird
  def speak
    puts "Hello! I'm a parrot!"
  end
end

def bird_sound(bird)
  bird.speak
end

sparrow = Sparrow.new
parrot = Parrot.new

bird_sound(sparrow)  # "Chirp chirp"を出力
bird_sound(parrot)   # "Hello! I'm a parrot!"を出力

上記の例では、bird_soundメソッドは異なる種類の鳥のオブジェクトを受け取ることができ、それぞれの鳥のspeakメソッドを呼び出すことで、異なる音を出力します。これが多態性の一例です。

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