システムブログ システムソリューションのメンバーが
システムの素晴らしさを紹介いたします

株式会社東洋のシステム開発は、無駄のない仕様をはじめ、簡単な入力画面や検索機能が人気です。
システムソリューションのメンバーがその素晴らしい機能をひとつずつ紹介いたします。

インスタンスの参照方法

今回も、弊社で開発しております販売管理システムQuestPlusの主コンピュータ言語であるJavaの一部の言語仕様を紹介させて頂きます。(その5です。)

今回は、インスタンスの参照方法についてです。

インスタンスとは、データと手続きがまとまった一つの単位です。それを部品として扱う為のものです。インスタンスを使う場合、その中身を知らなくても構いません。どんなデータを扱えるか、どういう手続きが使えるかを知っていれば十分です。このような部品では、その部品以外のものの影響を受けることがなくなる結果、正しい部品があればプログラムの誤りがなくなります。

プログラムは巨大化しがちですので、部品を沢山作っておけば部品を使うだけで殆どのことができ、部品以外のプログラムは余り作らなくて済むことになります。

インスタンスは、クラスという設計図のようなものを用いて作られた建物のようなものです。建物というより建物内の一つの部屋のようなものというイメージの方が近いです。

インスタンスは複数個使う場合もある為、設計図であるクラスとは別にあります。

上記で「new」という命令で「Integer」というクラス型で要素数2個の配列のインスタンスを作成し、それを「a」という変数に入れています。

「a」は配列で、最初の要素を指す索引は0で、順々に「1」、「2」・・・のような索引になります。ただ、この変数の場合は要素数は2個の為、索引は「0」と「1」の2個になります。

変数「b」は、「Integer」というクラス型のインスタンス変数です。

上記を実行すると、「a[0]」は「4」、「a[1]」は「2」のまま、そして「b」も「3」のままになります。

「a[0]」が「1」から「4」に変わってしまった為、「b」も「3」から「5」に変わってしまうと思われたかも知れませんが、そうはなりません。

というのも、手続き「method」内で、「a2」も「b2」も同じく変数ですが、「a2」に付いては「a2[0]」のように「a2」変数の指すインスタンス(配列)の最初の要素(手続き「method」を呼び出した側の「a」のインスタンス内の最初の要素を指す)に値を代入していますが、「b2」に付いては「b2」という変数そのものに代入しています。

つまり「b2」に付いては、手続き「method」内のローカルな変数「b2」を変更しただけなので、手続き「method」を呼び出した側での変数「b」には何の影響もありません。

しかし、「a2」に付いては、手続き「method」を呼び出した側の「a」のインスタンス内の最初の要素を参照し、それに対して値を設定した為、手続き「method」を呼び出した側の変数「a」を使った「a[0]」もその変更された値を参照した訳です。

言葉だけで書くと分かり難いかも知れません。

実際のコンピュータの内部をイメージして、メモリ領域にインスタンスが割り振られ、そこを参照するとイメージできれば分かり易いとは思いますが、それが分かり易いかそれとも逆に余計に分かり難くなるかは人次第ですので、取り敢えず言葉での説明に留めました。

インスタンスは、Javaのようなオブジェクト指向のプログラム言語では非常に重要なものです。

以上、Java言語の一部の言語仕様の紹介でした。