2009年 春期 応用情報技術者試験 問8
通信販売用Webサイトの設計に関する次の記述を読んで、設問1〜3に答えよ。
P社では、新たな事業展開として、インターネットを用いた通信販売を開始することにした。通信販売のための販売用Webサイトは、新規に開発する。販売用Webサイト及び販売用Webサイト内で用いるショッピングカートに関する説明を次に示す。
【販売用Webサイト】
・インターネットに公開し、一般の顧客が買物に利用する。 ・顧客は、P社から付与される顧客IDでログインしてから買物をする。 ・顧客は、商品カタログを画面に表示し、ショッピングカートに商品を追加したり、ショッピングカートから商品を削除したりして、購入する商品を選ぶ。 ・顧客は、商品を選び終わったら、ショッピングカート内の商品の購入手続を行う。 ・商品には、通常商品と予約販売商品の2種類がある。 ・通常商品を購入した場合の配送手続では、即座に商品の配送処理が行われる。 ・予約販売商品を購入した場合の配送手続では、配送のための情報がデータベースに保存され、実際の配送処理は商品の発売開始日以降に行われる。 ・商品の配送処理は、既存の配送処理システムと連携することによって行う。販売用Webサイトは、購入された商品の情報を配送処理システムに通知する。配送処理システムは、通知された商品の情報をとりまとめて、配送業者に集配依頼の情報を送る。
【ショッピングカート】
・顧客がショッピングカートに商品を追加すると、追加された商品の在庫数を、追加された数量分だけ減らす。ただし、商品の在庫数が不足している場合は、ショッピングカートに商品を追加せず、在庫数も減らさない。 ・顧客がショッピングカートから商品を削除すると、削除された商品の在庫数を、削除された数量分だけ増やす。
販売用Webサイトの開発を行うに当たり、データベース及びショッピングカートの設計を次のように行った。
【データベースの設計】
販売用Webサイトで使用するデータベースには、商品在庫情報テーブル、ショッピングカート情報テーブル及び販売明細テーブルを用意する。
商品在庫情報テーブルには、商品名や単価などの商品に関する情報と、その在庫数を格納する。商品は、商品IDで一意に識別する。
ショッピングカート情報テーブルには、ショッピングカートに入っている商品の商品IDと数量を格納する。ショッピングカートは、顧客IDで一意に識別する。
販売明細テーブルには、顧客が購入した商品の情報を格納する。販売明細は、注文IDと商品IDの複合キーで一意に識別する。注文IDは、購入手続を行ったときに発行されるIDである。
なお、販売用Webサイトに用いるデータベースでは、トランザクション内でテーブルに対する更新アクセスが発生するとテーブル単位のロックがかかり、トランザクション終了時に、すべてのロックが解除される仕組みになっている。
【ショッピングカートの設計】
ショッピングカートに関連する部分のクラス図を図1に示す。また、顧客がショッピングカートに商品を追加してから、商品を購入するまでの流れを表したアクティビティ図を図2に示す。
記号 | 意味 |
---|---|
クラス名 | →コンポジション→ クラス 1 0..* 0以上の多重度 |
属性は、クラス内部からだけ参照可能 | |
操作は、ほかのクラスからも参照可能 | |
斜体で書かれた操作名は、操作の宣言だけ行われ、実装は行われないことを意味する。 | |
斜体で書かれたクラス名は、クラス内に、実装が行われない操作を含むことを意味する。 |
ショッピングカートは、返されたオブジェクトを属性に追加登録する。
商品の購入手続を行うとき、通常商品と予約販売商品では、処理の大まかな流れは同一だが、配送手続に関する処理が異なる。
ショッピングカートクラスの購入手続メソッドでは、最初に注文IDを発行する。次に、発行された注文IDを用いて、ショッピングカート内の商品の購入手続メソッドを個々に呼び出す。商品の購入手続メソッドの内部では、販売明細更新メソッドと、配送手続メソッドが順に呼び出される。このとき、販売明細更新メソッドはdクラスに実装されたメソッドが呼び出される。配送手続メソッドは、dクラスでは純粋f関数(a関数)として定義されているので、b先のクラスで実装されたメソッドが呼び出される。