オブジェクト指向で躓いてしまう人
オブジェクト指向ってなんなの?という人
そんなあなたのために解説します。
なぜ、オブジェクト指向を理解できないのか?
それは、プログラミングを学ぶ過程でプロセス指向の頭が出来上がってしまっているからなんです。
1. プロセス指向とは?
プロセス指向とは、「処理(関数)」を中心に考える方法です。
(わかりやすくするための考え方ですので正確には違います)
試しに次のアルゴリズムを考えてみましょう。
「3 + 5 を計算し、答えを出すプログラムを作ってください」
ここで、「引数で3と5を受け取ってたした結果を返す関数を作ればよい!」
と考えたあなたはプロセス指向です。(笑)
なぜなら、処理(関数)から考えてしまっているからなんですね。
2. オブジェクト指向とは?
では、さっきのアルゴリズムをオブジェクト指向で考えるとどうなるのか?
-
まず、登場人物を考えます。
ここでは「3」さんと「5」さんの二人です。
(じつは、「5」さんは今回は仕事をしませんが律儀に登場人物を洗い出します。) -
次に、「3」さんに呼びかけます。
お~い、「3」さん!あなたに5を足したらいくつですか? -
「3」さんは答えます。
はいはい。私に5を足したら8ですよ!
これがオブジェクト指向です!
いかがでしょうか?
あらゆるものをオブジェクト(ものや生物)としてとらえて、登場人物として考え、
その登場人物に対して問いかけ(メッセージ)のやり取りでプログラムを書く。
これがオブジェクト指向なんですね。
もちろん「3」さんの中では、プロセス指向で考えた関数を書いておくことが必要です。
呼び出し側が「3」さんの処理内容を知らなくてもよいということもポイントです。
もうわかってきましたね?
最後にもう1つ
「3 の平方根を計算し、答えを出すプログラムを作ってください」
オブジェクト指向で考えたら
もちろん
「3」さんに問い合わせます。
「3」さん!あなたの平方根はいくつですか?
といった具合です。
もちろん「3」さんの中には 「このメッセージを受けたら自身の平方根を返す」
といった処理を書いておくことが必要です。
これで今日から全部オブジェクト指向でプログラムできる!?
ちょっと待ってください。
オブジェクト指向は保守面や開発の分担などで大いに効果を発揮しますし、
登場人物によっては、より分かりやすい構造でプログラムできるはずです。
だからと言って全部オブジェクト指向でコードを書くのはあまりお勧めしません。
特に簡単なプログラムや小規模開発などはプロセス指向の方がシンプルになるからです。
(いちいち「3」のような数字のためにオブジェクトを作ってたら大変ですし。。。)
JavaやPythonといった言語では、プロセス指向、オブジェクト指向両方でコーディング可能なので、
メリットデメリットをよく考えて両方使いこなせるようになっていただけるとよいと思います。
以上、お疲れ様でした。