魔術師見習いのノート

プロフィール

魔術師見習い
Author魔術師見習い-_-.
Twitter魔術師見習い

コンピュータ関係のメモを主に書きます.

MENU

UML2.4(11) シーケンス図

投稿日:
タグ:

シーケンス図

シーケンス図とは,オブジェクト(クラス)間の相互関係を時系列的に表現したダイアグラムのことである。 シーケンス図の構成要素は次の通りである。

実行指定
オブジェクトの操作が呼び出されている時間。
ライフライン
使用されていないがオブジェクトがまだ存在していることを表す。
メッセージ
同期メッセージ
呼び出し先の処理が終わる(返事が返ってくる)のを待って,処理を行う場合のメッセージパッシング。
リプライメッセージ
返事。処理が終わったことを伝えるためのメッセージ。
reply
非同期メッセージ
呼び出し先の処理を待たずに処理の継続や処理の終了を行う場合のメッセージパッシング。
複合フラグメント
種類説明
loop繰り返し文
alt条件文
ステレオタイプ

分析

概念クラス図
概念シーケンス図

設計

実装クラス図
実装シーケンス図

実装

Book.java
class Book {
  /*- 属性 -*/
  /** タイトル。 */
  private String title;
  /** 著者。 */
  private String author;

  /*- 操作 -*/
  /**
   * コンストラクタ。
   * @param title タイトル。
   * @param author 著者。
   */
  Book(String title, String author){
    this.title = title;
    this.author = author;
  }

  /**
   * 本のタイトルを取得。
   * @return 本のタイトル。
   */
   public String getTitle(){
     return this.title;
   }

  /**
   * 本の著者を取得。
   * @return 本の著者。
   */
   public String getAuthor(){
     return this.author;
   }
}
Library.java
import java.util.*;

class Library {
  /*- 属性 -*/
  /** 図書館名。 */
  private String name;
  /** 住所。 */
  private String address;
  /** 本リスト。 */
  private ArrayList<Book> book_list;


  /*- 操作 -*/
  /**
   * コンストラクタ。
   * @param name 図書館名。
   * @param address 住所。
   */
  public Library(String name, String address){
    this.name = name;
    this.address = address;
    this.book_list = new ArrayList<Book>();
  }

  /**
   * 本を借りる。
   * @param title 借りたい本のタイトル。
   */
  public Book lendBook(String title){
    Book book = searchBook(title);
    if (book!=null){
      this.book_list.remove(book);
      return book;
    }else{
      return null;
    }
  }
  
  /**
   * 本を追加する。
   * @param book 追加する本
   */
  public void addBook(Book book){
    this.book_list.add(book);
  }

  /**
   *
   */
  private Book searchBook(String title){
    Iterator<Book> it = this.book_list.iterator();
    while (it.hasNext()){
      Book book = it.next();
      if (book.getTitle()==title){
        return book;
      }
    }
    return null;
  }
}
Client.java
class Client {
  /*- 属性 -*/
  private Library lib;
  
  /*- 操作 -*/
  /** エントリポイント */
  public static void main(String args[]){
    Client client = new Client();
    client.init();
    client.exec();
  }
  /** デフォルトコンストラクタ。 */
  public Client(){
  }
  /** 1つ目の実行指定 */
  private void init(){
    final String[][] BOOKS = {{"たいとるA", "山田太郎"},
                              {"たいとるB", "鈴木次郎"},
                              {"たいとるC", "佐藤三郎"}};

    lib = new Library("市立図書館", "XXX-YYY ○○市△△町1-1-1");
    
    for (String[] book : BOOKS){
      lib.addBook(book[0], book[1]);
    }
  }
  /** 2つ目の実行指定 */
  private void exec(){
    lib.lendBook("たいとるB");
  }
};

一覧