■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                      2007年11月25日

    楽しいJava講座 - 初心者から達人へのパスポート
                  vol.080

                                セルゲイ・ランダウ
 バックナンバー: http://www.flsi.co.jp/Java_text/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


[このメールマガジンは、画面を最大化して見てください。]


========================================================
◆ 01.Tomcatのアプリケーション開発
========================================================


まず最初に、このインターネット・ショッピングのシステムには
どんなオブジェクトが必要か、ちょっと考えてみてください。

必要なオブジェクトといったら・・・、まず、商品がなければ
商売にならないですね。
それから、それを買うお客様がいなくても商売になりませんね。

ショッピング・カート(またはカゴ)はどうでしょうか?なくても
商売はできますが、あると便利ですね。便利なものは採用すること
にしましょう。

リアルな(現実の)お店では、商品を置く商品棚というオブジェク
トもありますが、これはインターネット・ショッピングの場合には
必要ないので無視しましょう。
(しいて言えば、商品棚はWebページ上では、検索した商品のリスト
を表示する表などが相当すると言えますが、これはHTML(もしくはJSP)
のタグで記述できるものなので、ここでは取り上げません。のちの
JSPのコーディングのときに説明します。)


では、リアルな(現実の)お店でお客様がショッピング・カートを
押しながら、商品棚の間を進んで行き、購入したい商品をカートの
中に放り込んでいくイメージを思いうかべてみましょう。
購入したい商品を一通りカートに放り込んだら、後はレジに行って
清算すれば、その商品は自分の物となり、持ち帰ることができます。

この時点で、売れた商品の数だけ在庫数が減り、代わりにお店には
お金が入ってくることになりますが、簡単のために在庫数は商品の
オブジェクトの属性として持たせることにし、お金のやり取りに
かかわるオブジェクトについては省略することにしましょう。


ところで、レジに行く前に、カートの中に入れていた商品を(購入
するつもりだったのを取りやめにして)商品棚に返すこともありま
すね。
インターネット・ショッピングのシステムでも、ショッピング・カート
に入れた商品はレジに通す前であれば、いつでも元に戻すことが
できるようにしましょう。

インターネット・ショッピングのシステムは、リアルな(現実の)
ショッピングと同様の購入手順にしなければならないというルールが
あるわけではありませんが、類似した仕組みにしておいたほうが
購入者にとってわかりやすいものになりますので、なるべくリアル
な(現実の)お店のイメージに近いものにすることが望ましいのです。

ただし、インターネット・ショッピングは基本的には通信販売の一種
であり、リアルなお店でのショッピングとは違います。
つまり、レジを通ってもその商品を持ち帰れるわけではなく、配達と
いう形態を取ることになりますし、支払いも直接現金を渡せるわけで
はなく、銀行振り込みやクレジット・カード支払いなどにしなければ
なりません。
また、リアルなお店のように匿名(氏名や住所などの個人情報をお店
に知らせないという意味で匿名)のお客様が取引をするということは
できず、必ずお客様の個人情報を明らかにする必要があります。

このような取引形態は、基本的には「注文」→「料金の支払い」→
「商品の配達」という手順(「料金の支払い」は「商品の配達」の後
にくることもある)を踏むことになりますから、これらの手順を管理
するためのオブジェクトも必要になります。

そのために、ここでは、注文というオブジェクトに属性として
「料金の支払い」や「商品の配達」の状態を記憶させることにしま
しょう。


さて、以上の(お客様(Customer)、商品(Item)、ショッピング・
カート(Shopping Cart)および注文(Order)の)オブジェクト
のうち、永続化させる必要があるもの(データベースなどにデータ
を保管しておく必要があるもの)はどれでしょうか。

ショッピング・カートだけは一時的なものですが、それ以外は基本的
には永続化しておく必要があります。
お客様や注文のデータは一時的なものと思うかもしれませんが、実際
には取引完了後、ずっとあとになってからも問い合わせや、なんらか
の調査が入ることがあるため、しばらくの間は残しておく必要がある
のです。というか、少なくとも、コンピューターの電源が切れたら
データが消失するというのでは困るものです。

なお、インターネット・ショッピングでは、普通、会員登録を行って
ショッピングする人と会員登録を行わずに(一回限りの利用という形で)
一時的に個人情報(氏名・住所など)を入力してショッピングを行う、
2種類のお客様を扱うようになっていますが、一時的なお客様もデータ
自体は会員と同じように扱われます。ただ、一時的である旨を示す属性
によって会員とは区別され、その情報が再利用されないだけです。
一方、会員の場合は、会員番号を入力すればデータベースから個人情報
が読み込まれ再利用されるので、再度個人情報を入力し直す必要はなく
なります。


では、永続化されるオブジェクトのためにデータベースのテーブルを
作っていきましょう。
わかりやすくするためにできるだけ単純化しますが、皆さんは(演習
として)できれば少しカラムを追加して、もう少し複雑な構造にして
みてください。


まず、お客様(Customer)のテーブルは下記のような構造にしましょう。

[テーブル名]:CUSTOMER
[カラム]:
 NUM(顧客番号、文字列、プライマリー・キー(主キー))
 NAME(顧客名、文字列)
 ZIPCODE(郵便番号、文字列)
 ADDRESS(住所、文字列)


続いて、商品(Item)のテーブルは下記のようにしましょう。

[テーブル名]:ITEM
[カラム]:
 NUM(商品番号、文字列、プライマリー・キー)
 NAME(商品名、文字列)
 PRICE(価格、整数)
 IMAGE(商品の写真のファイル名)
 CATEGORY(商品のカテゴリー、文字列)
 QUANTITY(在庫数、整数)

(本来は商品カテゴリーのテーブルを作ってそこに商品の分類の情報
を持たせ、そのプライマリー・キーをITEMテーブルの外部キーとして
組み込んでおくことが望ましいのですが、ここでは話を簡単にする
ために、直接カテゴリーの名前をITEMテーブルのカラムとして組み込ん
でおきます。)


注文(Order)のテーブルはちょっと複雑になります。

(次回に続く)


次回は注文のテーブルの構造を説明したあと、MySQLで実際にデータ
ベースとテーブルを作っていきます。


今回はここまでにします。
何か、わからないところがありましたら、下記のWebページまで質問を
お寄せください。


(続く)



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
★ホームページ:
      http://www.flsi.co.jp/Java_text/
★このメールマガジンは
     「まぐまぐ(http://www.mag2.com)」
 を利用して発行しています。
★バックナンバーは
      http://www.flsi.co.jp/Java_text/
 にあります。
★このメールマガジンの登録/解除は下記Webページでできます。
      http://www.mag2.com/m/0000193915.html
★このメールマガジンへの質問は下記Webページにて受け付けて
 います。わからない所がありましたら、どしどしと質問をお寄
 せください。
      http://www.flsi.co.jp/Java_text/
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Copyright (C) 2007 Future Lifestyle Inc. 不許無断複製