object - Maple のオブジェクトの概要
|
オブジェクトについて
|
|
•
|
オブジェクトはデータとプロシージャのカプセル化を行うプログラミング要素です。クラスはオブジェクトのグループの内容 (データとプロシージャ) を説明しています。クラスに属するオブジェクトは、クラスのインスタンスと呼ばれます。オブジェクトの内容はその要素と呼ばれます。要素には、データ要素とプロシージャ要素の 2 つがあります。オブジェクトのプロシージャ要素はメソッドと呼ばれます。オブジェクトの要素はモジュールと同様に、メンバーへのアクセスが可能な範囲を制御できます。エクスポートと宣言された要素はどこからでもアクセス可能です。ローカルと宣言された要素はオブジェクトのメソッド内部からのみアクセスできます。
|
•
|
Maple では、オブジェクトは module の特殊タイプです。そのため、モジュールで動作するルーチンはオブジェクトでも動作します。
|
•
|
オブジェクト指向プログラミングには、多くの利点があります。
|
–
|
クラスの実装は、エクスポートされたメソッドのインターフェースを変更せずに根本的な変更が可能です。そのため、オブジェクトを使用するコードは、内部実装の変更の際に変更する必要がありません。
|
–
|
オブジェクトは、標準の Maple 構文と統合可能なメソッドを定義します。そのため、ユーザーは builtin タイプのように使用できるオブジェクトを作成できます。
|
–
|
クラスは、一般的なエクスポートを実装できます。そのため、一般的なエクスポートのみを使用するプロシージャは、オブジェクトがどのクラスが属するかがわからなくてもすべてのクラスのオブジェクトで動作します。
|
|
|
Maple のオブジェクト
|
|
•
|
Maple のオブジェクトは、module 作成構文、または既存のオブジェクトをコピーして作成されます。モジュール宣言構文を使用すると、オプションオブジェクトの追加でモジュールの代わりにオブジェクトを作成します。宣言はオブジェクトによって作成されるクラスのインスタンスを定義します。local と宣言された名前はオブジェクト内部にあり、オブジェクト外部からはアクセスできません。export と宣言された名前はオブジェクトの外部からアクセスできます。既存のオブジェクトをコピーして新規オブジェクトを作成するには、Object 関数を使用します。
|
|
エクスポートメソッド
|
|
•
|
エクスポートメソッドは、モジュール要素構文 (:-) ではなく標準の関数コール構文を使用して呼び出されます。オブジェクト o のメソッド m を呼び出すには、つぎのようにします。
|
以下は使用しません。
|
|
多重定義 builtin ルーチン
|
|
•
|
Maple のオブジェクトは、オブジェクトがタイプ builtin の Maple ルーチンに渡されるときに実行されるメソッドを定義できます。たとえば、オブジェクトのメソッドが map である場合は、このメソッドはオブジェクトが map 関数に渡されるときに実行されます。
|
|
|
演算子
|
|
•
|
Maple のオブジェクトは、演算子を使用する際に自動実行されるメソッドを実装できます。たとえば、+ メソッドを使用するオブジェクトは加算式で使用され、オブジェクトの + メソッドが実行されます。オブジェクトは、Maple の式で自然に使用できます。
|
|
|
オブジェクトとタイプ
|
|
•
|
すべてのオブジェクトは type オブジェクト です。さらに、type および :: は、予想されるクラスのオブジェクトをタイプとして渡すことにより、オブジェクトが特定のクラスのインスタンスであるかどうかを判断できます。ModuleType メソッドを定義してタイプチェックを調整することができます。
|
|
|
特殊メソッド
|
|
•
|
特殊メソッドはクラスが定義し、特定の状況で使用します。詳細は、メソッドのヘルプページを参照してください。
|
•
|
ModuleType: ModuleType メソッドは、オブジェクトが特定のクラスかどうかを判断する場合に実行されます。クラスは精密なタイプチェックを行うことができます。
|
•
|
ModulePrint: ModulePrint メソッドは、モジュールを書式を整えて印刷する場合に実行されます。
|
•
|
ModuleApply: ModuleApply メソッドはオブジェクトが関数コール式内で関数として使用されたときに実行されます。
|
•
|
ModuleLoad: ModuleLoad メソッドはオブジェクトがライブラリから読み込まれたときに実行されます。
|
•
|
ModuleIterator: ModuleIterator メソッドは、オブジェクトの内容を繰り返すためのインターフェースを作成します。
|
|
|
|
Download Help Document
Was this information helpful?