Toolsへ戻る

概説

System BrowserはSmalltalkクラスライブラリを閲覧・修正・作成するツールで,プログラミングする上で必須のツールとなっています.

起動方法

  • Worldメニュー/open...(開く...)/browser (b)を選択します.
  • デスクトップでAlt(Cmd)-bとします.
  • Tools/ObjectsToolから起動
  • Toolsフラップから起動.

各部説明

カテゴリペーン
クラスを機能別に分類したカテゴリー名を表示するペーンです.
クラスペーン
クラス名を表示するペーンです.
メソッドカテゴリペーン
メソッドを機能別に分類したカテゴリー名を表示するペーンです.
メソッドペーン
メソッド名を表示するペーンです.
インスタンスボタン
クラスのインスタンス側(インスタンスメソッド)を表示します.
クラスコメントボタン
クラスコメントを表示します.
クラスボタン
クラスのクラス側(クラスメソッド)を表示します.
各種ボタン
選択メソッド(メッセージ)について各種機能を提供しています.
コードペーン
Smalltalkコードを表示します.
クラスコメントペーン3.7
クラスを閲覧した始めにクラスコメントを表示します.
アノテーションペーン
プリファレンスのannotationPaneをtrueとしている時に選択クラス・メソッドの情報を表示します.
SystemBrowser.png
System Browser

操作方法

検索

次の手順で所望のクラスを探します.

  1. クラスを検索する方法はパッケージペーンリストでESCキーないしスクロール上部の■をクリックして,コンテキストメニューでfind class...(f)を選択します.
  2. Class name or fragment?タイトルの入力ダイアログでクラス名もしくはその一部を入力します.
  3. 複数候補がある場合メニューから選択します.

クラス名は通常その機能/アルゴリズム/プロトコル/性質を表す英単語から構成されていますので,必要とする機能を意味する単語ないしその一部を入力します.例えばメールに関するクラスを検索する場合には検索語にmail,pop,smtpといった関連する語を入力してみます.

パッケージ作成

コンテキストメニューのadd item..'で'パッケージ名をカテゴリ名-名称''として作成します.

Kernel-Objects
Kernel-Classes

[TODO]Package-Info

クラス作成

  1. 作成したいパッケージを選択.
  2. コードペーンに表示されるクラステンプレートを編集(下記黄色部分).
  3. Alt(Cmd)+Sでアクセプトします.
Object subclass: NameOfSubclass
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Category-Name'

変数作成

  1. インスタンス変数追加
    下記黄色部分を編集.
  2. クラス変数追加
    下記白色部分を編集.
  3. Alt(Cmd)+Sでアクセプトします.
Object subclass: NameOfSubclass
	instanceVariableNames: 'xxx yyy zzz'
	classVariableNames: 'XXX YYY ZZZ'
	poolDictionaries: ''
	category: 'Category-Name'

クラスコメント作成

クラスコメントボタンをクリックします.次にテンプレートに従って,クラスに関する情報を書き込みます.

メソッドカテゴリ(プロトコル)

メソッドカテゴリペーンのコンテキストメニューでnew category...を選択してカテゴリ(プロトコル)を作成します.

  1. メッセージカテゴリメニュー/new category...を選択します.
  2. 既存カテゴリの選択か新規カテゴリー名を入力を行います.

カテゴリの変更

既存メソッドのカテゴリの変更は次の順で行います.

  1. メソッドペーンで変更するメソッドを選択します.
  2. メソッドメソッドメニュー/more.../change category...を選択します.

[TIPS]メソッドの所属するプロトコルを変更する場合:メソッドペーンで選んだメソッドをドラッグして変更したいプロトコル名のところにドロップする方法もあります.

メソッド新規作成

  1. メソッドカテゴリ(プロトコル)を選択します*1.
  2. コードペーンのテンプレートにしたがって修正します.修正後,Alt(Cmd)+Sでアクセプトします.
    message selector and argument names
    	"comment stating purpose of message"
    
    	| temporary variable names |
    	statements
    

Tips

メソッドに引数を使う場合には次のように入力します.

メソッド名:(スペース)引数名

メソッド名の直後に:を入力し,スペースを入力します.次のような入力はエラーとなります.

メソッド名(スペース):(スペース)引数名

また:の直後にスペースを入れると,マウスダブルクリックで簡単に選択できるようになります.

メソッド編集

コードペーンでコードを修正します.修正が終了したら,Alt(Cmd)-Sでアクセプトします.この時初めての修正の場合,イニシャルを聞かれる場合がありますが,素直に英字で入力します.

メソッド削除

