課題ということは、あまり答えすぎても本人のためにならないかもと思いつつも、とりあえず考え方の筋道を述べてみます。
>レンタルビデオ屋のシステムを作ります。
まずは、データベースをどのように構築するかが問題でしょう。
ざっと見たところでは
会員table(username(char), userid(int), nyukaidate(timestamp), kasidasi_flag(int), addr(varchar), tell(char))
貸し出しリスト(userid(int), vvid(int), kasidate(timestamp), henkyakuyotei(timestamp), makicheck(boolean))
商品table(vvname(char), vvid(int), vv(char), konyudate(timestamp), kasidasi_flag(boolean))
※()内は field(type)
この3つのtableが必要かと思います。
→これらにアクセスするclassをそれぞれ構築するとよさそうですね。
そして、それらを操作するメソッドをクラスに持たせる。
メソッドの多重定義は、同じ名前で、引数の数や型を変えて、似た操作のものを作るわけだから、id からtable情報を取り出す関数とnameからtable情報を取り出す関数とを考えれば、必然的に使うことになるでしょう。
この方法は覚えると結構重宝ですよね。
継承は、商品クラスを継承して、dvdクラスとvideoクラスを作るというのが
割とすぐ思いつきますね。
で、全体像は以下のような感じかな?
今、手元にリファレンスがないので、かなりおおざっぱに枠組みだけ示してみました。
予約語の記述間違いなどは、ご容赦願います。
というか、自分で調べて完璧になるようにしてください。
public rental extends Frame{
rental_system system;
public void main(arg[],,){ //引数の記述がうろ覚え
// rental_system の初期化
system = new rental_system();
//次に frame構築 操作パネル作成 (省略)
}
}
class rental_system{
public rental_system(){
//初期化 =システムの起動 ー> databaseへのアクセス確立
}
class syohin{
// 商品table へのアクセス
public syohin(){
// 商品table へのアクセス確立
}
public arraylist getSyohin(int sid){
// 商品id sidから 商品情報をarraylistで得る
}
public arraylist getSyohin(string sname){
// 商品名 snameから 商品情報をarraylistで得る
// getSyohin多重定義
}
public int setSyohin( string sname, string date){
// 商品名 sname, 購入日 date で新たに商品を登録し、作成された商品id を返す。
// 商品idは、登録順に連番などとする。
// 同名複数商品の場合は。。。製造番号か何か、もう一つ項目が要りそう
}
}
class video extends shohin{
// 継承
public video(){
super(); // 商品table へのアクセス確立
// 貸し出しリストへのアクセスも確立
}
public boolean makicheck(int sid){
// 巻き戻しチェック
// 返却時巻き戻してあれば、trueを設定;
// 巻き戻していなければfalseを設定;
}
}
class user{
// 会員情報へのアクセス
public user(){
// 会員table へのアクセス確立
}
public arraylist getUser(int sid){
// 会員id sidから 会員情報をarraylistで得る
}
public arraylist getUser(string sname){
// 会員名 snameから 会員情報をarraylistで得る
// getUser多重定義
}
public int setUser( string sname, string date){
// 会員名 sname, 登録日 date で新たに会員を登録し、作成された会員id を返す。
// 登録済みならば、登録済みidを返す。同姓同名対策が必要。
}
public int setRental(int sid, int r){
// sidの会員が 借りた(1~3)または返した(-1~-3)個数r を元のkasidasi_flagに足して、最終貸し出し数を返す
}
}
// 貸し出しリスト (省略)
}
お礼
課題であるからこそ自分で解かなければ意味がないと思いながらも、解き方・導き方が見当もつかなかったため丸投げの投稿になってしまいました。 それにもかかわらずお答えいただきありがとうございます。 コメント付でアウトラインを教えていただけたので、大変分かりやすく、それをもとに解くことが出来ました。 ありがとうございました。