システムブラウザの中にクラス 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:) ) ))