メソッドを削除する場合はメソッドリストペーンメニューでremove methodを選択します.この時下記メニューで処理を決定します.

RemoveMethod.png
削除メニュー
メニュー項目解説
Remove it選択メソッドを削除します.
Remove, then browse senders選択メソッドの削除を行い,~選択メソッドを呼び出しているメソッドを表示します.
Don't remove, but show me those sneders削除を中止します.~選択メソッドを呼び出しているメソッドを表示します.
Forget it --do nothing-- sorry I asked削除を中止します.

コンテキストメニュー解説

各ペーンのコンテキストメニューの解説を下記に示します.

カテゴリペーン*2

メニュー項目解説
find class...(f)閲覧するクラスを探します
recent classes...(r)過去に閲覧したクラスから選択します
--
browse allイメージ中の全てのクラスをブラウズします
browse選択したパッケージ中の全てのクラスをブラウズします
--
printOut選択したパッケージ中の全てのクラスのソースをHTML形式で書き出します.ファイル名は'パッケージ名'.html
fileOut選択したパッケージ中の全てのクラスのソースをfile outします.ファイル名は'パッケージ名'.st
--
recognizeコードペーンにパッケージ情報を表示します
alphabetizeパッケージペーンをアルファベット順にソートします
--
update他のブラウザで変更した場合に,パッケージペーンの表示内容を更新させます
add item...新しいパッケージを作成します.
rename...既存のパッケージ名を改名します.
remove選択したパッケージをイメージ中から削除します.

クラスペーン

1st menu

メニュー項目解説
browse full (b)もうひとつブラウザを開きます.
browse hierarchy (h)指定したクラスでHierarchyBrowserを開きます(fig.2).
browse protocol (p)指定したクラスのプロトコル別に閲覧するプロトコルブラウザ?を開きます(fig.3).
--
printOut指定クラスのソースをHTML形式で書き出します.ファイル名は'クラス名'.html
fileOut指定クラスのソースをfile outします.ファイル名は'パッケージ名'.st
--
show hierarchyコードペーンにクラス階層を表示します.インスタンス/クラスボタンの指定で表示が変わります.
show definitionクラス定義を表示します.インスタンス/クラスボタンの指定で表示が変わります.
show commentクラスコメントを表示します.
--
inst var refs...メニューで指定したインスタンス変数を参照するメソッドを表示します.
inst var defs...メニューで指定したインスタンス変数に代入するメソッドを表示します.
--
class var refs...クラス変数を参照しているイメージの全メソッドを表示
class varsクラス変数をインスペクトします.
class refs (N)現在閲覧しているクラスを使用しているイメージ中の全クラスのメソッドを表示.
--
rename class...指定クラスのクラス名を変更.
copy class指定クラスを別名でコピーします.
remove class (x)指定クラスを削除.
find method...指定クラスのメソッドをメニューから選択して表示.
--
more...2nd menu参照.

2nd menu

メニュー項目解説
unsent methods未使用メソッドを表示.
unreferenced inst vars未参照インスタンス変数を表示.
unreferenced class vars未参照クラス変数を表示.
subclass template指定クラスのサブクラス作成用テンプレートをコードペーン表示.
--
sample instance指定クラスのインスタンスを生成します.
inspect instance選択クラスの全インスタンスをインスペクトします.
inspect subinstances選択クラスおよびそのサブクラスの全インスタンスをインスペクトします.
--
fetch documentation
add all meths to current chgs
create inst var accessorsインスタンス変数のアクセサを作成します.

メソッドカテゴリペーン*3

メニュー項目解説
browseプロトコル別ブラウザを起動します.
printOut選択したプロトコルのソースをHTML形式で書き出します.ファイル名は'クラス名-プロトコル名'.html
fileOut選択したプロトコルのソースをfile outします.ファイル名は'クラス名-プロトコパル名'.st
--
recognizeコードペーンにプロトコル情報を表示します
alphabetizeカテゴリ(プロトコル)ペーンをアルファベット順にソートします
remove empty categoriesメソッドのないカテゴリ(プロトコル)を削除
categorize all uncategorized未分類のメソッドを親クラスの分類に合わせて分類します.
new category...新規カテゴリ(プロトコル)を作成.
--
rename...指定カテゴリ(プロトコル)を改名します.
remove指定カテゴリ(プロトコル)を削除します.

メソッドペーン*4

1st menu

