MachiKaniaで始めるオブジェクト指向プログラミング(その1)
2019年5月5日
MachiKania ver 1.2から、使用しているBASICコンパイラーがオブジェクト指向に対応しています。MachiKaniaでは、クラスベースのオブジェクト指向プログラミングを採用しています。一つ前の記事では、クラスの使い方について書きました。ここでは、どの様にクラスを作製するかについて、述べます。この記事では、今までオブジェクト指向プログラミングを行なった事がない人でも分かりやすいような説明を、試みてみます。
クラスを作製し利用すると、何がどの様に便利になるのでしょうか。幾つか、挙げてみます。
1. 機能ごとにプログラムが抽象化・パッケージ化され、プログラム全体が見やすくなる
2. よく使う機能をクラスとして作製すれば、再利用が容易になる
3. 作製したクラスをライブラリー登録すれば、いつでも使える
最低でも、これだけの長所が挙げられます。一つ一つ見ていきましょう。
機能ごとにプログラムが抽象化・パッケージ化され、プログラム全体が見やすくなる
オブジェクト指向を用いなくても、MachiKaniaでは構造化プログラミングが可能ですから、幾つかの機能をサブルーチンとして記述すれば、ある程度プログラムは見やすくなります。しかしながら、複雑なプログラムでは複数のサブルーチンになってしまいます。これらの複数のサブルーチンをクラスとして一つのファイルにまとめてしまう事で、パッケージ化出来、管理がより楽になります。
クラスとしてパッケージ化する場合、もう一つメリットがあります。長い名前の変数を宣言して使う場合、構造化プログラミングで複数のサブルーチンを使用している場合、それぞれのサブルーチンで使用する変数名が重ならないように注意してプログラミングする必要があります。他方、クラス内で宣言した変数はクラスファイル内でのみ有効で、仮に他のファイルで同名の変数が使われていたとしても、それぞれ別々の変数として扱われます。従って、複数の機能を組み合わせる場合に、変数名の衝突を考える必要がありません。
また、クラス単位でその機能を考慮すればよいので、大規模なプログラムでも管理が容易になります。
よく使う機能をクラスとして作製すれば、再利用が容易になる
以上のような性質から、一度クラスを作製してしまえば、色々なプロジェクトで使い回す事が容易です。複数のクラスを使用するようなプログラムを書いても、クラス同士で変数名が別個に管理されますので、変数名の衝突は起りませんし、それぞれ別個にソースコードを管理する事が出来ます。
作製したクラスをライブラリー登録すれば、いつでも使える
完成したクラスを、SD/MMCカードの「LIB」ディレクトリーに置いておけば、いつでも好きな事にそのクラスを使う事が可能になります。作製したクラスを皆で使えるように、是非とも公開して下さい。
MachiKaniaにおけるクラスの基本
まず、メインプログラムとクラスファイルのそれぞれのプログラム内部で、どの様な順で制御が行なわれるかを見ていきます。ここでは、一つ前の記事で取り扱った基本的な次の3つのことを行なう事とします。
1)クラスの使用を宣言する「USECLASS CLASS1」
2)オブジェクトを作製する「O=NEW(CLASS1)」
3)オブジェクトのメソッドを呼び出す「O.TEST1()」
オブジェクトを作製し利用するのが、オブジェクト指向プログラミングの基本なのですが、この回ではオブジェクトについて詳しく扱いません。オブジェクトについては次回以降詳しく述べますので、まずは、オブジェクトなるものを作製するのだなぐらいに思って下さい。まず、BASICコード中での実行の流れに付いて見ていきます。以下、図の左に書いた赤い矢印は、現在実行中の行を示します。
まず、クラスの使用を宣言します。二行目の「USECLASS CLASS1」がそれです。これにより、「CLASS1.BAS」という名のファイルが取り込まれ、CLASS1クラスとして登録されます。
次に、オブジェクトを一つ作製します。三行目の「O=NEW(CLASS1)」がそれです。これにより、変数「O」がオブジェクトとして利用出来るようになります。
次に、オブジェクト「O」のメソッド「TEST1」を呼び出します。これにより、制御が「CLASS1.BAS」の三行目、「METHOD CLASS1」の部分に移ります。次の行に「PRINT "TEST"」がありますから、ディスプレイに「TEST」という文字列が表示されるはずです。
「RETURN」を認識すると、元のメインプログラムに制御が戻ります。「END」命令があるので、プログラムが停止します。
以上が、クラス使用時のプログラム実行の基本の動作です。複数のファイル間で、プログラム実行の流れがどの様に進むかについて理解出来ましたでしょうか?
次回は、オブジェクトについて述べたいと思います。
クラスを作製し利用すると、何がどの様に便利になるのでしょうか。幾つか、挙げてみます。
1. 機能ごとにプログラムが抽象化・パッケージ化され、プログラム全体が見やすくなる
2. よく使う機能をクラスとして作製すれば、再利用が容易になる
3. 作製したクラスをライブラリー登録すれば、いつでも使える
最低でも、これだけの長所が挙げられます。一つ一つ見ていきましょう。
機能ごとにプログラムが抽象化・パッケージ化され、プログラム全体が見やすくなる
オブジェクト指向を用いなくても、MachiKaniaでは構造化プログラミングが可能ですから、幾つかの機能をサブルーチンとして記述すれば、ある程度プログラムは見やすくなります。しかしながら、複雑なプログラムでは複数のサブルーチンになってしまいます。これらの複数のサブルーチンをクラスとして一つのファイルにまとめてしまう事で、パッケージ化出来、管理がより楽になります。
クラスとしてパッケージ化する場合、もう一つメリットがあります。長い名前の変数を宣言して使う場合、構造化プログラミングで複数のサブルーチンを使用している場合、それぞれのサブルーチンで使用する変数名が重ならないように注意してプログラミングする必要があります。他方、クラス内で宣言した変数はクラスファイル内でのみ有効で、仮に他のファイルで同名の変数が使われていたとしても、それぞれ別々の変数として扱われます。従って、複数の機能を組み合わせる場合に、変数名の衝突を考える必要がありません。
また、クラス単位でその機能を考慮すればよいので、大規模なプログラムでも管理が容易になります。
よく使う機能をクラスとして作製すれば、再利用が容易になる
以上のような性質から、一度クラスを作製してしまえば、色々なプロジェクトで使い回す事が容易です。複数のクラスを使用するようなプログラムを書いても、クラス同士で変数名が別個に管理されますので、変数名の衝突は起りませんし、それぞれ別個にソースコードを管理する事が出来ます。
作製したクラスをライブラリー登録すれば、いつでも使える
完成したクラスを、SD/MMCカードの「LIB」ディレクトリーに置いておけば、いつでも好きな事にそのクラスを使う事が可能になります。作製したクラスを皆で使えるように、是非とも公開して下さい。
MachiKaniaにおけるクラスの基本
まず、メインプログラムとクラスファイルのそれぞれのプログラム内部で、どの様な順で制御が行なわれるかを見ていきます。ここでは、一つ前の記事で取り扱った基本的な次の3つのことを行なう事とします。
1)クラスの使用を宣言する「USECLASS CLASS1」
2)オブジェクトを作製する「O=NEW(CLASS1)」
3)オブジェクトのメソッドを呼び出す「O.TEST1()」
オブジェクトを作製し利用するのが、オブジェクト指向プログラミングの基本なのですが、この回ではオブジェクトについて詳しく扱いません。オブジェクトについては次回以降詳しく述べますので、まずは、オブジェクトなるものを作製するのだなぐらいに思って下さい。まず、BASICコード中での実行の流れに付いて見ていきます。以下、図の左に書いた赤い矢印は、現在実行中の行を示します。
まず、クラスの使用を宣言します。二行目の「USECLASS CLASS1」がそれです。これにより、「CLASS1.BAS」という名のファイルが取り込まれ、CLASS1クラスとして登録されます。
次に、オブジェクトを一つ作製します。三行目の「O=NEW(CLASS1)」がそれです。これにより、変数「O」がオブジェクトとして利用出来るようになります。
次に、オブジェクト「O」のメソッド「TEST1」を呼び出します。これにより、制御が「CLASS1.BAS」の三行目、「METHOD CLASS1」の部分に移ります。次の行に「PRINT "TEST"」がありますから、ディスプレイに「TEST」という文字列が表示されるはずです。
「RETURN」を認識すると、元のメインプログラムに制御が戻ります。「END」命令があるので、プログラムが停止します。
以上が、クラス使用時のプログラム実行の基本の動作です。複数のファイル間で、プログラム実行の流れがどの様に進むかについて理解出来ましたでしょうか?
次回は、オブジェクトについて述べたいと思います。