システムブラウザの中にクラス Player を選択し、テンプレートの instance 側にカテゴリ SerialPortPlayerを作り、このカテゴリの下にclosePort, openPort:, send:, wait:, receive, getPortNumber, setPortNumber:, getReceivedData, setReceivedData: といったインスタンスメソッドを作った。その内容は次のように成る。
closePort
self costume closePort
これはプレイヤー内のメソッドclosePortとシリアルポートモーフ内のメソッドclosePortを一対一対応させる目的で作った。
他のメソッドも同じようなパターンである。
これで、シリアルポートを制御するモーフをクラス化する事が出来た。SerialPortMorphのインスタンスのビューワーの中に、コマンドsend, waitなどとインスタンス変数receivedData, portNumberが表示するために、次のようなインタフェース用メソッドを クラスSerialPortMorphの中のクラスメソッドとして作成した。
additionsToViewerCategories
^#(#(#シリアルポート
#(#(#command #send: 'send' #Number)
#(#command #receive '値を受け取る')
#(#command #wait: '待つ' #Number)
#(#command #openPort: 'ポートを開く' #Number)
#(#command #closePort 'ポートを閉まる')
#(#slot #portNumber 'set portNumber' #Number #readOnly
#Player #getPortNumber #Player #setPortNumber:)
#(#slot #receivedData 'set receivedData' #Number #readOnly
#Player #getReceivedData #Player #setReceivedData:)
)
))