オブジェクト指向

C++でのオブジェクト指向プログラムとは、
クラス、継承、仮想関数(ポリモーフィズを成立させるための仕組み)を有効に使ったプログラム。

オブジェクト指向言語では、intやstreamといった型を使って変数というものを作るのと同じようにして、
「もの」を自由に定義できる。例えば「猫」はデータと動作を次のように定義して、作ることが出来る。

  データ:名前
  動作:鳴く
これは「猫そのもの」ではなく「猫の設計図」、C++では自分が定義したい「もの」の設計図(オブジェクトの型)をクラスと呼んで次のようにコーディングします。
class Neko               //「猫(の設計図を)」定義するぞ、という宣言
{
private:
string name;             //「たま」「みけ」といった個別の名前の置場の定義
public:
Neko(string s) {           //「猫を作る関数」:コンストラクタの定義
name = s;
}
void naku() {             //「鳴く動作を定義する関数」
cout << "にゃあ。私は" << name << "です。" << endl; } }; <最後の}の後の;を忘れずに> コンストラクタは「個別のオブジェクト(またはインスタンスと呼ぶ)を作る」 コンストラクタは必ず名前がクラスの名前と同じ クラスの定義の後で、 Neko dora("たま"); と記述して、「たま」という名前を持ったdoraというNekoオブジェクトを作り、 それを使って「個別の猫」を動かすコードを書く。これが個別のプログラムの目的。 int main() { Neko dora("たま");          //Nekoがクラス名、doraが変数、"たま"がコンストラクタに渡される引数。これ以降doraがNekoオブジェクトを表す。 dora.naku();             //Nekoであるdoraに、関数nakuを実行させている。 } 実行結果は C:\cpp>0102.exe
にゃあ。私はたまです。

C:\cpp>

なぜわざわざクラスNekoを書いたのか、
一度Nekoを定義すれば
Neko dora1(“タマ”);
Neko dora2(“トラ”);
Neko dora3(“ミケ”);
と同様の猫をいくらでも作れる。

カテゴリー: C++ タグ: , , , パーマリンク