第3章 OOPをHSPで実現してみる
登録タグ: HSP HSP3 Hot Soup Processor ホットスーププロセッサー オブジェクト指向プログラミング OOP クラス インスタンス オブジェクト モジュール機能 モジュール変数 #module #global #modinit #modfunc #modcfunc #modterm newmod delmod
それでは実際に、HSPでOOPを実現していくにはどうすればいいのかということを、サンプルを交えながら説明していきたいと思います。
前回少しだけ、HSPでのオブジェクト指向プログラミングに対する補足的な文章を書きました。
そこでは、HSPでOOPを実現する機能としてモジュール機能とモジュール変数という2つの機能があることも書きました。
前回のOOPの言葉の説明をそれぞれ大雑把に当てはめてみると、モジュール機能はクラスに相当し、モジュール変数はインスタンスに相当します。
モジュール内に記述した内容を元にしてモジュール変数を作り、そのモジュール変数に対してモジュール内の関数や命令を実行していくというのが、HSPにおけるOOPの基礎となってきます。
それでは実際に、モジュール機能とモジュール変数を使用して簡単なオブジェクト指向プログラミングを実践して行きましょう。
まずは以下のサンプルをご覧ください。
; OOPの簡単なサンプル ; Helloクラス #module Hello str name ; コンストラクター #modinit str newName name = newName return ; sayHelloメソッド #modfunc sayHello mes "こんにちは、 " + name + " さん。" return #global ; Helloクラスのインスタンスguestを生成する newmod guest, Hello, "ゲスト" ; guestインスタンスのsayHelloメソッドを呼び出す sayHello guest ; プログラムをストップする stop
上のサンプルのうち、#moduleから#globalまでの間がHelloクラスとなっています。
もう一度言いますが、HSPではOOPを擬似的にしか実現することができないので、Helloと名前をつけたモジュールを仮にHelloクラスとしています。
このHelloクラスでは、名前を保存するためのnameというプロパティを同時に宣言しています。
HSPのOOPにおいて、他言語でいうプロパティを使用する場合は、#moduleの2つめの引数以降で型と共に宣言していきます。
コンストラクター(構築子、インスタンス生成時に呼ばれるメソッドのこと)では、新しい名前を設定するためのnewNameという引数を使って、nameプロパティに新しい名前を設定しています。
HSPのOOPでは、#modinit命令を使用してコンストラクターを宣言します。
sayHelloメソッド(メソッドは手続きのこと)では、コンストラクターで設定した名前を、文章と共に表示しています。
HSPのOOPでは、#modfunc命令または#modcfunc命令を使用してメソッドを宣言します。
Helloクラスを記述した後は、実際にHelloクラスからインスタンスを生成して、メソッドを呼び出しています。
HSPのOOPでインスタンスを生成するときは、newmod命令を使用します。
newmod命令の引数には、インスタンス変数名、クラス名の順に指定し、3つめ以降はコンストラクターに渡す引数を指定します。
今回の場合は、ゲストという名前を渡したいので、これを文字列として指定しています。
次に、先ほど生成したインスタンスをしようして、sayHelloメソッドを呼び出して画面に挨拶文を表示しています。
今回はguestという名前のインスタンスを生成したので、guestインスタンスを使用してsayHelloメソッドを呼び出しています。
HSPのOOPでは、#modfunc命令または#modcfunc命令で設定したメソッド名を最初に記述し、そのメソッドの引数の最初にインスタンス名を、2つめ以降からはメソッドに渡す引数を指定します。
ちなみに今回のサンプルを実行すると、画面上に「こんにちは、 ゲスト さん。」と表示されます。
カテゴリー:HSPでオブジェクト指向編
2011/09/30 15:38:44 更新