糖尿病とクラス


さて、以前にも少し書きましたが、今回もオブジェクト指向について少しだけ書きます。

コンピュータの世界でオブジェクト指向という言葉が使われ初めて久しくなります。 その意味するところも、時代とともに変わりつつあることも以前に書きました。

今回は、この「オブジェクト指向」的な考え で糖尿病を見るとどうなるかを筆者の勝手な憶測と偏見で書いてみます。 決して患者さんを「オブジェクト」としてみているという意味ではありませんので、 誤解のないようにして下さい。

オブジェクトは、それ自体で機能する単位とも考えられます。 単なる「もの」ではなく、いろいろな性質や、機能を有するものであると考えられます。 そして、オブジェクトは必ず何らかの「クラス」から派生します。

クラスは、一群のオブジェクトの共通の性質を表すものとも考えられます。 そのクラスも、 もっと根元的なクラスから派生していることもあります。 たとえば、「代謝疾患」というクラスを考えます。

この「代謝疾患」クラスには、このクラスを説明するためのデータ・メンバというものを有して います。たとえば、いろいろな代謝経路に関するデータなどでしょう。そして、この「代謝疾患」クラ スからはいろいろな「疾患」クラスが派生しています。

たとえば「糖尿病」クラスというものが派生 していると考えても矛盾はないでしょう。

「糖尿病」クラスには、「糖尿病」を定義づけるようなデー タ・メンバを含んでいます。 たとえば血糖値とかグリコ・ヘモグロビンのデータとか、その他諸々の 検査データなどでしょう。 合併症に関するデータを含んでいてもおかしくはないでしょう。

一般に、 データメンバは、クラス外からは変更することも、参照することもできません。 そこでクラスは、単なるデータだけではなく、 メソッドとかメンバ関数とかいわれるものを有することができます。

たとえば「糖尿病」クラスには、ある時間の血糖値とか、 尿糖の濃度とかをデータメンバに追加するメソッドやら、 過去のデータメンバを見ることのできるメンバ関数が必要となるでしょう。

さて、ここにAという「糖尿病」クラスに属するオブジェクトがあるとします。 このオブジェクトは「糖尿病」クラスのメソッドを使って自分の現在の血糖値 やらグリコヘモグロビンの値を記録したり、参照したりできます。

決して、他の力を借りることなく自分自身で動作する点に注目しなくてはなりません。 また、「糖尿病」クラスは「代謝疾患」クラスより派生していますので 「代謝疾患」クラスのメソッドを使ったり、データを参照したりできるかもしれません。 代謝疾患クラスには脂質代謝に関するデータメンバも含んでいますから、 コレステロールとか中性脂肪のデータを参照したり、記録したりする関数を持っており、 当然この関数は糖尿病クラスからも利用できるでしょう。

さて、オブジェクトが生成されるときに、 そのクラスのデータメンバは初期化されていないため、どんな値が入って いるのか予測がつきません。

通常オブジェクトが生成されるときには構築子(こうちくし・コンストラクタとも呼ばれます) と呼ばれる特殊なメンバ関数がたとえ、明示的に記載されていなくとも暗黙のうちに呼ばれます。 たとえば、「糖尿病」クラスから生成されるBというオブジェクトは、 「糖尿病」としてふさわしくない性質を持っているかもしれません。

そこで、コンストラクタはオブジェクトが生成されるときに、この検査を行います。 一般的に、クラスのコンストラクタはクラスと同じ「名前」を持ったメンバ関数です。 従って「糖尿病」クラスから生成されたオブジェクトはすべて、「糖尿病」としてふさわしい(?) データメンバを有することになります。従ってこのような記述方法をと ると、糖尿病としてふさわしくないオブジェクトの記述を防ぐことができます。 漠然としていますがこういった新しいものの見方がこれからは必要になってくるのかもしれません。


目次(4)に戻る 前の号を読む 次の号を読む ホーム・ページに戻る