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...)(マルチユーザにするのは、難しいが...)