1.C++の概要

1.1 C++の簡単な紹介

C++は、その名の通りC言語をもとに設計された言語で、C言語を拡張したものとなっています。従って、完全にというわけでなないものの、ほぼC言語を含んだ内容となっています。C言語とC++の最大の違いは、C++では「クラス」を用いることができるという点です。「クラス」とはとりあえずC言語の「構造体」の拡張したようなものと思っておいて下さい。クラスの概念やその設計に関しては、後で解説していきます。このようなクラスの概念を導入することで、C++ではオブジェクト指向プログラミングが可能となっています(C++はオブジェクト指向プログラミングをサポートする目的で開発された言語です)。よって、C++でプログラムを作るからにはオブジェクト指向なプログラミングを作成することになります(勿論、C++でオブジェクト指向ではないプログラムを作成することも可能です)。これにより、何がどのように便利になったのかは、実際にプログラミングをしながら学んでいくことにしましょう。

余談
C++は、1979年にBjarne Stroustrup氏によって設計された言語で、C++という名前は、Cにポストインクリメント(後値増分)である++演算子を適用したものであることから、C言語の拡張であることがわかります。後値増分なので、"C++"はインクリメントする前の値"C"を持っていることから、C言語に対して敬意を払っていることの表れだそうです。(文献[1]より)

1.2 オブジェクト指向プログラミングとは?

皆さんがこれまでの演習で学んできたC言語は「手続き型言語」と呼ばれており、一連のステップを、処理の流れに従ってプログラムを書いていく手法です。つまり1つのシステムにおいて各機能ごとに関数を用いて分割し、各関数を処理の流れに従って呼び出し、データ(変数)を変更してくというような作業をしてきました。一方、オブジェクト指向では、操作の手順ではなく、操作の対象(オブジェクト)に重点をおきます。関連するデータの集合と、それに対する手続き(処理)を1つのまとまりとしたものを「オブジェクト」とし、オブジェクトの組み合わせによってプログラムを作成するプログラミング技法がオブジェクト指向プログラミングとなります。オブジェクト指向の「オブジェクト」は「もの」を表しており、ここではデータとそれを操作する手続きが「もの」となります。

よく例えとしてでてくるのが、「テレビ」や「電子レンジ」です。これらのオブジェクト(もの)は、内部でどのような回路が働いているかを理解する必要はなく、操作方法をだけを知っていればどのメーカーのものでも使用できます。つまり、リモコンやスイッチなどで、適切なメッセージを送るだけで、使用できるということです。それぞれのオブジェクトに対し、固有の操作方法を設定することにより、内部の詳細を隠蔽し、利用しやすくするという考え方です。

以上のように説明したところで、「よくわかりません」というのが本音だと思います。
説明を聞くよりも、実際にプログラミングをして体験するのがよいと思いますので、とりあえずは、オブジェクト指向プログラミングとは

「クラス、継承、多態を有効に使ったプログラミング」

と覚えておくとよいでしょう。クラス、継承、多態は今後説明していきますので、今は分からなくても大丈夫です。

1.3 演習IIIを受講するにあたって

本演習では、演習I, 演習II で学んできたC言語の知識があるという仮定で授業を進めていきます。復習しておいてください。

初級編では、まず、オブジェクト指向的な要素以外での、C言語からの拡張やC言語との違いについて説明していきます。その後で、クラスについての説明に入っていきます。


参考文献

[1] 柴田望洋著,"CプログラマのためのC++入門",ソフトバンクパブリッシング, 1999.