はじめに
この記事では、"オブジェクト指向”っていう概念にどう向き合ったら良いのか、っていうのを個人的に整理してます。
最初に言っちゃうと、オブジェクト指向っていうのはコーディングする時に注意すべきこと、が私の結論になります。
まずオブジェクト指向でググった
以下のページが簡単でわかりやすいかも!っと思ったんですが。。
ロボットプログラミング教室
◆オブジェクト指向とは?
「ある役割を持ったモノ」ごとにクラス(プログラム全体の設計図)を分割し、モノとモノとの関係性を定義していくことでシステムを作り上げようとするシステム構成の考え方のこと。
・オブジェクト:直訳すれば「物」「対象」という意味。プログラミングにおいてはデータと処理の集まりを意味している。
・クラス:データと処理をひとつにまとめる機能。モノ(オブジェクト)の設計書のようなもの。
・プロパティ:モノ(オブジェクト)が持っているデータのこと。(車に例えれば「メーカー」「排気量」「色」など)
・メソッド:モノ(オブジェクト)が持っている処理のこと。(車に例えれば「走る」「曲がる」「止まる」などアクションを起こす処理のこと)
◆オブジェクト指向の三原則
●継承=同じようなプログラムを1か所にまとめてコードを再利用しやすくする仕組み
●カプセル化=他のプログラムからできるだけ変更できない仕組み
●ポリモーフィズム=継承したコードの一部を変更して利用するための仕組み
ふむー。
なるほど。概念はわかったような気もするし、こういう仕組みがあるのもわかったけど、これを覚えて何をどうすれば良いかよくわからん。。。なんとなく継承とかメソッドとか使っているけども。。
#オブジェクト指向でコーディング
と思ったら、オブジェクト指向を世界一わかりやすく説明している記事をみつけました。
def calculate(number_1, number_2)
number_1 * number_2 + 1
end
def update_content(value)
"結果は#{value}です"
end
def output(content)
puts content
end
value = 100
content = ""
new_value = calculate(value,20)
// 2001
content = update_content(new_value)
// "結果は2001です"
output(content)
=> "結果は2001です"
>一方で、オブジェクト指向で書くとこんな感じ。
>```Ruby
num = Num.new(100,"")
num.calculate(20)
// 2001
>num.update_content
// "結果は2001です"
>num.output
=> "結果は2001です"
つまり、オブジェクト指向とは、__コードにオブジェクトという主人公を登場させ、それをメインに話を進めていく設計の考え方__といえます。
なるほどー。
まとめ
上記を踏まえた結果、__オブジェクト指向っていうのはコーディングする時に注意すべきこと__っていうのが私の認識になりました。
オブジェクト指向の三原則も、ただの便利な仕組みっていうんじゃなくて、オブジェクトを中心にコーディングする為に便利な仕組みってことなのかなー、っていう認識になりました。
就活の面接の時に聞かれるのも、オブジェクト指向でコーディングしてくれないと困るから、っていうことなんだろう。
追記
ものすごい丁寧に説明してくれている記事があったので追記