(57)【要約】【課題】定数属性（ＲＯＭ情報）と変数属性（ＲＡＭ情報）とのカプセル化によってオブジェクト指向プログラミングを可能にする。【解決手段】ＲＯＭ２０上に定数属性の構造体の実体を、ＲＡＭ１０上に変数属性の構造体の実体を作成し、定数属性の構造体の実体に変数属性の構造体の実体へのポインタを追加する。ＣＰＵ３０は、定数属性の構造体の実体に対する操作を実装する関数の引数に定数属性の構造体の実体へのポインタを引き渡すことにより、変数属性へのアクセスを定数属性の構造体の実体に属する変数属性の構造体の実体へのポインタを経由して行う。【選択図】  図１
2006185353.tif 000002
【特許請求の範囲】
【請求項１】
ＲＯＭおよびＲＡＭをアクセスするＣＰＵを備えるマイクロコンピュータにおける定数属性・変数属性カプセル化方法であって、
ＲＡＭに変数属性の構造体の実体を作成する工程と、
ＲＯＭに定数属性の構造体の実体を作成するとともに、前記定数属性の構造体の実体に前記変数属性の構造体の実体へのポインタを追加する工程と、
ＣＰＵが変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行う工程と
を含むことを特徴とする定数属性・変数属性カプセル化方法。
【請求項２】
ＲＯＭおよびＲＡＭをアクセスするＣＰＵを備えるマイクロコンピュータにおける定数属性・変数属性カプセル化方法であって、
ＲＡＭに変数属性の構造体の実体を作成する工程と、
ＲＯＭに定数属性の構造体の実体を作成するとともに、前記定数属性の構造体の実体に前記変数属性の構造体の実体へのポインタを追加する工程と、
ＣＰＵが前記定数属性の構造体の実体に対する操作を実装する関数の引数に前記定数属性の構造体の実体へのポインタを引き渡すことにより、変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行う工程と
を含むことを特徴とする定数属性・変数属性カプセル化方法。
【請求項３】
変数属性の構造体の実体が作成されるＲＡＭと、
定数属性の構造体の実体および前記変数属性の構造体の実体へのポインタが作成されたＲＯＭと、
変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行うＣＰＵと
を有することを特徴とするマイクロコンピュータ。
【請求項４】
変数属性の構造体の実体が作成されるＲＡＭと、
定数属性の構造体の実体および前記変数属性の構造体の実体へのポインタが作成されたＲＯＭと、
前記定数属性の構造体の実体に対する操作を実装する関数の引数に前記定数属性の構造体の実体へのポインタを引き渡すことにより、変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行うＣＰＵと
を有することを特徴とするマイクロコンピュータ。
【請求項５】
ＲＯＭおよびＲＡＭをアクセスするＣＰＵを備えるマイクロコンピュータのデータ構造において、
変数属性の構造体の実体が作成されたＲＡＭと、
定数属性の構造体の実体および前記変数属性の構造体の実体へのポインタが作成されたＲＯＭと
を有することを特徴とするデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は定数属性・変数属性カプセル化方法およびマイクロコンピュータならびにデータ構造に関し、詳しくは電子制御装置（ＥＣＵ；Electronic Control Unit）等の組込みシステムで用いられる定数属性・変数属性カプセル化方法およびその方法が適用されるマイクロコンピュータならびにそのデータ構造に関する。
【背景技術】
【０００２】
自動車のボデーＥＣＵ等の組込みコンピュータは、バッテリーが機能している間、半永久的に動作し続けるという特徴がある。したがって、マイクロコンピュータの暴走や、電気的なノイズによるデータの書換え（いわゆるＲＡＭ（Random Access Memory）化け）等が発生すると、バッテリーを外さないと正常に復帰しないので、これらに起因する動作不良や動作不能に陥ることを避けるために、プログラム等の不変な定数情報（定数属性）を極力ＲＯＭ（Read Only Memory）に配置しなければならないという要請がある。また、ＲＡＭはＲＯＭに比べ高価であるので、マイクロコンピュータを低コスト化するためには、使用するＲＡＭを極力少なくしなければならない。
【０００３】
ところで、オブジェクト指向プログラミングなどに見られるように、オブジェクトの属性と操作とを一つにまとめることで、再利用性の高いプログラミングが可能になる。この場合、属性を一つにまとめるためには、それらが連続したアドレス空間に存在しなければならないという制約がある。このため、ひとつのオブジェクトに定数属性と変数属性をまとめようとすると、全ての属性をＲＡＭ領域に配置しなければならなくなり、前述の組込みコンピュータ特有の要請に反してしまう。また、必要以上にＲＡＭ領域を使用するので、マイクロコンピュータが高価になってしまう問題がある。オブジェクトを定数属性だけを持つものと、変数属性だけを持つものの２つに分けることで、この問題を回避できるが、常に２つのオブジェクトを扱わなければならなくなり、オブジェクトの管理が難しくなる。よって、組込みコンピュータでオブジェクト指向プログラミングを行うことは難しかった。
【０００４】
なお、従来技術として、例えば、定数情報を格納するＲＯＭと変数情報を格納するＲＡＭとが設けられたマイクロコンピュータにおいて、３本のバスを、１本を共用することで必要となるバスを２本とし、ハードウェアの構成を削減する技術が公知である（例えば、特許文献１参照）。ハードウェア構成の削減とともに、ＲＯＭからＲＡＭへのアクセス回数を減少させるという利点もある。
【０００５】
また、他の従来技術として、アドレススペース構造体の実体へのポインタを実行スペース構造体の実体へのポインタに記憶させるとともに、実行スペース構造体の実体へのポインタをアドレススペース構造体の実体へのポインタのリストに繋げる技術が公知である（例えば、特許文献２参照）。
【０００６】
さらに、別の従来技術として、プログラム中のポインタについて、その指示先が定数アドレス領域に限定されるかどうかを判定する解析を行う技術が公知である（例えば、特許文献３参照）。
【０００７】
しかしながら、上記従来技術は、いずれも、本発明の要旨である、変数属性の構造体の実体へのポインタを定数属性として定数属性の構造体の実体に追加することを開示ないしは示唆するものではない。
【特許文献１】特開平１３−０３４６０３号公報
【特許文献２】特開平１０−２８９１１７号公報
【特許文献３】特開２００４−１３９３６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述したように、従来の組込みコンピュータでは、ＲＯＭとＲＡＭとはアドレス空間において連続して存在できず、定数属性（ＲＯＭ情報）と変数属性（ＲＡＭ情報）とを一つにまとめて扱えるようにすることができなかったので、定数属性と変数属性とをカプセル化してオブジェクト指向プログラミングを行うことが難しいという課題があった。
【０００９】
そこで、本発明の目的は、変数属性の構造体の実体へのポインタを定数属性として定数属性の構造体の実体に格納することにより、定数属性と変数属性とのカプセル化を行う定数属性・変数属性カプセル化方法を提供することにある。
【００１０】
また、本発明の他の課題は、上記定数属性・変数属性カプセル化方法が適用されたマイクロコンピュータを提供することにある。
【００１１】
さらに、本発明の別の課題は、上記マイクロコンピュータのデータ構造を提供することにある。
【課題を解決するための手段および発明の効果】
【００１２】
請求項１記載の定数属性・変数属性カプセル化方法は、ＲＯＭおよびＲＡＭをアクセスするＣＰＵを備えるマイクロコンピュータにおける定数属性・変数属性カプセル化方法であって、ＲＡＭに変数属性の構造体の実体を作成する工程と、ＲＯＭに定数属性の構造体の実体を作成するとともに、前記定数属性の構造体の実体に前記変数属性の構造体の実体へのポインタを追加する工程と、ＣＰＵが変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行う工程とを含むことを特徴とする。請求項１記載の定数属性・変数属性カプセル化方法によれば、従来は、本来、一つにまとめなければいけない定数属性と変数属性とを、定数属性の構造体と変数属性の構造体とで別々に管理しているため、定数属性の構造体と変数属性の構造体との整合が保たれるように注意しなければならなかったが、定数属性の構造体と変数属性の構造体とを変数属性の構造体の実体へのポインタによって結合するとともに、結合する変数属性の構造体の実体へのポインタを定数属性の構造体の実体に属する定数属性としたので、矛盾が生じることがなくなる。よって、組込みコンピュータでもオブジェクト指向プログラミングが可能になる。
【００１３】
請求項２記載の定数属性・変数属性カプセル化方法は、ＲＯＭおよびＲＡＭをアクセスするＣＰＵを備えるマイクロコンピュータにおける定数属性・変数属性カプセル化方法であって、ＲＡＭに変数属性の構造体の実体を作成する工程と、ＲＯＭに定数属性の構造体の実体を作成するとともに、前記定数属性の構造体の実体に前記変数属性の構造体の実体へのポインタを追加する工程と、ＣＰＵが前記定数属性の構造体の実体に対する操作を実装する関数の引数に前記定数属性の構造体の実体へのポインタを引き渡すことにより、変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行う工程とを含むことを特徴とする。請求項２記載の定数属性・変数属性カプセル化方法によれば、従来は、本来、一つにまとめなければいけない定数属性と変数属性とを、定数属性の構造体と変数属性の構造体とで別々に管理しているため、定数属性の構造体と変数属性の構造体との整合が保たれるように注意しなければならなかったが、定数属性の構造体と変数属性の構造体とを変数属性の構造体の実体へのポインタによって結合するとともに、結合する変数属性の構造体の実体へのポインタを定数属性の構造体の実体に属する定数属性としたので、矛盾が生じることがなくなる。よって、組込みコンピュータでもオブジェクト指向プログラミングが可能になる。加えて、定数属性と変数属性とを一つにまとめて扱えるので、操作を実装する関数で渡す引数の数を減らすことができ、操作によって構造体のデータ構造を隠蔽して、カプセル化することができる。
【００１４】
請求項３記載のマイクロコンピュータは、変数属性の構造体の実体が作成されるＲＡＭと、定数属性の構造体の実体および前記変数属性の構造体の実体へのポインタが作成されたＲＯＭと、変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行うＣＰＵとを有することを特徴とする。請求項３記載のマイクロコンピュータによれば、従来は、定数情報もＲＡＭ領域に配置しなければ、一つの構造体として扱うことができなかったが、不連続なアドレス空間である、ＲＯＭ情報とＲＡＭ情報を結合して一つにまとめて扱うことができるので、必要以上にＲＡＭ領域を使用することがなくなる。よって、オブジェクト指向プログラミングで実装されたマイクロコンピュータのコストを低減できる。
【００１５】
請求項４記載のマイクロコンピュータは、変数属性の構造体の実体が作成されるＲＡＭと、定数属性の構造体の実体および前記変数属性の構造体の実体へのポインタが作成されたＲＯＭと、前記定数属性の構造体の実体に対する操作を実装する関数の引数に前記定数属性の構造体の実体へのポインタを引き渡すことにより、変数属性へのアクセスを前記定数属性の構造体の実体に属する前記変数属性の構造体の実体へのポインタを経由して行うＣＰＵとを有することを特徴とする。請求項４記載のマイクロコンピュータによれば、請求項３記載のマイクロコンピュータによれば、従来は、定数情報もＲＡＭ領域に配置しなければ、一つの構造体として扱うことができなかったが、不連続なアドレス空間である、ＲＯＭ情報とＲＡＭ情報を結合して一つにまとめて扱うことができるので、必要以上にＲＡＭ領域を使用することがなくなる。よって、オブジェクト指向プログラミングで実装されたマイクロコンピュータのコストを低減できる。また、定数属性と変数属性とを一つにまとめて扱えるので、操作を実装する関数で渡す引数の数を減らすことができる。
【００１６】
請求項５記載のデータ構造は、ＲＯＭおよびＲＡＭをアクセスするＣＰＵを備えるマイクロコンピュータのデータ構造において、変数属性の構造体の実体が作成されたＲＡＭと、定数属性の構造体の実体および前記変数属性の構造体の実体へのポインタが作成されたＲＯＭと、を有することを特徴とする。請求項５記載のデータ構造によれば、ＣＰＵが変数属性へのアクセスを定数属性の構造体の実体に属する変数属性の構造体の実体へのポインタを経由して行うことができる。また、定数属性と変数属性とを一つにまとめて扱うことができる。
【発明を実施するための最良の形態】
【００１７】
定数属性（ＲＯＭ情報）の構造体と、変数属性（ＲＡＭ情報）の構造体とを作成し、定数属性の構造体の実体に変数属性の構造体の実体へのポインタを追加し、定数属性からたどって変数属性にアクセスできるようにしたことにより、組込みコンピュータでも定数属性と変数属性とのカプセル化によってオブジェクト指向プログラミングが可能になる。
【００１８】
以下、本発明の実施例について図面を参照しながら詳細に説明する。
【実施例１】
【００１９】
図１は、本発明の実施例１に係る定数属性・変数属性カプセル化方法が適用されたマイクロコンピュータ１のデータ構造図である。このマイクロコンピュータ１は、変数属性の構造体の実体が作成されるＲＡＭ１０と、定数属性の構造体の実体であるインスタンス（オブジェクト）が作成されるとともに変数属性の構造体の実体であるインスタンスへのポインタが追加されたＲＯＭ２０と、定数属性の構造体の実体であるインスタンスに対する操作を実装する関数の引数に当該インスタンスへのポインタを引き渡すことにより、変数属性へのアクセスを定数属性の構造体の実体に属する変数属性の構造体の実体であるインスタンスへのポインタを経由して行うＣＰＵ（Central Processing Unit）３０とを含んで構成されている。
【００２０】
図２を参照すると、変数属性の参照の処理では、定数属性の構造体の実体であるインスタンスへのポインタselfと変数属性の構造体の実体であるインスタンスへのポインタまでのオフセットoffset1との和をレジスタｒ１に格納し（ステップＳ１０１）、レジスタｒ１の読み出し値をレジスタｒ２に格納し（ステップＳ１０２）、レジスタｒ２と目的の変数属性へのオフセットoffset2との和をレジスタｒ３に格納する（ステップＳ１０３）。そして、レジスタｒ３の読み出し値を参照値とする（ステップＳ１０４）。なお、変数属性への書き込みの場合は、レジスタｒ３の示すアドレスに書き込み値を格納する。
【００２１】
＜Ｃ言語での実装例＞
図３は、本発明の実施例１に係る定数属性・変数属性カプセル化方法を実現するクラスClassAの一例を示すＵＭＬ（Unified Modeling Language）によるクラス図である。本例のクラスClassAは、変数属性value，および定数属性defaultValueを持つ。変数属性valueは、可視性がprivate、タイプがintである。定数属性defaultValueは、ステレオタイプが<<const>>、可視性がprivate、タイプがintである。また、クラスClassAは、操作setDefault()，およびsetValue()を持つ。各操作setDefault()，およびsetValue()の可視性はpublicである。操作setDefault（）は、変数属性valueに定数属性defaultValueをセットする操作である。操作setValue（value）は、引数で与えられた値を変数属性valueにセットする操作である。
【００２２】
図４は、図３で示されるクラスClassAをＣ言語で実装する場合のリスト１を例示する。
【００２３】
リスト１の５行目は、クラスClassAの定数属性の構造体ClassAの型定義であり、型constを指定している。この型指定によって、コンパイラ（図示せず）は、リスト１のコンパイル時に、クラスClassAの定数属性の構造体ClassAの実体であるインスタンスを、ＲＯＭ２０上の定数属性領域（ＲＯＭ領域）に割り当てる。
【００２４】
リスト１の６行目は、クラスClassAの変数属性の構造体ClassAFieldの型定義であり、型constを指定していない。したがって、コンパイラ（図示せず）は、リスト１のコンパイル時に、クラスClassAの変数属性の構造体ClassAFieldの実体であるインスタンスを、ＲＡＭ１０上の変数属性領域（ＲＡＭ領域）に割り当てる。
【００２５】
リスト１の８−１０行目は、クラスClassAの変数属性の構造体ClassAFieldを定義している。
【００２６】
リスト１の１２−１５行目は、クラスClassAの定数属性の構造体ClassAを定義している。特に、１３行目では、定数属性の構造体ClassAのメンバ定義で、変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ_fを定義することで、定数属性の構造体ClassAと変数属性の構造体ClassAFieldとを結合している。
【００２７】
リスト１の１７−１９行目は、インスタンスを生成するためのマクロを定義する。定数属性の構造体ClassAの実体であるインスタンスを生成するためには、定数属性の構造体ClassAの実体であるインスタンスと変数属性の構造体ClassAFieldの実体であるインスタンスとをそれぞれ生成して、かつ、それらが関係付けられなければならないが、１７−１９行目のようなマクロを提供すると、定数属性の構造体ClassAの実体であるインスタンスと変数属性の構造体ClassAFieldの実体であるインスタンスとの生成および関連付けを一括で行うことができ、より確実にインスタンスを生成することができる。
【００２８】
リスト１の２２−２３行目は、定数属性と変数属性とをカプセル化（隠蔽）するための操作を実装する関数setDefault,
setValueを定義する。
【００２９】
図５は、図３で示されるクラスClassAをＣ言語で実装する場合のリスト２を例示する。
【００３０】
リスト２の２−６行目は、定数属性の構造体ClassAの実体であるインスタンスに対する操作を実装する関数setDefaultを定義する。特に、４行目では、関数setDefaultの第1引数には、必ず定数属性の構造体ClassAの実体であるインスタンスへのポインタselfが渡されるようにする。
【００３１】
リスト２の７−１１行目は、変数属性の構造体ClassAFieldの実体であるインスタンスに対する操作を実装する関数setValueを定義する。特に、９行目では、関数setValueの第1引数には、必ず定数属性の構造体ClassAの実体であるインスタンスへのポインタselfが渡されるようにする。
【００３２】
このように、関数setDefault，setValueの第1引数に定数属性の構造体ClassAの実体であるインスタンスへのポインタselfを渡すようにしたことにより、定数属性defaultValueへのアクセスは、第１引数で渡された定数属性の構造体ClassAの実体であるインスタンスへのポインタselfに対して行われ、変数属性Valueへのアクセスは、第１引数で渡された定数属性の構造体ClassAの実体であるインスタンスへのポインタself中の変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ_fを経由して行われる。よって、定数属性の構造体ClassAの実体であるインスタンスへのポインタselfだけで、定数属性defaultValueおよび変数属性Valueにアクセスできるようになる。
【００３３】
図６は、クラスClassAを利用したプログラム例を示すリスト３である。
【００３４】
リスト３の２行目は、定数属性の構造体ClassAを翻訳単位に組み込む前処理指令である。
【００３５】
リスト３の３−５行目は、定数属性defaultValueのデフォルト値123, 456, 789が異なる３つの定数属性の構造体ClassAの実体であるインスタンスObject1,
Object2, Object3を生成する。
【００３６】
リスト３の６−８行目は、それぞれのインスタンスObject1, Object2, Object3へのポインタ&Object1,
&Object2, &Object3を配列AllInstancesにまとめている。
【００３７】
リスト３の１０−１７行目は、全てのインスタンスObject1, Object2, Object3へのポインタ&Object1,
&Object2, &Object3を、配列AllInstancesを利用して定数属性defaultValueのデフォルト値123, 456,
789に戻す関数Initializeを実装している。
【００３８】
次に、このように構成された実施例１に係る定数属性・変数属性カプセル化方法の手順について、図１ないし図６を参照しながら説明する。
【００３９】
ＣＰＵ３０は、リスト３のプログラムの実行を開始すると、まず、リスト３の３行目にある、Create_ClassA(Object1,123);を、リスト１の１７−１９行目のインスタンスを生成するためのマクロに置き換えて、以下のようにする。
【００４０】
1: static ClassAField
Object1Field = {123};
2: ClassA Object1 = {
&(Object1Field),123};
【００４１】
上記の１行目は、変数属性の構造体ClassAFieldの宣言であり、変数属性の構造体ClassAFieldの変数属性valueに、初期値=123を与えている。
【００４２】
上記の２行目は、定数属性の構造体ClassAの宣言であり、定数属性の構造体ClassAに属する変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ_fに、１行目で宣言した変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ（変数属性領域アドレス）&(Object1Field)を設定している。定数属性defaultValueには、123を与えている。なお、２行目の変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ&(Object1Field)は、コンパイラ（図示せず）のコンパイル時点では決定していない。この結合は、リンカ（図示せず）によるリンク時に行われる。
【００４３】
次に、ＣＰＵ３０は、リスト３の４行目にある、Create_ClassA(Object2,456);を、リスト１の１７−１９行目のインスタンスを生成するためのマクロで置き換え、以下のようにする。
【００４４】
1: static ClassAField Object2Field
= {456};
2: ClassA Object2 = {
&(Object2Field),456};
【００４５】
上記の１行目は、変数属性の構造体ClassAFieldの宣言であり、変数属性の構造体ClassAFieldの変数属性valueに初期値=456を与えている。
【００４６】
上記の２行目は、定数属性の構造体ClassAの宣言であり、定数属性の構造体ClassAに属する変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ_fに、１行目で宣言した変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ（変数属性領域アドレス）&(Object2Field)を設定している。定数属性defaultValueには、456を与えている。なお、２行目の変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ&(Object2Field)は、コンパイラ（図示せず）のコンパイル時点では決定していない。この結合は、リンカ（図示せず）によるリンク時に行われる。
【００４７】
続いて、ＣＰＵ３０は、リスト３の３行目にある、Create_ClassA(Object3,789);を、リスト１の１７−１９行目のインスタンスを生成するためのマクロで置き換え、以下のようにする。
【００４８】
1: static ClassAField Object3Field
= {789};
2: ClassA Object3 = {
&(Object3Field),789};
【００４９】
上記の１行目は、変数属性の構造体ClassAFieldの宣言であり、変数属性の構造体ClassAFieldの変数属性valueに、初期値=789を与えている。
【００５０】
上記の２行目は、定数属性の構造体ClassAの宣言であり、定数属性の構造体ClassAに属する変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ_fに、１行目で宣言した変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ（変数属性領域アドレス）&(Object3Field)を設定している。定数属性defaultValueには、789を与えている。なお、２行目の変数属性の構造体ClassAFieldの実体であるインスタンスへのポインタ&(Object3Field)は、コンパイラ（図示せず）のコンパイル時点では決定していない。この結合は、リンカ（図示せず）によるリンク時に行われる。
【００５１】
最後に、ＣＰＵ３０は、リスト３の１０−１７行目にある、関数Initializeを実行することにより、全てのインスタンスObject1,
Object2, Object3へのポインタ&Object1, &Object2, &Object3を、リスト３の６−８行目にある配列AllInstancesを利用して、定数属性defaultValueのデフォルト値123, 456, 789に戻す。
【００５２】
このように、リスト３のプログラム例では、変数属性の構造体ClassAFieldの存在を意識していない。変数属性の構造体ClassAFieldは、クラスClassAの属性を定数属性と変数属性とに分けるためだけに必要な内部構造なので、マクロを使って変数属性の構造体ClassAFieldが自動的に作られるようになっている。よって、クラスClassAを使用する側からは、定数属性の構造体ClassAと変数属性の構造体ClassAFieldとの違いを意識することなく、クラスClassAを使用することができる。
【００５３】
本実施例１によれば、第１に、従来の全ての属性をＲＡＭに配置した場合と比べて、使用するＲＡＭ領域が少なくて済む。
【００５４】
第２に、従来は、定数属性と変数属性とを別々に管理していたので、定数属性の構造体と変数属性の構造体との整合が保たれるように注意しなければならなかったが、定数属性の構造体と変数属性の構造体とを変数属性の構造体の実体であるインスタンスへのポインタによって結合するとともに、結合する変数属性の構造体の実体であるインスタンスへのポインタを定数属性の構造体の実体に追加したので、矛盾が生じることがなくなる。よって、定数属性だけで、あたかも一つのインスタンス（オブジェクト）のように定数属性および変数属性を扱うことが可能になる。すなわち、定数属性と変数属性とのカプセル化が可能になる。
【００５５】
以上、本発明の実施例１を説明したが、これはあくまでも例示にすぎず、本発明はこれに限定されるものではなく、特許請求の範囲の趣旨を逸脱しない限りにおいて、当業者の知識に基づく種々の変更が可能である。例えば、実施例１ではＣ言語で実装した例について説明したが、本発明は、アセンブラ言語でＲＡＭ上の所望の絶対アドレスに変数属性領域を作成するようにコーディングし、この変数属性領域アドレスをＲＯＭ上の定数属性領域に格納することによっても、同様に実装することができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施例１に係る定数属性・変数属性カプセル化方法が適用されたマイクロコンピュータのデータ構造図。
【図２】本実施例１に係る定数属性・変数属性カプセル化方法による変数属性の参照手順を示すフローチャート。
【図３】本実施例１に係る定数属性・変数属性カプセル化方法を実現するクラスの一例を示すＵＭＬによるクラス図。
【図４】図３で示されるクラスをＣ言語で実装する場合のリスト１。
【図５】図３で示されるクラスをＣ言語で実装する場合のリスト２。
【図６】図３で示されるクラスを利用したプログラム例を示すリスト３。
【符号の説明】
【００５７】
１  マイクロコンピュータ
１０  ＲＯＭ
２０  ＲＡＭ
３０  ＣＰＵ
ClassA  クラス
ClassA  定数属性の構造体
defaultValue  定数属性
_f  変数属性の構造体の実体へのポインタ
self  定数属性の構造体の実体へのポインタ 
setDefault（）  操作
setValue（value）  操作
Value  変数属性
【図１】
2006185353.tif 000003
【図２】
2006185353.tif 000004
【図３】
2006185353.tif 000005
【図４】
2006185353.tif 000006
【図５】
2006185353.tif 000007
【図６】
2006185353.tif 000008