: Playerクラスにメソッドを追加する
: RCMorphクラスの作成
: インスタンス変数の定義
目次
システムブラウザでRCMorphを選択した状態で、`instance' ボタンを押すとインスタンス・メソッドの一覧が表示される。また、`class' ボタンを押すとクラスメソッドの一覧が表示される。メソッドの定義はそれぞれのボタンを選択し、メソッドを定義するカテゴリを選んだ状態で行う。
メソッドの整理整頓のため、カテゴリinitialization, batchConverter, batch-inner, batch-outer, io, mortor, variable creation, others を作った。作ったカテゴリとそれに属するメソッドについて簡単に以下に示す。batchConverterカテゴリのメソッドについては8.8にて述べる
- initialization カテゴリ
内容:インスタンスを初期化するメソッド群
メソッド名:initialize
これはインスタンスの生成時に自動で実行されるメソッドである。内部では次のような処理をしている。
initialize
super initialize. "スーパークラスのinitializeを実行"
self class initialize. "自分のクラスメソッドinitializeを実行"
"以下はインスタンス変数の初期化"
selectedBatNum := 0.
batchStorage := OrderedCollection ofSize: 15.
上記の最後の行のように、インスタンス変数の初期化はオブジェクトの生成によって行う必要があることもある。
- batchConverter カテゴリ
内容:スクリプトをバッチの書込み用にバイトストリームに変換するメソッド群
メッソド名:convertToBatch: player:, convertSentences: writeStream:,
convertConditionExp: writeStream:, findWordNum: from:,
getTokens:, isBlock:
- batch-inner カテゴリ
内容:バッチ処理の内部でのみ意味を持つメソッド群
メソッド名:batchReturn, batchTerminator, sendWait:
順に、Returnコマンド(これはC言語で言うreturn;のような役割を持つ)、Terminatorコマンド、WAITコマンドを送信するメソッドである。
- batch-outer カテゴリ
内容:主に通常モードで使用するバッチ処理に関連するメソッド群
メソッド名:pauseBatch, deleteBatch:, getBatchSize:,
registerBatch:, startBatchOnce:, startBatch: useStack:
順に、ループ停止コマンド、バッチの削除コマンド、バッチのページサイズを取得するコマンド、バッチを書き込むコマンド、一度だけバッチを実行するコマンド、バッチをループ実行するコマンドを送信するメソッドである。
- io カテゴリ
内容:入出力を処理するメソッド群
メソッド名:adInput: option:, daOutput: port:, daOff:
adInput: option:メソッドがA/D入力、daOutput: port:メソッドがD/A出力、daOff:メソッドがD/A出力の停止コマンドにそれぞれ対応している。基本的にプロトコルのコマンドに対応するメソッドは、全て内部でSerialPortMorphのsend:メソッド(RCMorphも継承して持っている)を使ってコマンドの送信を行っているだけである。例えばdaOff:メソッドは以下のようになっている。
daOff: port "portで指定したD/A出力を停止する"
(port < 0
or: [port > 255]) "パラメータの範囲チェック"
ifTrue: [^ nil]. "パラメータが不正"
self send: 24832 + port "コマンド送信"
- motor カテゴリ
内容:モータを制御するメソッド群
メソッド名:forward, back, rotateRight, rotateLeft, turnRight, turnLeft,
turnRightBack, turnLeftBack, forwardRoll:, backRoll:, brakeMortor:, stopMortor:
引数を必要とするメソッド(forwardRoll:, backRoll:, brakeMortor:, stopMortor:)が、表6.1に示したモータの動作ごとのコマンドに対応し、それ以外は表6.2に示したレスクロ専用の複数のモータを組み合わせた動作のコマンドに対応する。
- variable creation カテゴリ
内容:インスタンス変数への代入および参照を行うメソッド群
メソッド名:getSelectedBatNum, getBatchStorageAt:,
setSelectedBatNum:, setBatchStorage: at:
Xを変数名として代入のメソッド名をsetX, 参照のメソッド名をgetXで統一している。ただし、OrderedCollectionのオブジェクトであるbatchStorageに対しては、何番目の要素の代入/参照を行うのかを指定するための引数が必要となるため、単純なオブジェクトのためのメソッドより引数がひとつ多いものを用意している(Smalltalkではコロンの後に引数を書く。コロンの数だけ引数が必要である)。
- others カテゴリ
内容:その他の処理を行うメソッド群
メソッド名:halt, errorOut: title:
haltはレスクロのhaltコマンドに対応している。errorOut: title:メソッドはWorkspaceにエラー出力を行うメソッドで、主にスクリプトをバッチ処理に変換するメソッドの内部で使用している。
Deguchi Lab.
平成20年3月5日