****************************************************************************** * * * 『よい子のC++』 Mr. Ikken Katou 1998/03/15 * * * ****************************************************************************** 【前書き】 『よい子のC++』はC++を習得しようとして、難解な用語に頭を混乱させられ たプログラマのために書かかれた。 これまでC言語や Fortran をやって来たプロ グラマに理解できるように、オブジェクト指向の理屈は隅に置き、C++のプログ ラムの現象を捕えることから始める。そのためプログラムの例題は、原則として1 テ−マ、1ペ−ジにし、結果もその場に掲載した。1日1ペ−ジを電車の中で見て 行けば、1ヵ月でC++のテクニックに関しては身に付くはずである。できれば例 題をコンピュ−タに入力し、値を変えるなど実際に試して見れば確実である。 ともかくC++はとっつきがすごく悪い。多分最初に買う本「プログラミング言語 C++」を読んでも何のことかさっぱり分からない。それで次々と雑誌や本を買い まくり、オブジェクト指向のうんちくを読んでみる。また少しでも知っていそうな 人がいたら飛んで行って聞いてみる。しかしその人も結局同じ穴のムジナで、同様 に分からなく苦労しているのである。 オブジェクト指向は元々 Smalltalk から来 ているのだから、Smalltalk の本も読んでみようと言うことになる。もうここまで 来ると相当混迷の度合を深めている。理解するなんて到底不可能とも思える。 結局自分で試してみるより方法がないのだ。パソコンやEWSを扱えるようになる まで、どのようにしたか思い出してみればいい。本を読んだり、人に話を聞いて理 解できたであろうか。最後には自分自身でコンピュ−タに触れ、ああでもないこう でもないと肌で覚えたに違いない。しかしオブジェクト指向に関しては、こうして 覚えたことが、それで全てなのか自信を持てない所に問題がある。なぜなら、へた にあがいた結果、オブジェクト指向の哲学を既にへんに頭に叩き込まれているから である。オブジェクト指向のうんちくと実際にC++で出来ることは、相当異なっ ていると断言できる。肌で覚えたことが全てであると自信を持って進もうでないか。 それに『よい子のC++』は、EWSでC++を使って行く上で同時に必要となる だろうクラス・ライブラリとGUIについても例題を掲載した。この両者は、これ からのプログラムを作成するためには、避けて通れない直ちに直面する問題である。 クラス・ライブラリについてはNIHを取り挙げた。Smalltalk と同じようなクラ スをC++で記述したものである。しかしまだ標準になっているとは言い難く、使 用には慎重を期した方がいいと思われる。GUIの方は、業界標準としてほぼ確立 した Motif を取り挙げた。 Motif でのポイントはウィジットをどうやってクラス 化するかである。その例題を掲載しておいた。 『よい子のC++』の例題全体的に言えることは、グラフィックスを意識した例題 になっていることである。それは私が機械系CADを設計、インプリメントしてい たことが影響している。しかし、これからのプログラマは大変である。オブジェク ト指向だけでなく、やれGUIだ、EWSだ、OSだ、ネットワ−クだ、DOS/V パ ソコンだ Windows だと、検討しなければならないことが山の様にある。 そんなプ ログラマのために少なくともC++に関しては、この『よい子のC++』が手助け になるようにと著わしたのである。 C++を勉強し始めた頃、誰かに『オブジェクト指向なんて当り前だよ。その当り 前であると、気付くことが重要なんだ』とそう言われたことがあった。なる程その 通りだなと今思う。オブジェクト指向は問題を、1個の機能を持ったオブジェクト を単位として考えましょうということである。従来のコンピュ−タ言語では、デ− タを表現するのに配列しか使えなかったりして、無理やり問題を言語の方に合わせ ざる負えなかった。多分問題を素直に捕え、素直にプログラミングすると、そのま まオブジェクト指向にかなうプログラムになってしまうのであろう。 便利になったと喜ぶべきか、負担がまた1つ増えたと嘆くべきか。どっちに転んで も、これからの時代はオブジェクト指向である。これだけは間違いないことだ。や るしかないのである。どうせやるなら簡単にやろう。しょせん人間の考えたものだ。 とんでもない難しいことなど、そうあるものではない。『よい子のC++』でプッ プ・プ−とやってしまおう。そう「私はタワシ、タワシは私 ...」オブジェクト指 向はそれだけのものでもないのだから。 【サンプル・プログラムについて】 * プログラムは Apollo DOMAIN/OS 上で作成し、動作を確認しました。本文中にプロ グラムのコメントとして書いてあるコンパイル&リンクの方法は、他のコンピュ− タでも少しの修正で使えるはずです。 * プログラムは次の環境で作成しました。Motif の例題を試す場合は、少し注意が必 要です。C++に対しては、X-Window、Motif、UEDK は、有効な組合わせのバ−ジ ョンがあります。ちなみに Motif 1.0 は、 関数のプロトタイプ宣言がされていな いのでC++では使えません。 UEDK は、Apollo で Motif のプログラムを開発す るためのキットで、Motif のヘッダ−・ファイルなんかが入っているものです。 DOMAIN/OS-SR10.4、X-Window 11.5、Motif1.2、UEDK1.1.3、C++2.1、cc-v.6.8 UNIX環境は Bsd4.3。 * プログラムは、最大66行の長さになるようにまとめてあります。 プリント出力 : $ prf xxx.x -left 1 -headers off