このセミナーのポイント
モデルとコードを結びつける技術が大事1. モデリング2. プログラミング3. これらを結びつける技術
1.モデリング 2.プログラミング
3.両方を結びつける技術できるプログラマの技ではなく、誰もが使えるルール、利用技術
本日の予定
• 構造のモデルとコードとの対応づけ• コードの構造をモデル図で表してみよう• システムの構造を考えてモデルを直してみよう• 構造のモデルに対応したコードを作ってみよう
• 振舞いのモデルとコードとの対応づけ• 振舞いを表すモデルを作ってみよう• 振舞いのモデルに対応したコードを作ってみよう
実際にプログラミングして作るわけではなく、「作ったらこうなる」というコードを紹介します
誰が何をするコードか、わかりますか?
void tsk1(VP_INT exinf){ecrobot_set_motor_speed(NXT_PORT_A, 40);ecrobot_set_motor_speed(NXT_PORT_C, 40);
while(!ecrobot_get_touch_sensor(NXT_PORT_S1)){}
ecrobot_set_motor_speed(NXT_PORT_A, -40);ecrobot_set_motor_speed(NXT_PORT_C, -40);
systick_wait_ms(2000);
ecrobot_set_motor_speed(NXT_PORT_A, 0);ecrobot_set_motor_speed(NXT_PORT_C, 0);
ext_tsk();} ※tsk1(...)は、main関数のようなも
のと思ってください※この関数の終わりでは、ext_tskを呼ぶ決まりです
sample01.c
モノと働きを抜き出してみよう
• 使うもの• 模造紙、ポストイットノート(2色)、PROCKEYまたはマジック
• 作業手順• グループで作業します1. コードから、モノを表すことばを見つけ出します2. ポストイットに四角を描いてその名前を書きます3. コードから、働きを表すことばを見つけ出します4. ポストイットに楕円を描いてその名前を書きます
バンパーtsk1 set_motor_speed
「モノ」の表記法 「働き」の表記法
astah* で描いたsample01のクラス図
sample01のクラス図
• 「荷物を運搬する」とわかりますか• 「走行する」プログラムとわかりますか• 「前進する」などロボットの働きを指示していますか
振舞いを表すモデル
• 振舞いのモデル• システムやコードの動き方を説明するモデルです• ステートマシン図(状態遷移図・状態遷移表)• シーケンス図• アクティビティ図• など
• ステートマシン図• 状態とイベントに着目して振舞いを整理する図です• できごと(イベント)を待っている場所を「状態」と捉えます
• イベントが発生(発火)したときに実行する処理が「アクション」です