![]() |
[1999 年 4 月号] |
[Happy Squeaking!!]
3.Squeak演習:イントロスペクション
それでは、Squeakを使い、オブジェクトのイントロスペクションを試みることにしましょう。
本演習では、Squeak内で最初から提供されているクラスである、OrderedCollection(順序付き集合)を、メッセージを送ることで、様々な角度から調べあげていきます。
イントロスペクションの提供により、あらかじめ情報のない疎遠なオブジェクトに対しても、段階的に機能を調べて使用できるようになる柔軟性と楽しさをつかんでください。
3.1 オブジェクトの構造を調べる
クラスを取り出す
まずは、小手調べとしてOrderedColectionを生成してクラスを聞いてみます。
ワークスペースに以下を書いて実行してください。
| ord | ord := OrderedCollection new. ord add: 'What'; add: 'a'; add: 'cool'; add: 'environment!'. "要素を追加" Transcript cr; show: 'instance> ', ord printString. "インスタンスを表示" Transcript cr; show: 'class> ', ord class printString. "インスタンスからクラスを取り出し表示"
トランスクリプトには以下のように表示されます。
OrderedCollectionのインスタンスとクラス
OrderedCollectionは、追加した順番に要素を格納していく入れ物です。入れ物のサイズは要素の追加に従って自動的に変化します。(JavaでのVectorに該当) Smalltalkでは使う機会の多いデータ構造系のオブジェクトです。 |
SmallTip: データを追加した順番に格納しておくにはOrderedCollectionを使う |
以前に紹介したように、インスタンスに対して、「あなたを生成したクラスは?」と尋ねるときには class メッセージを使います。
SmallTip: インスタンスに対して、生成したクラスを問い合わせるには"class"メッセージを用いる |
Smalltalkでは、クラスもれっきとしたオブジェクトですから、クラス自身がメッセージに答えられます。
ですから上記の例は、わざわざインスタンスを生成しなくとも、
Transcript cr; show: 'class> ', OrderedCollection printString.
と書けば十分で、まったく同じ結果を得ることができます。
更につづく
© 1999-2001 OGIS-RI Co., Ltd. |
|