Software Engineering Lecture s7

Menu Menu


先週の復習


シーケンス図と協調図

シーケンス図と協調図は、オブジェクト間の通信の様子を表す。

協調図はメッセージに順序付けのための番号が付加されている。

メッセージの表記の仕方は以下のようになっている。

    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 で制御する。

demos/widget を参考にすること


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


Shinji KONO / Thu Apr 17 12:47:16 2003