応用情報技術者試験 過去問 2009年(平成21年) 春期 午後 問8

通信販売用Webサイトの設計

P社では、新たな事業展開として、インターネットを用いた通信販売を開始することにした。通信販売のための販売用Webサイトは、新規に開発する。販売用Webサイト及び販売用Webサイト内で用いるショッピングカートに関する説明を次に示す。

販売用Webサイト

  • インターネットに公開し、一般の顧客が買物に利用する。
  • 顧客は、P社から付与される顧客IDでログインしてから買物をする。
  • 顧客は、商品カタログを画面に表示し、ショッピングカートに商品を追加したり、ショッピングカートから商品を削除したりして、購入する商品を選ぶ。
  • 顧客は、商品を選び終わったら、ショッピングカート内の商品の購入手続を行う。
  • 商品には、通常商品と予約販売商品の2種類がある。
  • 通常商品を購入した場合の配送手続では、即座に商品の配送処理が行われる。
  • 予約販売商品を購入した場合の配送手続では、配送のための情報がデータベースに保存され、実際の配送処理は商品の発売開始日以降に行われる。
  • 商品の配送処理は、既存の配送処理システムと連携することによって行う。販売用Webサイトは、購入された商品の情報を配送処理システムに通知する。配送処理システムは、通知された商品の情報をとりまとめて、配送業者に集配依頼の情報を送る。

ショッピングカート

  • 顧客がショッピングカートに商品を追加すると、追加された商品の在庫数を、追加された数量分だけ減らす。ただし、商品の在庫数が不足している場合は、ショッピングカートに商品を追加せず、在庫数も減らさない。
  • 顧客がショッピングカートから商品を削除すると、削除された商品の在庫数を、削除された数量分だけ増やす。

販売用Webサイトの開発を行うに当たり、データベース及びショッピングカートの設計を次のように行った。

データベースの設計

販売用Webサイトで使用するデータベースには、商品在庫情報テーブル、ショッピングカート情報テーブル及び販売明細テーブルを用意する。

商品在庫情報テーブルには、商品名や単価などの商品に関する情報と、その在庫数を格納する。商品は、商品IDで一意に識別する。

ショッピングカート情報テーブルには、ショッピングカートに入っている商品の商品IDと数量を格納する。ショッピングカートは、顧客IDで一意に識別する。

販売明細テーブルには、顧客が購入した商品の情報を格納する。販売明細は、注文IDと商品IDの複合キーで一意に識別する。注文IDは、購入手続を行ったときに発行されるIDである。

なお、販売用Webサイトに用いるデータベースでは、トランザクション内でテーブルに対する更新アクセスが発生するとテーブル単位のロックがかかり、トランザクション終了時に、すべてのロックが解除される仕組みになっている。

ショッピングカートの設計

ショッピングカートに関連する部分のクラス図を図1に示す。また、顧客がショッピングカートに商品を追加してから、商品を購入するまでの流れを表したアクティビティ図を図2に示す。

商品クラスと商品在庫管理クラスは、aクラスとして定義する。それをbするcクラスとして、通常商品用と予約販売商品用のクラスを定義する。

例えば、予約販売商品をショッピングカートに追加する場合は、予約販売商品の商品IDと数量を指定して、ショッピングカートクラスの商品追加メソッドを実行する。

商品追加メソッドでは、追加される商品が予約販売商品であることを判定し、予約販売商品在庫管理クラスのインスタンスを作成して在庫取得メソッドを呼び出す。在庫取得メソッドの中では、在庫数についてデータベースの書換えを行なった後、dクラスのインスタンスを作成し、eクラスの型で返す。ショッピングカートは、返されたオブジェクトを属性に追加登録する。

商品の購入手続を行うとき、通常商品と予約販売商品では、処理の大まかな流れは同一だが、配送手続に関する処理が異なる。

ショッピングカートクラスの購入手続メソッドでは、最初に注文IDを発行する。次に、発行された注文IDを用いて、ショッピングカート内の商品の購入手続メソッドを個々に呼び出す。商品の購入手続メソッドの内部では、販売明細更新メソッドと、配送手続メソッドが順に呼び出される。このとき、販売明細更新メソッドはdクラスに実装されたメソッドが呼び出される。配送手続メソッドは、dクラスでは純粋f関数(a関数)として定義されているので、b先のクラスで実装されたメソッドが呼び出される。

クラス図
図1 クラス図
アクティビティ図
図2 アクティビティ図
出典:平成21年度 春期 応用情報技術者試験 午後 問8