この特集では,次のような疑問に対する答を解説しています.

・オブジェクト指向ってどんなもの?
・オブジェクト指向の分析や設計ってどんなことをするの?
・うちはC言語を使っているのだけれど,C++やJavaでなければオブジェクト指向ってできないの?
・近頃,デザインパターンって言葉をよく聞くけれど,それって何?

 「オブジェクト指向がどのようなもので,どのような考え方をするのか」ということが知りたい読者や「オブジェクト指向で出てくる用語がよくわからない」という読者は,第1章から読んでもらえるとよいかと思います.「オブジェクト指向というのがどのようなものかは何となくわかるけれど,それで仕事を進めるのにどんなことをやればいいのかよくわからない」という読者には,第2章や第3章の内容がヒントになるでしょう.

 そして,「オブジェクト指向がどんなものかは大体知っているけれど,結局C言語で考えないとよくわからない」とか「オブジェクト指向を使いたいけれど,仕事はC言語でしかできない」という読者に向けて,第4章から第6章を用意しました.「オブジェクト指向でプログラムを組み始めたけれど,どのようなクラスにしていけばいいのか」という読者や「近頃うわさのデザインパターンって何?」という読者は,第7章を読んでください.

 この第1章では,オブジェクト指向の基本的なところから説明していきたいと思います.

オブジェクト指向の前の話

 オブジェクト指向がどうのこうのという前に,プログラミングのこぼれ話があるのでまずそれから紹介します.これらが前提となってオブジェクト指向になっています.

● 人間の頭ってそんなに良くない!?

 たいていの人が誤解しているかもしれませんが,(ある意味において)人間の頭はそれほど良いものではありません.人間の頭もある程度コンピュータと似ていて,何かを考える場合はその作業領域として「短期記憶」領域が使われます.ちょうど,CPUのレジスタのような感じです.

 この短期記憶領域の容量は,あまり大きくありません.たとえば,ランダムな数であれば,ぱっと見て暗唱できるのが,7±2程度の桁数です.しかし,試してみてください.7桁の数の暗唱は楽にできますか? できるが楽ではないというのが普通ではないでしょうか.楽にできるとなると,4桁ぐらいが限界かと思います.

 キャッシュカードの暗証番号が4桁,電話番号が大体4桁程度で区切られていることなどを考えると,やはり4桁ぐらいがいいところでしょう.すると,人間がものを考えるときに楽に気にしておける事柄は大体四つ程度といえます.それ以上になると,気にすることができない要素が出てくるわけです.

〔イラスト1〕
人間の頭はそれほど良くない!?

Column 変態,クラスチェンジ

 オブジェクトは,いったん特定のクラスに属するものとして生まれると,生涯そのクラスに属します.属するクラスを変更することができないのです(クラスを変更できるオブジェクト指向言語や,そもそもクラスというものがないオブジェクト指向言語も存在するが).

 RPG(ロールプレイングゲーム)にたとえると,キャラクタ(オブジェクト)作成時に戦士(戦士クラス)を選んでしまうと,そのキャラクタはずっと戦士であり続ける場合があります(図A).

 しかし,RPGの中にはクラスチェンジができるものもあります.必要に応じてあるキャラクタが戦士になったり,魔法使いになったり,さらには魔法戦士などという兼業もあり得ます.

 このような場合,どのようにモデリングすればよいのでしょう? このような場合は「キャラクタは職業や身分をもっている」とモデリングすれば楽です図B).

 この場合の職業とは,「XX職とはかくあるべし」などと書かれた極意書のようなものです.キャラクタは何かやるべきことがあると,この極意書を見るわけです.プログラム的には,キャラクタと極意書に同じような操作があり,キャラクタのメソッドは極意書の操作を呼び出すだけです.

 この極意書を持ち替えることがクラスチェンジ,複数もつのが兼業です.

 このように,職業や身分といったものを変更できることを変態(メタモフィズム)といいます.青虫が蝶に変わるようなことという意味です.

〔図A〕転職できないモデル

〔図B〕転職できるモデル

インデックス

オブジェクト指向の前の話
 人間の頭ってそんなに良くない!?
 gotoは悪.でもなぜ?...

オブジェクト指向の考え方


今月号特集トップページへ戻る


Copyright 2002 石原 亘