JSLのクラスを使用すると、オブジェクトの作成のほか、メンバー変数、メソッド、関数の定義を行うことができます。JSL関数Define Class()には、クラスの内容を定義するいくつかの引数があります。
Define Class ( "class name" ),
Base Class ( "base class name", <"base class name">, ...),
Using Namespace ( namespace ), >
Show ( ( All (Boolean) | Members (Boolean) | Methods (Boolean) | Functions (Boolean) ) ),
< Assignment Statements >
);
•
|
「class name」 は定義するクラスの名前です。
|
•
|
「base class name」 は、作成されるクラスの元として使用される基底クラスのセットを作る1つ以上のクラス名です。
|
•
|
namespace はメソッドや関数で定義された、適用範囲の指定されていない変数を格納する特定の名前空間を定義します。
|
•
|
–
|
All (Boolean)は、クラスオブジェクトインスタンスで定義されるすべてのメンバー、メソッド、および関数を示します。Allのデフォルト値は真です。
|
–
|
Members (Boolean)は、クラスオブジェクトインスタンスに含まれるすべてのメンバー変数を表示します。
|
–
|
Methods (Boolean)は、クラスオブジェクトインスタンスに含まれるすべてのメソッドを表示します。
|
–
|
Functions (Boolean)クラスオブジェクトインスタンスに含まれるすべての関数を表示します。
|
メモ: Allオプション、または任意の数のMembers、Methods、およびFunctionsのいずれかのオプションを指定することは可能ですが、Allオプションとその他のオプションを同時に指定することはできません。
Define Class(
"Pet",
Show(All(false), Members(true), Methods(false), Functions(false)),
{
name = "",
species = "",
breed = "",
sex = "",
color = "",
coat = "",
_init_ = Method( { name, species, breed, sex, color, coat },
this:name = name;
this:species = species;
this:sex = sex;
this:color = color;
this:coat = coat;
),
_show_ = Method( {},
Return( To String() )
),
_to string_ = Method( {},
Return( To String() )
),
Get Name = Method( {},
Return( name )
),
Get Species = Method( {},
Return( species )
),
Get Breed = Method( {},
Return( breed )
),
Get Sex = Method( {},
Return( sex )
),
Get Color = Method( {},
Return( color )
),
To String = Method( {},
Return( name || "は" || color || "色の" || breed ||
"で" || coat || "の" || species )
),
f= Function( {a, b},
Return ( a + b )
)
}
);
•
|
•
|
Char()関数や連結演算子など、文字列による表現が必要な場合は、使用する文字列の結果を返すTo Stringメソッドを定義します。
|
New Object(
("Class Name" | Class Name ) ( constructor arguments )
);
New Object(
Class Reference ( constructor arguments )
);
New Object(
"Class Name" | Class Name
<, { constructor arguments } >
);
New Object(
Class Reference,
<, { constructor arguments } >
);
class = "Pet";
xa = New Object( Pet( "オリバー", "犬", "シュナウザー",
"オス", "黒", "粗い被毛" ) );
xb = New Object( class, {"フリン", "犬", "コカプードル",
"オス", "茶", "巻き毛"} );
xc = New Object( class( "マンディ", "犬", "キャバリア",
"メス", "ルビー", "柔らかい毛" ) );
xd = New Object( "Pet"("チャーリー", "猫", "アジア種",
"オス", "白", "柔らかい毛") );
xd1 = New Object( xd( "フレッド", "猫", "シャム種",
"メス", "銀", "柔らかい毛" ) );
xd2 = New Object( xd, {"サム", "犬", "ジャーマンシェパード",
"オス", "白黒", "柔らかい毛"} );
Show( xa );
Show( xa );
Show( xb );
Show( xc );
Show( xd );
Show( xd1 );
Show( xd2 );
xdc = xd; // コピーを作成
xdc:name = "ジェリー";
xdc:species = "犬";
xdc:breed = "ハウンド";
xdc:color = "紫";
Show( xd, xdc );