オブジェクト指向って?
初学者による第一弾記事は、誰しもが引っかかるオブジェクト指向についての記事を書こうと思います。
まず初めに、本記事は自分の学習内容を備忘録的に記載していくので初学者の方と一緒に勉強していくスタイルです!
オブジェクト指向そんなに甘くないよというお声もあると思いますが、まずは慣れるところから行きます。
ソフトウェアを楽に作る
"オブジェクト指向でなぜつくるのか"という名著によると、
オブジェクト指向というのはそもそも"ソフトウェアを楽に作るため"に使うそうです。
ほぉ 一番難しいと思っているのにどういうこと?
用語も呪文のようにプログラミングでしか聞かない言葉もいっぱいあるし、
なんか分かった気になって実装しようとするとうまくいかないし…。
ということでまずは用語になれる所から始めます。
classとインスタンス
まず初めにこの二つから
・class "設計図"
・インスタンス "モノ"
これは対に考えていくといいみたいです。
classを実行すると物であるインスタンスが出来上がる。
このclassやインスタンスに対して何か変数を持たせたいと思ったときに登場するのがメソッドですね。
下記はPersonというclassに二つのインスタンスメソッドを定義してあります。
class Person
# インスタンメソッドであるイニシャライズメソッド
def initialize(name, age)
@name = name
@age = age
end
# 自己紹介をするメソッドです。
def greet
"Hello, my name is #{@name} and I am #{@age} years old."
end
end
person = Person.new("Alice", 30)
puts person.greet # => "Hello, my name is Alice and I am 30 years old."
initialize メソッド
initializeメソッドはインスタンスを初期化するものになります。
なんか初期化ってよくわからないけど設計図どおりにインスタンスを生成するというイメージです。
今回のインスタンスを言葉にすると
initialize(name,age)
引数の名前と年齢ちょうーだい!
お次にdef greet に関しては自分で定義しているメソッドです。
initializeメソッドでもらった引数で、自己紹介の挨拶するね!
なので、person = Person.new("Alice", 30)で"Alice"という名前と"30"歳という引数をあげると
(@name) (@age)
"Hello, my name is Alice and I am 30 years old."
ここだけならなんかめちゃ簡単にみえますね。
次の記事ではポリモーフィズムについて書きます。
ポリモーフィズムって? (準備中)
参考文献