ホーム > HSP講座 > HSPでオブジェクト指向編 > 第3章 OOPをHSPで実現してみる

第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 更新

Powered by AkiWiki. Wiki syntax is based on PukiWiki, and extends it.

スポンサード リンク

メニュー

HTML講座

HSP講座

Inkscape講座

スポンサード リンク