Software Engineering Lecture s7
Menu Menu
先週の復習
- 概念図
- Use case図
シーケンス図と協調図
シーケンス図と協調図は、オブジェクト間の通信の様子を表す。
協調図はメッセージに順序付けのための番号が付加されている。
メッセージの表記の仕方は以下のようになっている。
return := message(parameter : parameterType) : returnType
さらに繰り返しの記号を付けることもできる。
1*: [i := 1..10] li := nextLineItem(): SaleLineItem
問題7.1
カードゲームのオブジェクトには、カードの集合を表すカードパイルがある。カードパイルにopen_all()を送ると、そのカードパイルのカード全体がオープンされる様子を協調図で示せ。
Perl/Tk
Perl/Tk はPerlを使ってX-Windowを操作するオブジェクト指向ライブラリである。Perl/Tkの例題
use Tk;
$top = MainWindow->new();
$text = $top->Text();
$text->pack();
$text->insert('end',"test string");
$text->see('end');
$top->update;
$top->MainLoopl
Widget
Perl/Tk では、Wigetという部品を組み合わせてアプリケーションを作る。部品の画面表示の組み合わせ方は、pack で制御する。
- expand 伸び縮みするかどうか
- fill 埋めるかどうか
- side どちらに寄せるか
Perl/Tkによる記述
Perl/Tk では、MainWindow を作り、そこに、いろいろなwidgetをpack していく。
my $main = MainWindow->new();
とすれば、MainWindowができる。MainWindowのインスタンスとして、いろいろなものを使うことができる。
| Label | 文字を印として置く |
| Text | 編集用のテキスト |
| Entry | 入力カラム |
| Canvas | 図形表示 |
| Frame | いくつかのwidgetをまとめる |
Canvas とタグ
Canvasには以下のような図を書くことができる。
| oval | 楕円 |
| rectangle | 箱 |
| line | 線 |
| polygon | 多角形 |
| bitmap | イメージ |
| text | テキスト |
これらは、CanvasにタグやIDで指定することによって移動したり変形したりすることができる。
| $canv->move($ball, $deltax, $deltay); | 移動 |
| $canvas->itemconfigure($view,-fill=>'black'); | 色などの変更 |
| $canvas->delete($view); | 削除 |
これらに関しては man canvas でもだいたいのことを知ることができる。
Perl/Tkとオブジェクト
Perl/Tk 自体は、個々のwidgetがオブジェクトとなっている。Perl/Tk でのwidgetのアクセスは、統一的な方法がある。
new -> pack -> itemconfigure
これらは、オブジェクトのインタフェースである。Perl には、インタフェースを定義する構文はないが、インタフェースを意識してプログラムすることはできる。
Canvas の中の図形は、Perl ではPerlのオブジェクトではない。実際、それらの図形は、オブジェクトIDではなく、タグによってアクセスされている。そして、タグに Perl のメッセージを送ることは出来ない。これらをオブジェクトとして使うためには、オブジェクトの皮をかぶせる必要がある。
問題7.2
CardPlay の中のオブジェクトの振る舞いの一部を、シーケンス図および協調図で記述してみよ。また、CardPlay ライブラリを使用して、簡単なカードゲームを作ってみよう。(Ex. Black Jack, Poker, Solitare...)(マルチユーザにするのは、難しいが...)