メニュー項目解説
what to show...コードペーンに表示する内容を選択します.
toggle break on entry3.7選択メソッドに対しブレークポイントをON/OFFします.
--
browse full (b)もうひとつブラウザを起動します.
browse hierarchy (h)指定したクラスでHierarchyBrowserを開きます(fig.2).
browse method (O)指定したメソッドをブラウザを起動します.
browse protocol (p)指定したプロトコルをブラウザを起動します.
--
fileOut選択したメソッドのソースをHTML形式で書き出します.ファイル名は'クラス名-メソッド名'.html
printOut選択したメソッドのソースをfile outします.ファイル名は'クラス名-メソッド名'.st
--
senders of ... (n)選択メソッドを呼び出しているイメージ中の全クラスのメソッドを表示します.[Sendersボタン]と同じ
implementors of ... (m)選択メソッドを実装しているイメージ中の全クラスのメソッドを表示します.[implementorsボタン]と同じ.
inheritance (i)選択メソッドが継承している全クラスのメソッドを表示します.[inheritance]ボタンと同じ.
tile scriptorTools/TileScriptor参照.
versions (v)Version情報を表示します.[Versionボタン]と同じ
--
inst var refs...クラスペーンの項参照.
inst var defs...クラスペーンの項参照.
class var refs...クラスペーンの項参照.
class variablesクラス変数をインスペクトします.
class refs (N)現在閲覧しているクラスを使用しているイメージ中の全クラスのメソッドを表示.
--
remove method指定メソッドを削除します.
more...2ndメニュー参照.

2nd menu

メニュー項目解説
method pane指定メソッドでMethodMorphを起動します.
tile scriptorTools/TileScriptor参照.
toggle diffing (D)コードペーン表示をソース/差分に切り替えます.
implementors of sent messages?
--
local senders of ...?
local implementors of ...?
--
spawn sub-protocol?
spawn full protocol?
--
sample instance指定クラスのインスタンスを生成します.
inspect instance選択クラスの全インスタンスをインスペクトします.
inspcet subinstances選択クラスおよびそのサブクラスの全インスタンスをインスペクトします.
--
change category...指定メソッドのカテゴリ(プロトコル)を変更.
show category...指定メソッドのカテゴリ(プロトコル)を表示.
--
change set with this method選択メソッドを含むチェンジセットを探します.
revert to previous version前のバージョンに戻します.
remove from current changes set現在のチェンジセットからこのメソッドの変更を削除します.
revert & remove from changes前のバージョンに戻します.また現在のチェンジセットからこのメソッドの変更を削除します.
add to current change setこのメソッドの変更を現在のチェンジセットに追加します.
copy up or copy set選択メソッドをメニューより選択したクラスにコピーします.
fetch documentation?

コードペーン

Squeak/Menu/TextPaneを参照.

ボタン説明

ラベル名解説
browse別ブラウザを起動します.
senders選択メソッドの呼び出し元メソッドを表示します.
implementors選択メソッドの実装メソッドを表示します.
versionsバージョン情報を表示します.
inheritance選択メソッドの継承しているメソッドを表示します.
hierarchy階層ブラウザを起動します.
inst vars選択クラスのインスタンス変数を参照しているメソッドを表示します.
class vars選択クラスのクラス変数を参照しているメソッドを表示します.
sourceソース表示形式を選択します.下記ソース表示形式参照
ソース表示形式[sourceボタン]
項目名解説
source通常のソース表示
documentationメソッド中の最初のコメント表示
prettyPrint整形表示
colorPrint文法情報でカラー表示
altSyntax別形式の表示形式で表示
showDiffs前バージョンとの違いを表示
prettyDiffs前バージョンとの違いを整形して表示
decompileバイトコードから逆コンパイルしたソースコードを表示
byteCodesコンパイル結果であるバイトコードを表示
tilesタイル形式で表示します.TileScriptor参照

TODO

[TODO]implementors of sent messages
[TODO]|local senders of
[TODO]|local implementaion of ...
[TODO]spawn sub-protocol
[TODO]spawn full protocol
[TODO]fetch documentation
[TODO]add all meths to current chgs

補足

異なるクラスを見比べたい時がありますが,そういう時はWhiskerとかStarBrowserがいいでしょう。ただStarBrowserは日本語版6.1にはインストールできないんで,またWhiskerは大画面でないと窮屈なんで共通に使えるBrowserとしてSystemBrowserを主に使ってます.

関連リンク


コメント・つっこみ


*1 これを忘れるとカテゴリ名がas yet unclassifiedとなってしまいます.
*2 Package List
*3 protocol list
*4 message list

添付ファイル: fileSystemBrowser.png 320件 [詳細] fileRemoveMethod.png 291件 [詳細]

Last-modified: 2006-11-28 (火) 06:28:02 (4706d)