これからあなたは、今までの手続き型プログラミング、関数プログラミングに加え、オブジェクト指向プログラミングというプログラミングスタイルを習得することになります。

ボクはオブジェクト指向のことを、機能分割型プログラミングと表現します。
ボクが勝手にそう呼んでいるだけです。

オブジェクト指向では、専門的な能力を持ったクラスをいくつか作ります。各クラスは得意分野で互いをカバーしあい、1つの処理を表現します。クラスとは、単に機能のことです。

例えば、計算が得意な計算クラス、データの転送が得意な転送クラスと、クラスを分け、処理内容に応じて適したクラスを使用します。また、クラスには変数と関数を記述します。
(構造体は変数のみを記述するのでした、クラスは構造体のパワーアップ版です)
149

こうすることで、計算ミスが発生した時は計算クラスを中心にデバッグすればよいことになります。
大規模なソフトウェアでは、どこでバグが発生したのかが分かりにくくなりがちですが、オブジェクト指向スタイルではその限りではありません。

C++ではオブジェクト指向プログラミングをサポートしています。
C言語では考えられない膨大なコードをたやすく扱えるのがC++の魅力です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
それでは、計算を行うのが得意な計算クラスを作成してみましょう。
ソリューション エクスプローラーを右クリックし、追加→新しい項目 を選んで下さい。
146


ヘッダーファイル(.h)を選択し、名前を付けましょう。なんでも良いのですが、今回はCalculationと名付けておきました。
右下の追加を押してヘッダーファイルを追加して下さい。
147


さあいよいよクラスを作りますよ。クラスを作成する時はヘッダーファイルへ記述していきます。
とりあえず計算結果を格納する変数も宣言してみました。

これでCalculationクラスが作成されました。と言ってもまだなんの機能も持っていませんが。

クラスを作成する時はclassキーワードを使います。classキーワードの後にクラス名を付け、{};で囲みます。{};で囲まれた範囲がそのクラスの有効範囲です。
public:の意味は、公開です。つまり、public:以下に書かれた変数と関数はどこからでも参照できるということです。
148


非公開な変数や関数を作ることもできるのですが、ややこしいので最初は全て公開で作ります。その方がコードもシンプルで分かりやすいです。

それでは、クラスへ関数を追加しましょう。
クラスに記述する時も通常の関数を記述する時と全く同じです。


add関数は、整数を2つ受け取り、足してAnswerへ格納します。

これでCalculationクラスが完成しました!

今後、プログラム上で足し算が必要な時は、Calculationクラスへ任せればよいことになります。
それでは早速main関数からCalculationを呼び出して使用してみましょう。ちょうど、魔法使いが幻獣を呼び出して使役する感覚です。


hファイルはインクルードして使用するのでした。
こうすることで、Source.cpp上でCalculationを使用できるようになります。

さていよいよCalculationを呼び出しますよ。


Calculationは抽象的な存在なのです。なのでそのままでは使えません。
変数の宣言と同様の構文で実態を生成する必要があります。

Calculation Date1; はCalculation型のオブジェクトです。
オブジェクトとは、関数を内包する変数です。

ちょうど、int Number1; はint型の変数 というのに似ていますね。

それでは、Date1に計算を行ってもらいましょう。

150


オブジェクトが自身内部の変数や関数へアクセスする時は.演算子を使用してその名を指定します。
.addは引数を2つ受け取り、結果をAnswerへ格納するので、Date1.Answerで計算結果を取り出すことができるのです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
さてここまで読んであなたはこう思ったのではないですか?
オブジェクト指向って……必要? と。
この程度の処理であればmain関数へ記述しても不都合はないでしょう。

しかし、オブジェクト指向の目的は膨大なコードを扱うことにあります。
例えばadd関数の処理が数千行に及ぶ場合を想像して下さい。変数もAnswerだけでなく、Avarage(平均)や、Absolute(絶対値)なども保持している時、果たしてmain関数だけで操作できるでしょうか?

これまでのプログラミングスタイルでは、main関数に実際の処理を記述してきました。
しかしC++ではmain関数はクラスを管理し、指示を出す関数です。
実際の処理は下請けであるクラス達が行います。
151