第11章 クラス

第11章の構成
11-1 コンポーネントを変数・関数・手続きに
11-2 privatepublic
11-3 protectedpublic
11-4 手続き・関数の上書き
11-5 フォームをクラスに
11-6 クラスとユニット
11-7 「インベーダー生成」ボタント
11-8 インベーダーを用意する場所

【学習内容のねらい】

これまで、インベーダーゲームを通じてオブジェクトの複製 (生成) や継承を学習して来ました。その際、「インベーダー」や「弾」等、ゲームに必要になる要素 (オブジェクト) はすべてフォームとして用意して来ました。分かり易さのためにこうして来たのですが、よく考えると、インベーダーゲームには、「表示盤」フォームと「操作盤」フォームさえあればよく、「インベーダー」と「弾」に関しては、(表示盤にきちんと表示されればよく) 必ずしもフォームはいりません。実際、「インベーダー」フォームと「弾」フォームを見えなくしても実行結果は変わりませんでしたね。必要なのは、「移動」や「描く」などの機能だけです。そこで、不要なフォームを取り除き、これら (必要な) 機能のみを持った"モノ"を定義した方がすっきりします。本章では、その"モノ"を定義します。そして、その"モノ"がクラスと呼ばれる、(フォームによらない) より一般的なオブジェクトの型であることを学習します。

実はこれまで皆は多くのクラスにお目にかかっています。実例をあげると、「TForm」や「TEdit」などです。これらはそれぞれ「フォーム」クラス、「エディット」クラスです。先頭の T は Type (型) の略です。そして、TForm クラスから Form1Form2 などのオブジェクトが生成されます。これは変数と型の関係に類似しています。クラスが型でその型で生成された変数がオブジェクトという訳です。

これらの用語を用いて改めて9章以降の学習を整理してみましょう。皆は9章で「TFormInvader」クラスを定義し、それを用いて FormInvader1, FormInvader2 などのオブジェクトを生成しました。そして第10章で「TFormInvader」クラスから継承によって「TFormInvaderBoss」クラスを定義しました。そして本章で「TFormInvader」クラスから不要なフォーム取り除き、必要最小限の機能を持ったクラスとして定義し直します。これで、オブジェクト指向プログラミングの基礎学習は修了です。仕上げのつもりでがんばってください。

なお、11-2 〜 11-4 の内容は、変数や関数・手続きの公開の仕方に関するもので、クラス概念と直接関わるものではありませんが、説明の都合上ここに配置しました。しかし、ここの内容は前章の継承との関連が深く、またオブジェクト指向プログラミングの重要な概念ですので、どうか、しっかりと説明を読んでください。