挑戦問題を格納しました

This commit is contained in:
m-mun
2026-09-16 12:25:03 +09:00
parent 093c94fcb8
commit 43ef034dd9
153 changed files with 12477 additions and 0 deletions

387
CUI_BlackJack/README.txt Normal file
View File

@@ -0,0 +1,387 @@
○システム名
ブラックジャック
○システム説明
通常のブラックジャックです。
○納品物
作成したプログラム
1段階目(Cardクラスの作成)
以下のクラスを作成する。
実行できないのでコンパイルエラーがなくなれば1段階目は完成とする。
・クラス名:Card
・フィールドはそれぞれint型のsuitとrankを定義。
  suit:マークのこと。0:スペード、1:ハート、2:ダイヤ、3:クラブとする。
  rank:数字のこと。1:A、11:J、12:Q、13:Kとする。
・Cardクラスはカプセル化し、フィールドはprivateとし、セッターメソッドを作成せず、
 publicなゲッターメソッドのみ作成する。
・セッターメソッドを作成しない代わりにsuitとrankを引数に持つコンストラクタを作成し、
 コンストラクタの中でフィールドにセットする。
2段階目(カード内容の表示)
Cardクラスに以下のpublicメソッドを追加実装する。
・メソッド名:toString
・引数   :なし
・戻り値  :カードのマークと数字を以下の形式の文字列でリターンする
        ハート 3
        ダイヤ A
        クラブ 10
        スペード Q
Test1クラスを作成し、mainメソッドの中で以下を実行する。
・Cardクラスのインスタンスを以下のように4個作成し、c1~c4に格納する。
        c1:ハート 3
        c2:ダイヤ A
        c3:クラブ 10
        c4:スペード Q
・System.out.println()メソッドの引数にc1~c4を指定し、以下のように表示する。
<実行例>
ハート 3
ダイヤ A
クラブ 10
スペード Q
3段階目(Deckクラスの作成)
以下のクラスを作成する。
実行できないのでコンパイルエラーがなくなれば3段階目は完成とする。
・クラス名:Deck  ←ひと組のカード、という意味
・フィールドはArrayList<Card>型のcardListを定義。
・引数なしのコンストラクタを作成し、以下の処理を行う。
 〇cardListにArrayList<Card>のインスタンスを作成する
 〇二重のfor文を使用して52枚のCardクラスのインスタンスをcardListに追加する
・Deckクラスのフィールドはprivateとするが、ゲッター・セッターメソッドは作成しないこととする。
4段階目(shuffleメソッド、drawCardメソッドの実装)
Deckクラスに以下のpublicメソッドを追加実装する。
実行できないのでコンパイルエラーがなくなれば3段階目は完成とする。
・shuffleメソッド
 〇引数 :なし
 〇戻り値:なし
 〇機能 :cardListの中の52枚のカードをランダムに並び替える
・drawCardメソッド
 〇引数 :なし
 〇戻り値:cardListにカードが残っていれば先頭のカード(cardList[0])をリターン
      cardListにカードが残っていなければnullをリターン
 〇機能 :リターンした先頭のカードはcardListから削除し、2枚目以降を前につめる(ArrayListの機能を利用すること)
5段階目(シャッフルしたカードを表示)
Test2クラスを作成し、mainメソッドの中で以下の処理を行う。
・Deckクラスのインスタンスを作成する
・作成したDeckインスタンスをシャッフルする
・シャッフルしたDeckインスタンスをカードがなくなるまで以下を繰り返す
 〇先頭のカードを引く
 〇引いたカードを画面に表示する
<実行例>
ハート 3
ダイヤ A
  :
クラブ 10
スペード Q  ←全部で52行表示される
6段階目(Handクラスの作成)
以下のクラスを作成する。
実行できないのでコンパイルエラーがなくなれば6段階目は完成とする。
・クラス名:Hand  ←トランプの参加者、という意味
・以下のフィールドを定義する
 〇hands :ArrayList<Card>型、protected ←このhandsは手札の意味
 〇name :String型、protected
・以下の内容のpublicなコンストラクタを定義する。
 〇引数 :名前
 〇機能 :handsにArrayList<Card>のインスタンスを作成し、nameに引数の名前をセットする
・以下の内容のpublicなdrawCardメソッドを定義する。
 〇引数 :Deckクラスのインスタンス
 〇戻り値:なし
 〇機能 :Deckインスタンスから1枚カードを引き、handsに追加する
・以下の内容のpublicなshowHandメソッドを定義する。
 〇引数 :なし
 〇戻り値:なし
 〇機能 :handsの中の全てのカードを以下の形式で画面に表示する
<nameの値>の手札
 ⇒ ハート 3
 ⇒ ダイヤ A
・handsはゲッター、セッターは不要、nameはゲッターメソッドのみ作成する
7段階目(Playerクラスの作成)
以下のクラスを作成する。
実行できないのでコンパイルエラーがなくなれば7段階目は完成とする。
・クラス名:Player  ←Handクラスを継承する
・以下の内容のpublicなコンストラクタを定義する。
 〇引数 :名前
 〇機能 :引数の名前を使って親クラスのコンストラクタを呼び出す
・以下の内容のpublicなselectメソッドを定義する。  ←HitかStandかの選択をする意味
 〇引数 :Deckクラスのインスタンス
 〇戻り値:boolean型。Hitを選択した場合false、Standを選択した場合true。
 〇機能 :「どうしますか?」「1:Hit - もう一枚カードを引く」「2:Stand - この手札で勝負」の3行を表示する。
      キーボードから入力させ、1か2以外であれば「ちゃんとやって」を表示し、再入力する。
      1を入力した場合はデッキから1枚カードを引き、手札に追加する。
8段階目(Standするまで繰り返し)
BlackJackクラスを作成し、mainメソッドで以下の処理を行う。
・Playerインスタンスを名前を「あなた」で作成する
・Deckクラスのインスタンスを作成する
・作成したDeckインスタンスをシャッフルする
・Playerが2枚カードを引く
・以下の処理をbreakが実行されるまで繰り返す。
 〇Playerの手札を表示する
 〇区切りの「**********」を表示する
 〇Playerインスタンスのselectメソッドを呼び出し、Standを選択したらループを抜ける
・Standが選択されたら区切りの「@@@@」を表示する
<実行例>
あなたの手札
 ⇒ ハート A
 ⇒ スペード 5
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
3            ←正しくない入力の場合
ちゃんとやって
1            ←Hitを入力の場合
あなたの手札
 ⇒ ハート A
 ⇒ スペード 5
 ⇒ スペード J
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
2            ←Standを入力の場合
@@@@
9段階目(合計値表示)
Handクラスにprotectedのフィールドtotalを追加する。
totalはセッターは作成せず、ゲッターメソッドのみ作成する。
Handクラスに以下のメソッドを追加する。
・calculateTotalメソッド private。
 〇引数 :なし
 〇戻り値:なし
 〇機能 :handsの中のカードのrankをすべて足し合わせる。
      ただし、Aは11、J~Kは10と計算する。
      合計が21を超えた場合、最大でhandsの中のAの数だけ10を減算する。
・isNaturalBlackJackメソッド public。
 〇引数 :なし
 〇戻り値:ナチュラルブラックジャックならtrue、違う場合はfalse
 〇機能 :totalが21で手札の枚数が2のときナチュラルブラックジャックと判定する。
HandクラスのdrawCardメソッドの最後でcalculateTotalメソッドを呼び出す処理を追加する。
BlackJackクラスのmainメソッドで、Playerの手札を表示した後、以下の処理を追加する。
・PlayerインスタンスのgetTotalメソッドを使って合計値を表示する
「**********」を表示した後、以下の処理を追加する。
・ナチュラルブラックジャックか判定し、trueなら「ナチュラルブラックジャック!」を表示し、ループを抜ける
・合計値が21を超えていたら「Busted!」を表示し、ループを抜ける
<実行例>
あなたの手札
 ⇒ ハート 3
 ⇒ ダイヤ 7
合計値:10
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
1
あなたの手札
 ⇒ ハート 3
 ⇒ ダイヤ 7
 ⇒ ハート 9
合計値:19
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
1
あなたの手札
 ⇒ ハート 3
 ⇒ ダイヤ 7
 ⇒ ハート 9
 ⇒ スペード 3
合計値:22
**********
Busted!
@@@@
10段階目(Dealerクラスの作成)
以下のクラスを作成する。
実行できないのでコンパイルエラーがなくなれば10段階目は完成とする。
・クラス名:Dealer  ←Handクラスを継承する
・以下の内容のpublicなコンストラクタを定義する。
 〇引数 :なし
 〇機能 :名前を「ディーラー」として親クラスのコンストラクタを呼び出す
11段階目(ディーラーの手札表示)
Cardクラスにboolean型のflgUpフィールドを追加し、初期値はtrueとする。
追加したflgUpはprivateとし、publicなゲッター、セッターメソッドを作成する。
CardクラスのtoStringメソッドで、カードが裏になっている場合は「???????」を
リターンするように修正する。
Handクラスに以下のメソッドを追加する。
 〇メソッド名:getCard public
 〇引数   :index(先頭0)
 〇戻り値  :手札のindex枚目のカード
 〇メソッド名:showHand public
 〇引数   :boolean型の公開フラグとlong型のミリ秒
 〇戻り値  :なし
 〇機能   :handsの中の全てのカードを以下の形式で画面に表示するが、
        1行表示するたびに引数のミリ秒だけsleepする。
        また、1行の表示内容は公開フラグがtrueの場合は以下のようにする。
<nameの値>の手札を公開します。
HandクラスのもともとあったHandクラスの引数なしのshowHandメソッドは上記で追加したメソッドを
falseと0Lの引数で呼び出すのみとする。
BlackJackクラスのmainメソッドで、以下のよう変更する。
・Prayerクラスのインスタンス作成をやめ、、Hand型の長さ2の配列hands(参加者の意味)を作成し、
 [0]にDealerクラスの、[1]にPlayerクラスのインスタンスを作成するように変更する。
・参加者全員にdrawCardメソッドを使って2枚ずつカードを配る。
・ディーラーの手札の2枚目は裏にするため、CardクラスのsetFlgUpメソッドを使い、false(裏)にする。
・ディーラーの手札をshowHandメソッドで表示し、区切りの「**********」を表示する。
・ディーラーの手札の表示が終わったら2枚目を表に戻しておく。
・プレイヤーがStandかBustしたあと、
 公開フラグをtrue、ミリ秒を1000にしてディーラーの手札を表示する。
<実行例>
ディーラーの手札
 ⇒ ダイヤ A
 ⇒ ???????
**********
あなたの手札
 ⇒ ハート K
 ⇒ スペード 2
合計値:12
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
1
あなたの手札
 ⇒ ハート K
 ⇒ スペード 2
 ⇒ ハート 3
合計値:15
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
2
@@@@
ディーラーの手札を公開します。
 ⇒ ダイヤ A
 ⇒ クラブ 3
12段階目(ディーラーの合計表示)
Dealerクラスに以下のpublicなメソッドを追加する。
 〇メソッド名:drawAdditionalCard
 〇引数   :Deckインスタンス
 〇戻り値  :なし
 〇機能   :totalが17未満である間、カードを1枚引く
BlackJackクラスのmainメソッドで以下を修正する。
・プレイヤーがカードを引き終えた後、
 プレイヤーがBustしていなければDealerクラスのdrawAdditionalCardを呼び出す。
・ディーラーの手札を表示後、ディーラーの合計値を表示する。
<実行例>
ディーラーの手札
 ⇒ ダイヤ A
 ⇒ ???????
**********
あなたの手札
 ⇒ ハート K
 ⇒ スペード 2
合計値:12
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
1
あなたの手札
 ⇒ ハート K
 ⇒ スペード 2
 ⇒ ハート 3
合計値:15
**********
どうしますか?
1:Hit - もう一枚カードを引く
2:Stand - この手札で勝負
2
@@@@
ディーラーの手札を公開します。
 ⇒ ダイヤ A
 ⇒ クラブ 3
 ⇒ ハート 2
 ⇒ ダイヤ 3
合計:19
13段階目(勝敗表示)
Dealerクラスに以下のpublicなメソッドを追加する。
 〇メソッド名:compareTo
 〇引数   :Playerインスタンス
 〇戻り値  :ディーラーが勝ちなら0より大きい整数、
        プレイヤーが勝ちなら0より小さい整数、
        引き分けなら0
 〇機能   :プレイヤーがBustなら無条件にディーラーの勝ち
        プレイヤーがBustでなく、ディーラーがBustならプレイヤーの勝ち
        どちらか一方がナチュラルブラックジャックならその人が勝ち
        上記以外は合計値が高い方が勝ち
BlackJackクラスのmainメソッドで、ディーラーの合計値を表示後、以下の処理を追加する。
・compareToメソッドの戻り値に応じ、以下のいずれかを表示する。
<プレイヤーの名前>は勝ちです。
<プレイヤーの名前>は負けです。
<プレイヤーの名前>は引き分けです。
14段階目(掛け金計算)
Handクラスに以下のpublicなメソッドを追加する。
 〇メソッド名:clearHands()
 〇引数   :なし
 〇戻り値  :なし
 〇機能   :手札を全部削除する
Playerクラスにint型のmoneyフィールドとbetMoneyフィールドを追加する。
どちらもprivateとし、セッターは作らず、ゲッターメソッドのみpublicのみで作成する。
Playerクラスのコンストラクタの引数にmoneyを追加し、引数のmoneyをそのままフィールドにセットする
Playerクラスに以下のpublicなメソッドを追加する。
 〇メソッド名:addMoney
 〇引数   :加算金額
 〇戻り値  :なし
 〇機能   :moneyフィールドに引数の加算金額を加える。
 〇メソッド名:bet
 〇引数   :なし
 〇戻り値  :なし
 〇機能   :キーボードから掛け金を入力させ、以下のエラーの場合は対応するエラーメッセージを
        表示して再入力させる。エラー出なければbetMoneyに設定する。
         ●int型に変換できない
           →数値を入力してください
         ●0円以下
           →1以上にしてね!
         ●持ち金(money)を超えている
           →そんなにお金持ってないでしょ!
BlackJackクラスのmainメソッドに以下の処理を追加する。
・最初に以下を表示する
  全5回ゲームを行います。
  ※ただし持ち金が無くなった時点でゲーム終了です。
・Playerのインスタンス作成時、初期の持ち金10000円とする。
・以下の処理を5回繰り返す。
 〇ゲームの最初に以下を表示する
  (一行空行をあける)
  <回数>回目のゲームを開始します。
  BET金額を入力してください。(持ち金:<プレイヤーの持ち金>円)
 〇Playerクラスのbetメソッドで掛け金を入力する。
 〇区切り線「==========================================================」を表示する
 〇12段階目の処理を行う。ただし、各参加者にカードを2枚ずつ配る前に全員の手札を削除する。
 〇勝敗表示は以下とする。
<プレイヤーの名前>は勝ちです。配当金をお渡しします。
<プレイヤーの名前>は負けです。掛け金は没収します。
<プレイヤーの名前>は引き分けです。掛け金を払い戻します。
 〇負けの場合は持ち金から掛け金を減算、引き分けの場合は±0、
  勝ちの場合は持ち金に掛け金を加算する。
  ただし、プレイヤーがナチュラルブラックジャックで勝った場合は掛け金を1.5倍して加算。
 〇清算した結果、持ち金が0になったら以下を表示してプログラムを終了する。
お金がありません。。。もう終わりです。
 〇5回ゲームしたら最後に以下の表示をしてプログラムを終了する。
あなたのスコアは<持ち金>円でした
<以下、時間が余った人向け>
15段階目(例外判定)
例外処理を入れないといけないところを考えて適切に処理する
例)デッキからカードを引こうとしたらもうデッキにカードがない場合 etc
16段階目(複数のプレイヤー)
実際のカジノでは1人のディーラーが複数のプレイヤーと同時にゲームするのが普通。
プレイヤーが複数でもゲームできるようにする。
17段階目(特別ルール)
スプリットやインシュランスなどの特別ルールを実装する。
ルールはネット等で調べること。どのルールを実装するかは開発者に任せる。

View File

@@ -0,0 +1,2 @@
java -jar BlackJack.jar
pause

View File

@@ -0,0 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>すべてのクラス</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">すべてのクラス</h1>
<div class="indexContainer">
<ul>
<li><a href="hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス" target="classFrame">HitAndBlow</a></li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>すべてのクラス</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">すべてのクラス</h1>
<div class="indexContainer">
<ul>
<li><a href="hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス">HitAndBlow</a></li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,121 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>定数フィールド値</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u5024";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li><a href="index-all.html">索引</a></li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?constant-values.html" target="_top">フレーム</a></li>
<li><a href="constant-values.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="定数フィールド値" class="title">定数フィールド値</h1>
<h2 title="コンテンツ">コンテンツ</h2>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li><a href="index-all.html">索引</a></li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?constant-values.html" target="_top">フレーム</a></li>
<li><a href="constant-values.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,121 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>非推奨のリスト</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="\u975E\u63A8\u5968\u306E\u30EA\u30B9\u30C8";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li class="navBarCell1Rev">非推奨</li>
<li><a href="index-all.html">索引</a></li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">フレーム</a></li>
<li><a href="deprecated-list.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="非推奨のAPI" class="title">非推奨のAPI</h1>
<h2 title="コンテンツ">コンテンツ</h2>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li class="navBarCell1Rev">非推奨</li>
<li><a href="index-all.html">索引</a></li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">フレーム</a></li>
<li><a href="deprecated-list.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,218 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>APIヘルプ</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="API\u30D8\u30EB\u30D7";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li><a href="index-all.html">索引</a></li>
<li class="navBarCell1Rev">ヘルプ</li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?help-doc.html" target="_top">フレーム</a></li>
<li><a href="help-doc.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">APIドキュメントの構成</h1>
<div class="subTitle">このAPI (Application Programming Interface)ドキュメントには、次に説明するナビゲーション・バーにある項目に対応するページが含まれます。</div>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<h2>パッケージ</h2>
<p>各パッケージには、そのパッケージのクラスおよびインタフェースのリストと、それぞれのサマリーを含むページがあります。このページは6つのカテゴリで構成されます。</p>
<ul>
<li>インタフェース(イタリック)</li>
<li>クラス</li>
<li>列挙型</li>
<li>例外</li>
<li>エラー</li>
<li>注釈型</li>
</ul>
</li>
<li class="blockList">
<h2>クラスまたはインタフェース</h2>
<p>各クラス、インタフェース、ネストされたクラスおよびネストされたインタフェースには個別のページがあります。各ページには次のように、クラスまたはインタフェースの説明と、サマリー表およびメンバーの詳細説明が含まれます。</p>
<ul>
<li>クラス階層表示</li>
<li>直系のサブクラス</li>
<li>既知のサブインタフェースのリスト</li>
<li>既知の実装クラスのリスト</li>
<li>クラスまたはインタフェースの宣言</li>
<li>クラスまたはインタフェースの説明</li>
</ul>
<ul>
<li>ネストされたクラスのサマリー</li>
<li>フィールドのサマリー</li>
<li>コンストラクタのサマリー</li>
<li>メソッドのサマリー</li>
</ul>
<ul>
<li>フィールドの詳細</li>
<li>コンストラクタの詳細</li>
<li>メソッドの詳細</li>
</ul>
<p>各サマリー・エントリには、その項目の詳細説明の中から1行目の文が表示されます。サマリー・エントリはアルファベット順ですが、詳細説明はソース・コードに現れる順になっています。これによって、プログラマが設定した論理的なグループ分けが保持されます。</p>
</li>
<li class="blockList">
<h2>注釈型</h2>
<p>各注釈型には、それ自身の個別のページと次のセクションがあります:</p>
<ul>
<li>注釈型の宣言</li>
<li>注釈型の説明</li>
<li>必須要素のサマリー</li>
<li>任意要素のサマリー</li>
<li>要素の詳細</li>
</ul>
</li>
<li class="blockList">
<h2>列挙型</h2>
<p>各列挙型には、それ自身の個別のページと次のセクションがあります:</p>
<ul>
<li>列挙型の宣言</li>
<li>列挙型の説明</li>
<li>列挙型定数のサマリー</li>
<li>列挙型定数の詳細</li>
</ul>
</li>
<li class="blockList">
<h2>階層ツリー(クラス階層)</h2>
<p>すべてのパッケージには<a href="overview-tree.html">クラス階層</a>ページがあり、さらに各パッケージの階層があります。各階層ページは、クラスのリストとインタフェースのリストを含みます。クラスは<code>java.lang.Object</code>を開始点とする継承構造で編成されます。インタフェースは、<code>java.lang.Object</code>からは継承しません。</p>
<ul>
<li>概要ページを表示しているときに「階層ツリー」をクリックすると、全パッケージの階層が表示されます。</li>
<li>特定のパッケージ、クラスまたはインタフェースを表示しているときに「階層ツリー」をクリックすると、該当するパッケージのみの階層が表示されます。</li>
</ul>
</li>
<li class="blockList">
<h2>非推奨のAPI</h2>
<p><a href="deprecated-list.html">非推奨のAPI</a>ページは、非推奨のAPIをすべてリストします。非推奨のAPIとは、機能改良などの理由から使用をお薦めできなくなったAPIのことで、通常はそれに代わるAPIが提供されます。非推奨のAPIは今後の実装で削除される可能性があります。</p>
</li>
<li class="blockList">
<h2>索引</h2>
<p><a href="index-all.html">索引</a>には、すべてのクラス、インタフェース、コンストラクタ、メソッドおよびフィールドのアルファベット順のリストが含まれます。</p>
</li>
<li class="blockList">
<h2>前/次</h2>
<p>これらのリンクにより、前または次のクラス、インタフェース、パッケージまたは関連ページへ移動できます。</p>
</li>
<li class="blockList">
<h2>フレーム/フレームなし</h2>
<p>これらのリンクはHTMLフレームの表示と非表示を切り替えます。すべてのページはフレームありでも、フレームなしでも表示できます。</p>
</li>
<li class="blockList">
<h2>すべてのクラス</h2>
<p><a href="allclasses-noframe.html">すべてのクラス</a>リンクには、すべてのクラスおよびインタフェース(非staticのネストされた型を除く)が表示されます。</p>
</li>
<li class="blockList">
<h2>直列化された形式</h2>
<p>直列化可能または外部化可能な各クラスは、直列化フィールドとメソッドの説明を含みます。この情報は、APIを使用する開発者ではなく、再実装を行う担当者に役立ちます。ナビゲーション・バーにリンクがない場合、直列化されたクラスに移動して、クラス記述の「関連項目」セクションにある「直列化された形式」をクリックすることにより、この情報を表示できます。</p>
</li>
<li class="blockList">
<h2>定数フィールド値</h2>
<p><a href="constant-values.html">定数フィールド値</a>ページには、static finalフィールドとその値のリストがあります。</p>
</li>
</ul>
<span class="emphasizedPhrase">このヘルプ・ファイルは、標準docletを使用して生成されたAPIドキュメントに適用されます。</span></div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li><a href="index-all.html">索引</a></li>
<li class="navBarCell1Rev">ヘルプ</li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?help-doc.html" target="_top">フレーム</a></li>
<li><a href="help-doc.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,252 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HitAndBlow</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="HitAndBlow";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="../../hitandblow/main/package-summary.html">パッケージ</a></li>
<li class="navBarCell1Rev">クラス</li>
<li><a href="package-tree.html">階層ツリー</a></li>
<li><a href="../../deprecated-list.html">非推奨</a></li>
<li><a href="../../index-all.html">索引</a></li>
<li><a href="../../help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前のクラス</li>
<li>次のクラス</li>
</ul>
<ul class="navList">
<li><a href="../../index.html?hitandblow/main/HitAndBlow.html" target="_top">フレーム</a></li>
<li><a href="HitAndBlow.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>サマリー:&nbsp;</li>
<li>ネスト&nbsp;|&nbsp;</li>
<li>フィールド&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">コンストラクタ</a>&nbsp;|&nbsp;</li>
<li><a href="#methods.inherited.from.class.java.lang.Object">メソッド</a></li>
</ul>
<ul class="subNavList">
<li>詳細:&nbsp;</li>
<li>フィールド&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">コンストラクタ</a>&nbsp;|&nbsp;</li>
<li>メソッド</li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">hitandblow.main</div>
<h2 title="クラス HitAndBlow" class="title">クラス HitAndBlow</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>hitandblow.main.HitAndBlow</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">HitAndBlow</span>
extends java.lang.Object</pre>
<div class="block">Hit And Blowゲームを行うプログラムです。
メソッドの構成、プログラミングの手法については問いませんが、仕様を守る・不具合は出さないことに気をつけてコーディングしてください
<p>【処理簡易仕様】
<ul>
<li>Playerにゲームを行う桁数を決めてもらう</li>
<li>コンピュータが数字を選ぶ</li>
<li>Playerに当てる数字を入力してもらう</li>
<li>入力した数値のエラーチェック(桁数、重複など)</li>
<li>正誤チェック(xHit yBlow)</li>
<li>すべてHitになるまで、当てる数字を入力してもらう</li>
</ul>
<p></div>
<dl>
<dt><span class="seeLabel">関連項目:</span></dt>
<dd><a href="https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%A4%E3%83%B3%E3%83%89">Hit And Blowのルールはこちら</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>コンストラクタのサマリー</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="コンストラクタのサマリー表、コンストラクタのリストおよび説明">
<caption><span>コンストラクタ</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">コンストラクタと説明</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../hitandblow/main/HitAndBlow.html#HitAndBlow--">HitAndBlow</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>メソッドのサマリー</h3>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>クラスから継承されたメソッド&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>コンストラクタの詳細</h3>
<a name="HitAndBlow--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HitAndBlow</h4>
<pre>public&nbsp;HitAndBlow()</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="../../hitandblow/main/package-summary.html">パッケージ</a></li>
<li class="navBarCell1Rev">クラス</li>
<li><a href="package-tree.html">階層ツリー</a></li>
<li><a href="../../deprecated-list.html">非推奨</a></li>
<li><a href="../../index-all.html">索引</a></li>
<li><a href="../../help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前のクラス</li>
<li>次のクラス</li>
</ul>
<ul class="navList">
<li><a href="../../index.html?hitandblow/main/HitAndBlow.html" target="_top">フレーム</a></li>
<li><a href="HitAndBlow.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>サマリー:&nbsp;</li>
<li>ネスト&nbsp;|&nbsp;</li>
<li>フィールド&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">コンストラクタ</a>&nbsp;|&nbsp;</li>
<li><a href="#methods.inherited.from.class.java.lang.Object">メソッド</a></li>
</ul>
<ul class="subNavList">
<li>詳細:&nbsp;</li>
<li>フィールド&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">コンストラクタ</a>&nbsp;|&nbsp;</li>
<li>メソッド</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hitandblow.main</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<h1 class="bar"><a href="../../hitandblow/main/package-summary.html" target="classFrame">hitandblow.main</a></h1>
<div class="indexContainer">
<h2 title="クラス">クラス</h2>
<ul title="クラス">
<li><a href="HitAndBlow.html" title="hitandblow.main内のクラス" target="classFrame">HitAndBlow</a></li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,141 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hitandblow.main</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="hitandblow.main";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="../../hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="package-tree.html">階層ツリー</a></li>
<li><a href="../../deprecated-list.html">非推奨</a></li>
<li><a href="../../index-all.html">索引</a></li>
<li><a href="../../help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前のパッケージ</li>
<li>次のパッケージ</li>
</ul>
<ul class="navList">
<li><a href="../../index.html?hitandblow/main/package-summary.html" target="_top">フレーム</a></li>
<li><a href="package-summary.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="パッケージ" class="title">パッケージ&nbsp;hitandblow.main</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="クラスのサマリー表、クラスのリストおよび説明">
<caption><span>クラスのサマリー</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">クラス</th>
<th class="colLast" scope="col">説明</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス">HitAndBlow</a></td>
<td class="colLast">
<div class="block">Hit And Blowゲームを行うプログラムです。</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="../../hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="package-tree.html">階層ツリー</a></li>
<li><a href="../../deprecated-list.html">非推奨</a></li>
<li><a href="../../index-all.html">索引</a></li>
<li><a href="../../help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前のパッケージ</li>
<li>次のパッケージ</li>
</ul>
<ul class="navList">
<li><a href="../../index.html?hitandblow/main/package-summary.html" target="_top">フレーム</a></li>
<li><a href="package-summary.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,130 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hitandblow.main クラス階層</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="hitandblow.main \u30AF\u30E9\u30B9\u968E\u5C64";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="../../hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li class="navBarCell1Rev">階層ツリー</li>
<li><a href="../../deprecated-list.html">非推奨</a></li>
<li><a href="../../index-all.html">索引</a></li>
<li><a href="../../help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="../../index.html?hitandblow/main/package-tree.html" target="_top">フレーム</a></li>
<li><a href="package-tree.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">パッケージhitandblow.mainの階層</h1>
</div>
<div class="contentContainer">
<h2 title="クラス階層">クラス階層</h2>
<ul>
<li type="circle">java.lang.Object
<ul>
<li type="circle">hitandblow.main.<a href="../../hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス"><span class="typeNameLink">HitAndBlow</span></a></li>
</ul>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="../../hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li class="navBarCell1Rev">階層ツリー</li>
<li><a href="../../deprecated-list.html">非推奨</a></li>
<li><a href="../../index-all.html">索引</a></li>
<li><a href="../../help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="../../index.html?hitandblow/main/package-tree.html" target="_top">フレーム</a></li>
<li><a href="package-tree.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,132 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>索引</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="\u7D22\u5F15";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li class="navBarCell1Rev">索引</li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?index-all.html" target="_top">フレーム</a></li>
<li><a href="index-all.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="#I:H">H</a>&nbsp;<a name="I:H">
<!-- -->
</a>
<h2 class="title">H</h2>
<dl>
<dt><a href="hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス"><span class="typeNameLink">HitAndBlow</span></a> - <a href="hitandblow/main/package-summary.html">hitandblow.main</a>のクラス</dt>
<dd>
<div class="block">Hit And Blowゲームを行うプログラムです。</div>
</dd>
<dt><span class="memberNameLink"><a href="hitandblow/main/HitAndBlow.html#HitAndBlow--">HitAndBlow()</a></span> - クラス のコンストラクタhitandblow.main.<a href="hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス">HitAndBlow</a></dt>
<dd>&nbsp;</dd>
<dt><a href="hitandblow/main/package-summary.html">hitandblow.main</a> - パッケージ hitandblow.main</dt>
<dd>&nbsp;</dd>
</dl>
<a href="#I:H">H</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li><a href="hitandblow/main/package-tree.html">階層ツリー</a></li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li class="navBarCell1Rev">索引</li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?index-all.html" target="_top">フレーム</a></li>
<li><a href="index-all.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1,72 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>生成されたドキュメント(タイトルなし)</title>
<script type="text/javascript">
targetPage = "" + window.location.search;
if (targetPage != "" && targetPage != "undefined")
targetPage = targetPage.substring(1);
if (targetPage.indexOf(":") != -1 || (targetPage != "" && !validURL(targetPage)))
targetPage = "undefined";
function validURL(url) {
try {
url = decodeURIComponent(url);
}
catch (error) {
return false;
}
var pos = url.indexOf(".html");
if (pos == -1 || pos != url.length - 5)
return false;
var allowNumber = false;
var allowSep = false;
var seenDot = false;
for (var i = 0; i < url.length - 5; i++) {
var ch = url.charAt(i);
if ('a' <= ch && ch <= 'z' ||
'A' <= ch && ch <= 'Z' ||
ch == '$' ||
ch == '_' ||
ch.charCodeAt(0) > 127) {
allowNumber = true;
allowSep = true;
} else if ('0' <= ch && ch <= '9'
|| ch == '-') {
if (!allowNumber)
return false;
} else if (ch == '/' || ch == '.') {
if (!allowSep)
return false;
allowNumber = false;
allowSep = false;
if (ch == '.')
seenDot = true;
if (ch == '/' && seenDot)
return false;
} else {
return false;
}
}
return true;
}
function loadFrames() {
if (targetPage != "" && targetPage != "undefined")
top.classFrame.location = top.targetPage;
}
</script>
</head>
<frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
<frame src="allclasses-frame.html" name="packageFrame" title="すべてのクラスおよびインタフェース(非staticのネストされた型を除く)">
<frame src="hitandblow/main/package-summary.html" name="classFrame" title="パッケージ、クラスおよびインタフェースの説明" scrolling="yes">
<noframes>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<h2>フレーム関連のアラート</h2>
<p>このドキュメントはフレーム機能を使用して表示するように作成されています。フレームを表示できないWebクライアントの場合にこのメッセージが表示されます。<a href="hitandblow/main/package-summary.html">フレームに対応していないバージョン</a>にリンクします。</p>
</noframes>
</frameset>
</html>

View File

@@ -0,0 +1,134 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_66) on Thu Dec 22 13:22:15 JST 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>クラス階層</title>
<meta name="date" content="2016-12-22">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="\u30AF\u30E9\u30B9\u968E\u5C64";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>ブラウザのJavaScriptが無効になっています。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li class="navBarCell1Rev">階層ツリー</li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li><a href="index-all.html">索引</a></li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-tree.html" target="_top">フレーム</a></li>
<li><a href="overview-tree.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">すべてのパッケージの階層</h1>
<span class="packageHierarchyLabel">パッケージ階層:</span>
<ul class="horizontal">
<li><a href="hitandblow/main/package-tree.html">hitandblow.main</a></li>
</ul>
</div>
<div class="contentContainer">
<h2 title="クラス階層">クラス階層</h2>
<ul>
<li type="circle">java.lang.Object
<ul>
<li type="circle">hitandblow.main.<a href="hitandblow/main/HitAndBlow.html" title="hitandblow.main内のクラス"><span class="typeNameLink">HitAndBlow</span></a></li>
</ul>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="ナビゲーション・リンクをスキップ">ナビゲーション・リンクをスキップ</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="ナビゲーション">
<li><a href="hitandblow/main/package-summary.html">パッケージ</a></li>
<li>クラス</li>
<li class="navBarCell1Rev">階層ツリー</li>
<li><a href="deprecated-list.html">非推奨</a></li>
<li><a href="index-all.html">索引</a></li>
<li><a href="help-doc.html">ヘルプ</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>前</li>
<li>次</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-tree.html" target="_top">フレーム</a></li>
<li><a href="overview-tree.html" target="_top">フレームなし</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">すべてのクラス</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@@ -0,0 +1 @@
hitandblow.main

View File

@@ -0,0 +1,30 @@
function show(type)
{
count = 0;
for (var key in methods) {
var row = document.getElementById(key);
if ((methods[key] & type) != 0) {
row.style.display = '';
row.className = (count++ % 2) ? rowColor : altColor;
}
else
row.style.display = 'none';
}
updateTabs(type);
}
function updateTabs(type)
{
for (var value in tabs) {
var sNode = document.getElementById(tabs[value][0]);
var spanNode = sNode.firstChild;
if (value == type) {
sNode.className = activeTableTab;
spanNode.innerHTML = tabs[value][1];
}
else {
sNode.className = tableTab;
spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
}
}
}

View File

@@ -0,0 +1,574 @@
/* Javadoc style sheet */
/*
Overall document style
*/
@import url('resources/fonts/dejavu.css');
body {
background-color:#ffffff;
color:#353833;
font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
font-size:14px;
margin:0;
}
a:link, a:visited {
text-decoration:none;
color:#4A6782;
}
a:hover, a:focus {
text-decoration:none;
color:#bb7a2a;
}
a:active {
text-decoration:none;
color:#4A6782;
}
a[name] {
color:#353833;
}
a[name]:hover {
text-decoration:none;
color:#353833;
}
pre {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
}
h1 {
font-size:20px;
}
h2 {
font-size:18px;
}
h3 {
font-size:16px;
font-style:italic;
}
h4 {
font-size:13px;
}
h5 {
font-size:12px;
}
h6 {
font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
margin-top:8px;
line-height:1.4em;
}
dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
}
table tr td dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
vertical-align:top;
padding-top:4px;
}
sup {
font-size:8px;
}
/*
Document title and Copyright styles
*/
.clear {
clear:both;
height:0px;
overflow:hidden;
}
.aboutLanguage {
float:right;
padding:0px 21px;
font-size:11px;
z-index:200;
margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
}
.bar a, .bar a:link, .bar a:visited, .bar a:active {
color:#FFFFFF;
text-decoration:none;
}
.bar a:hover, .bar a:focus {
color:#bb7a2a;
}
.tab {
background-color:#0066FF;
color:#ffffff;
padding:8px;
width:5em;
font-weight:bold;
}
/*
Navigation bar styles
*/
.bar {
background-color:#4D7A97;
color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
font-size:11px;
margin:0;
}
.topNav {
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.bottomNav {
margin-top:10px;
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.subNav {
background-color:#dee3e9;
float:left;
width:100%;
overflow:hidden;
font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
margin:0 25px 0 0;
padding:0;
}
ul.navList li{
list-style:none;
float:left;
padding: 5px 6px;
text-transform:uppercase;
}
ul.subNavList li{
list-style:none;
float:left;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
color:#FFFFFF;
text-decoration:none;
text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
color:#bb7a2a;
text-transform:uppercase;
}
.navBarCell1Rev {
background-color:#F8981D;
color:#253441;
margin: auto 5px;
}
.skipNav {
position:absolute;
top:auto;
left:-9999px;
overflow:hidden;
}
/*
Page header and footer styles
*/
.header, .footer {
clear:both;
margin:0 20px;
padding:5px 0 0 0;
}
.indexHeader {
margin:10px;
position:relative;
}
.indexHeader span{
margin-right:15px;
}
.indexHeader h1 {
font-size:13px;
}
.title {
color:#2c4557;
margin:10px 0;
}
.subTitle {
margin:5px 0 0 0;
}
.header ul {
margin:0 0 15px 0;
padding:0;
}
.footer ul {
margin:20px 0 5px 0;
}
.header ul li, .footer ul li {
list-style:none;
font-size:13px;
}
/*
Heading styles
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
margin:15px 0;
}
ul.blockList li.blockList h2 {
padding:0px 0 20px 0;
}
/*
Page layout container styles
*/
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
clear:both;
padding:10px 20px;
position:relative;
}
.indexContainer {
margin:10px;
position:relative;
font-size:12px;
}
.indexContainer h2 {
font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
margin:0;
padding:0;
}
.indexContainer ul li {
list-style:none;
padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
margin:5px 0 10px 0px;
font-size:14px;
font-family:'DejaVu Sans Mono',monospace;
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
font-size:1.1em;
display:inline;
font-weight:bold;
}
.serializedFormContainer dl.nameValue dd {
margin:0 0 0 1px;
font-size:1.1em;
display:inline;
}
/*
List styles
*/
ul.horizontal li {
display:inline;
font-size:0.9em;
}
ul.inheritance {
margin:0;
padding:0;
}
ul.inheritance li {
display:inline;
list-style:none;
}
ul.inheritance li ul.inheritance {
margin-left:15px;
padding-left:15px;
padding-top:1px;
}
ul.blockList, ul.blockListLast {
margin:10px 0 10px 0;
padding:0;
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
margin-bottom:15px;
line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
border:1px solid #ededed;
background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
background-color:#ffffff;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
border-bottom:none;
padding-bottom:0;
}
table tr td dl, table tr td dl dt, table tr td dl dd {
margin-top:0;
margin-bottom:1px;
}
/*
Table styles
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
width:100%;
border-left:1px solid #EEE;
border-right:1px solid #EEE;
border-bottom:1px solid #EEE;
}
.overviewSummary, .memberSummary {
padding:0px;
}
.overviewSummary caption, .memberSummary caption, .typeSummary caption,
.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
padding-top:10px;
padding-left:1px;
margin:0px;
white-space:pre;
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
color:#FFFFFF;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
padding-bottom:7px;
display:inline-block;
float:left;
background-color:#F8981D;
border: none;
height:16px;
}
.memberSummary caption span.activeTableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#F8981D;
height:16px;
}
.memberSummary caption span.tableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#4D7A97;
height:16px;
}
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
padding-right:0px;
background-image:none;
float:none;
display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
display:none;
width:5px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .activeTableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .tableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
background-color:#4D7A97;
float:left;
}
.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td {
text-align:left;
padding:0px 0px 12px 10px;
}
th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
vertical-align:top;
padding-right:0px;
padding-top:8px;
padding-bottom:3px;
}
th.colFirst, th.colLast, th.colOne, .constantsSummary th {
background:#dee3e9;
text-align:left;
padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
white-space:nowrap;
font-size:13px;
}
td.colLast, th.colLast {
font-size:13px;
}
td.colOne, th.colOne {
font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.useSummary td.colFirst, .useSummary th.colFirst,
.overviewSummary td.colOne, .overviewSummary th.colOne,
.memberSummary td.colFirst, .memberSummary th.colFirst,
.memberSummary td.colOne, .memberSummary th.colOne,
.typeSummary td.colFirst{
width:25%;
vertical-align:top;
}
td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
font-weight:bold;
}
.tableSubHeadingColor {
background-color:#EEEEFF;
}
.altColor {
background-color:#FFFFFF;
}
.rowColor {
background-color:#EEEEEF;
}
/*
Content styles
*/
.description pre {
margin-top:0;
}
.deprecatedContent {
margin:0;
padding:10px 0;
}
.docSummary {
padding:0;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
font-style:normal;
}
div.block {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
td.colLast div {
padding-top:0px;
}
td.colLast a {
padding-bottom:3px;
}
/*
Formatting effect styles
*/
.sourceLineNo {
color:green;
padding:0 30px 0 0;
}
h1.hidden {
visibility:hidden;
overflow:hidden;
font-size:10px;
}
.block {
display:block;
margin:3px 10px 2px 0px;
color:#474747;
}
.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
font-weight:bold;
}
.deprecationComment, .emphasizedPhrase, .interfaceName {
font-style:italic;
}
div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
div.block div.block span.interfaceName {
font-style:normal;
}
div.contentContainer ul.blockList li.blockList h2{
padding-bottom:0px;
}

148
CUI_HitAndBlow/README.txt Normal file
View File

@@ -0,0 +1,148 @@
○システム名
ヒットアンドブロー
○システム説明
Playerにゲームを行う桁数を決めてもらう
コンピュータが数字を選ぶ
Playerに当てる数字を入力してもらう
入力した数値のエラーチェック(桁数、重複など)
正誤チェック(xHit: yBlow)
すべてHitになるまで、当てる数字を入力してもらう
○納品物
作成したプログラム
設計書
○早く終わったら・・・・
CUI_BlackJackを作成してください
〇設計書
プログラミングの各段階ごとに処理詳細シートに追記する。
印刷を意識し、印刷プレビューや罫線も意識して作成すること。
〇プログラミング
1段階目(問題作成)
4桁のランダムな数字を表示させる。必ず4桁なので先頭0もOK。ただし、数字が重複しないこと。
<実行例>
0683
2段階目(回答妥当性チェック)
4桁のランダムな数字を表示させた後、キーボードから数字を入力させ、
以下のチェックを行う。エラーがあればエラーメッセージを表示し、再度入力させる。
・桁数が4桁か
 NGの場合のエラーメッセージ「桁数に過ちがあります」
・全部半角数字か
 NGの場合のエラーメッセージ「数値ではありません」
・重複している数字がないか
 NGの場合のエラーメッセージ「重複している値があります」
<実行例>
0683 ←コンピュータが選んだランダムな4桁
12345 ←4桁以外を入力
桁数に過ちがあります
123A ←半角数字以外を入力
数値ではありません
1233 ←重複する数字を入力
重複している値があります
1234 ←重複しない4桁の数字を入力
3段階目(Hit判定)
1段階目を使って4桁のランダムな数字を表示させる。
その後2段階目を使って4桁の重複しない数字を入力させる。
ランダムな数字と入力した数字でHitを数え、以下を表示する
 入力した数字 ( ?Hit)  例:1234 ( 1Hit)
<実行例>
0283 ←コンピュータが選んだランダムな4桁
1234 ←重複しない4桁の数字を入力
1234 ( 1Hit) ←Hitを表示
4段階目(HitとBlow判定)
1段階目を使って4桁のランダムな数字を表示させる。
その後2段階目を使って4桁の重複しない数字を入力させる。
ランダムな数字と入力した数字でHitとBlowを数え、以下を表示する
 入力した数字 ( ?Hit: ?Blow)  例:1234 ( 1Hit: 1Blow)
<実行例>
0283 ←コンピュータが選んだランダムな4桁
1234 ←重複しない4桁の数字を入力
1234 ( 1Hit: 1Blow) ←HitとBlowを表示
5段階目(正解するまで繰り返し)
以下の手順で4桁限定のHitAndBlowを完成させる。
1段階目で4桁のランダムの数字を作成するがそれを表示しないように変更する。
4Hitになるまで以下の処理を繰り返す。
・何回目の回答かを表示する
・2段階目を使って4桁の重複しない数字を入力させる
・HitとBlowを数え表示する
<実行例>
1回目の回答
2974
2974 ( 0Hit: 1Blow)
2回目の回答
7639
7639 ( 0Hit: 1Blow)
3回目の回答
5780
5780 ( 1Hit: 0Blow)
4回目の回答
5143
5143 ( 0Hit: 3Blow)
5回目の回答
4381
4381 ( 0Hit: 3Blow)
6回目の回答
3410
6回でクリア
6段階目(桁数指定)
5段階目の先頭に桁数を入力させる処理を追加する。
桁数が1~9以外であれば再入力させ、1~9であればその桁数でHitAndBlowを実行するように変更する。
<実行例>
何桁の数字で開始しますか?(1 ~ 9)
10
正しい数値を入力してください
3
1回目の回答
264
264 ( 0Hit: 1Blow)
2回目の回答
703
703 ( 0Hit: 0Blow)
3回目の回答
485
485 ( 0Hit: 1Blow)
4回目の回答
914
914 ( 0Hit: 1Blow)
5回目の回答
892
892 ( 1Hit: 0Blow)
6回目の回答
596
6回でクリア
○<以下、時間が余った人向け>
7段階目(アニメーション)
「コンピュータが数字を選んでいます。。。。」のアニメーションを実装する。
<実行例>
何桁の数字で開始しますか?(1 ~ 9)
3
コンピュータが数字を選んでいます。。。。
1回目の回答
264
264 ( 0Hit: 1Blow)
2回目の回答
703
703 ( 0Hit: 0Blow)
3回目の回答
485
485 ( 0Hit: 1Blow)
4回目の回答
914
914 ( 0Hit: 1Blow)
5回目の回答
892
892 ( 1Hit: 0Blow)
6回目の回答
596
6回でクリア

View File

@@ -0,0 +1,14 @@
/*
* HitAndBlow.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package hitandblow.main;
public class HitAndBlow {
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,2 @@
java -jar HitAndBlow.jar
pause

Binary file not shown.

13
CUI_Poker/src/Poker.java Normal file
View File

@@ -0,0 +1,13 @@
/*
* Poker.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
import java.io.IOException;
public class Poker {
public static void main(String[] args) throws IOException {
}
}

View File

@@ -0,0 +1,2 @@
java -jar Poker.jar
pause

View File

@@ -0,0 +1,16 @@
/*
* RPS.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class RPS {
/**
* @param args
*/
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,2 @@
java -jar RPS.jar
pause

View File

@@ -0,0 +1,15 @@
/*
* Eratosthenes.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class Eratosthenes {
/**
* @param args
*/
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,2 @@
java -jar Eratosthenes.jar
pause

View File

@@ -0,0 +1,14 @@
/*
* Game.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package othello;
public class Game {
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,2 @@
java -jar othello.jar
pause

View File

@@ -0,0 +1 @@
/bin/

View File

@@ -0,0 +1,11 @@
# オブジェクト指向総合復習問題 Question1
完成したプログラムを確認しコメントを追加してください。
追加するコメントは以下とします。
- クラス自体へのコメント
Induction.javaを参考にして書いてみてください
- メソッド自体へのコメント
Induction.javaを参考にして書いてみてください
- 1行1行処理のコメント

View File

@@ -0,0 +1,9 @@
05/26 10:00,DB概要・環境構築
05/26 13:30,パラメータ設定、SQL基礎
05/27 10:00,SQL応用(結合・サブクエリ)
05/27 13:30,SQL応用(グルーピング・集約関数)
05/31 10:00,トランザクション、ロック
05/31 13:30,インデックス、ストアドプロシージャ、JDBC
06/01 10:00,SQLインジェクション対策
06/01 13:30,DAO/DTO
06/02 10:00,DAO/DTOを用いたCRUD構築演習
1 05/26 10:00 DB概要・環境構築
2 05/26 13:30 パラメータ設定、SQL基礎
3 05/27 10:00 SQL応用(結合・サブクエリ)
4 05/27 13:30 SQL応用(グルーピング・集約関数)
5 05/31 10:00 トランザクション、ロック
6 05/31 13:30 インデックス、ストアドプロシージャ、JDBC
7 06/01 10:00 SQLインジェクション対策
8 06/01 13:30 DAO/DTO
9 06/02 10:00 DAO/DTOを用いたCRUD構築演習

View File

@@ -0,0 +1,23 @@
04/21 10:00,Javaを始めよう
04/21 13:30,プログラムの書き方
04/22 10:00,アルゴリズム
04/22 13:30,式と演算子
04/25 10:00,制御構文(if文、while文)
04/26 13:30,制御構文(switch、do~while、for文)
05/02 10:00,配列
05/02 13:30,メソッド
05/06 10:00,複数クラスを用いた開発
05/11 10:00,Java基本文法総合演習
05/12 10:00,オブジェクト指向概要
05/12 13:30,インスタンスとクラス
05/13 10:00,様々なクラス機構
05/13 13:30,カプセル化
05/19 10:00,継承
05/19 13:30,抽象クラス、インタフェース
05/20 10:00,多態性
05/20 13:30,Java標準ライブラリ
05/23 10:00,アノテーション
05/23 13:30,例外
05/24 10:00,コレクション
05/24 13:30,Java総合テスト
05/25 10:00,オブジェクト指向プログラミング総合演習
1 04/21 10:00 Javaを始めよう
2 04/21 13:30 プログラムの書き方
3 04/22 10:00 アルゴリズム
4 04/22 13:30 式と演算子
5 04/25 10:00 制御構文(if文、while文)
6 04/26 13:30 制御構文(switch、do~while、for文)
7 05/02 10:00 配列
8 05/02 13:30 メソッド
9 05/06 10:00 複数クラスを用いた開発
10 05/11 10:00 Java基本文法総合演習
11 05/12 10:00 オブジェクト指向概要
12 05/12 13:30 インスタンスとクラス
13 05/13 10:00 様々なクラス機構
14 05/13 13:30 カプセル化
15 05/19 10:00 継承
16 05/19 13:30 抽象クラス、インタフェース
17 05/20 10:00 多態性
18 05/20 13:30 Java標準ライブラリ
19 05/23 10:00 アノテーション
20 05/23 13:30 例外
21 05/24 10:00 コレクション
22 05/24 13:30 Java総合テスト
23 05/25 10:00 オブジェクト指向プログラミング総合演習

View File

@@ -0,0 +1,86 @@
package com.rhizome.beans.course;
import java.io.FileNotFoundException;
import java.util.List;
import com.rhizome.beans.curriculum.Curriculum;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public abstract class Course {
// コース名
protected String courseName;
// カリキュラムリスト
protected List<Curriculum> curriculumList;
/**
* TODO
*
* @throws FileNotFoundException TODO
*/
protected Course() throws FileNotFoundException {
this.courseName = getCourseName();
// TODO
createInductionCurriculums();
}
/**
* TODO
*/
public void printAllCurriculumName() {
for (int i = 0; i < this.curriculumList.size(); i++) {
Curriculum curriculum = curriculumList.get(i);
// TODO
System.out.println(curriculum.getCurriculumName());
// TODO
curriculum.printAllUnitName();
System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■");
}
}
/**
* TODO
*
* @return TODO
*/
public abstract String getCourseName();
/**
* TODO
*
* @param dateTime TODO
* @return TODO
*/
public String getUnitNameByDateTime(String dateTime) {
String unitName = null;
// TODO
for (int i = 0; i < curriculumList.size(); i++) {
Curriculum curriculum = curriculumList.get(i);
// TODO
unitName = curriculum.getUnitName(dateTime);
// TODO
if (unitName != null) {
break;
}
}
return unitName;
}
/**
* TODO
*
* @throws FileNotFoundException TODO
*/
protected abstract void createInductionCurriculums() throws FileNotFoundException;
}

View File

@@ -0,0 +1,52 @@
package com.rhizome.beans.course;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import com.rhizome.beans.curriculum.Curriculum;
import com.rhizome.beans.curriculum.DBCurriculum;
import com.rhizome.beans.curriculum.JavaCurriculum;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class JavaCourse extends Course {
// コース名
private final static String COURCE_NAME = "Javaコース";
/**
* TODO
*
* @throws FileNotFoundException TODO
*/
public JavaCourse() throws FileNotFoundException {
super();
}
@Override
public String getCourseName() {
return COURCE_NAME;
}
/**
* TODO
*
* @throws FileNotFoundException TODO
*/
protected void createInductionCurriculums() throws FileNotFoundException {
// TODO
JavaCurriculum javaCurriculum = new JavaCurriculum();
// TODO
DBCurriculum dbCurriculum = new DBCurriculum();
// TODO
super.curriculumList = new ArrayList<Curriculum>();
super.curriculumList.add(javaCurriculum);
super.curriculumList.add(dbCurriculum);
}
}

View File

@@ -0,0 +1,109 @@
package com.rhizome.beans.curriculum;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public abstract class Curriculum {
// カリキュラムがあるフォルダのパス
private final static String CURRICULUM_FOLDER_PATH = "file/";
// カリキュラム対象ファイル
private File targetFile;
// カリキュラムのマップ <実施日時(String), 単元名(String)>で保持
private Map<String, String> curriculumMap = new LinkedHashMap<String, String>();
/**
* TODO
*
* @param fileName TODO
* @throws FileNotFoundException TODO
*/
protected Curriculum(String fileName) throws FileNotFoundException {
this.targetFile = new File(CURRICULUM_FOLDER_PATH + fileName + ".csv");
// TODO
createCurriculumMap();
}
/**
* TODO key:日付 value:単元名
*
* @return TODO
* @throws FileNotFoundException TODO
*/
private void createCurriculumMap() throws FileNotFoundException {
Scanner scanner = null;
try {
// ファイルを読み込む
scanner = new Scanner(this.targetFile, "UTF-8");
// ファイルの内容を1行1行読み込み、リストに加える
while (scanner.hasNext()) {
// 日付とカリキュラム名で分割
String[] lineData = scanner.nextLine().split(",");
// マップに追加
curriculumMap.put(lineData[0], lineData[1]);
}
} finally {
// もしScannerがnullではなかったらクローズする
if (scanner != null) {
scanner.close();
}
}
}
/**
* TODO
*
* @param dateTime TODO
* @return TODO
*/
public String getUnitName(String dateTime) {
return this.getCurriculumMap().get(dateTime);
}
/**
* TODO
*/
public void printAllUnitName() {
for (String key : this.getCurriculumMap().keySet()) {
System.out.println(key + ":" + this.getCurriculumMap().get(key));
}
}
/**
* TODO
*
* @return TODO
*/
public Map<String, String> getCurriculumMap() {
return this.curriculumMap;
}
/**
* TODO
*
* @param curriculumMap TODO
*/
public void setCurriculumMap(Map<String, String> curriculumMap) {
this.curriculumMap = curriculumMap;
}
/**
* TODO
*
* @return TODO
*/
public abstract String getCurriculumName();
}

View File

@@ -0,0 +1,28 @@
package com.rhizome.beans.curriculum;
import java.io.FileNotFoundException;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class DBCurriculum extends Curriculum {
// DBカリキュラム名一覧のテキストファイル名
private final static String DB_CURRICULUM_FILE_NAME = "DBCurriculum";
// カリキュラム名
private final static String CURRICULUM_NAME = "DB";
public DBCurriculum() throws FileNotFoundException {
super(DB_CURRICULUM_FILE_NAME);
}
@Override
public String getCurriculumName() {
return CURRICULUM_NAME;
}
}

View File

@@ -0,0 +1,37 @@
package com.rhizome.beans.curriculum;
import java.io.FileNotFoundException;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class JavaCurriculum extends Curriculum {
// Javaカリキュラム名一覧のテキストファイル名
private final static String JAVA_CURRICULUM_FILE_NAME = "JavaCurriculum";
// カリキュラム名
private final static String CURRICULUM_NAME = "Java";
// 使用するテキスト名
public final static String JAVA_TEXT = "スッキリわかるJava入門";
/**
* TODO
*
* @param fileName TODO
* @throws FileNotFoundException TODO
*/
public JavaCurriculum() throws FileNotFoundException {
super(JAVA_CURRICULUM_FILE_NAME);
}
@Override
public String getCurriculumName() {
return CURRICULUM_NAME;
}
}

View File

@@ -0,0 +1,66 @@
package com.rhizome.beans.student;
import com.rhizome.beans.course.Course;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class JavaStudent extends Student {
// 受講するコース(受講コースは共通のためstatic)
private static Course courses;
private final static String INTRO_DEFAULT_MESSAGE = "初心者なので頑張ります!";
/**
* TODO
*
* @param name TODO
* @param age TODO
*/
public JavaStudent(String name, int age) {
super(name, age);
}
/**
* TODO
*
* @param name TODO
* @param age TODO
* @param introMessage TODO
*/
public JavaStudent(String name, int age, String message) {
super(name, age, message);
}
@Override
public void introduce() {
System.out.println("初めまして。" + this.name + "と申します。");
// TODO
if (introMessage != null) {
System.out.println(introMessage);
} else {
System.out.println(INTRO_DEFAULT_MESSAGE);
}
}
/**
* TODO
*/
public static Course getCourses() {
return courses;
}
/**
* TODO
*/
public static void setCourses(Course courses) {
JavaStudent.courses = courses;
}
}

View File

@@ -0,0 +1,40 @@
package com.rhizome.beans.student;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public interface Learn {
/**
* TODO
*
* @param unit TODO
*/
void question(String unit);
/**
* TODO
*
* @param unit TODO
*/
void learn(String unit);
/**
* TODO
*
* @param unit TODO
*/
void review(String unit);
/**
* TODO
*
* @param unit TODO
*/
void prepare(String unit);
}

View File

@@ -0,0 +1,68 @@
package com.rhizome.beans.student;
/**
* TODO
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public abstract class Student implements Learn {
// 名前
protected String name;
// 年齢
protected int age;
// 自己紹介メッセージ
protected String introMessage;
/**
* TODO
*
* @param name TODO
* @param age TODO
*/
protected Student(String name, int age) {
this.name = name;
this.age = age;
}
/**
* TODO
*
* @param name TODO
* @param age TODO
* @param introMessage TODO
*/
public Student(String name, int age, String message) {
this(name, age);
this.introMessage = message;
}
/**
* TODO
*/
public abstract void introduce();
@Override
public void question(String unit) {
System.out.println(unit + "の質問をします。");
}
@Override
public void learn(String unit) {
System.out.println(unit + "の学習をします。");
}
@Override
public void review(String unit) {
System.out.println(unit + "の復習をします。");
}
@Override
public void prepare(String unit) {
System.out.println(unit + "の予習をします。");
}
}

View File

@@ -0,0 +1,107 @@
package com.rhizome.main;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import com.rhizome.beans.course.Course;
import com.rhizome.beans.course.JavaCourse;
import com.rhizome.beans.student.JavaStudent;
import com.rhizome.beans.student.Student;
/**
* 新入社員研修実行クラス
* コースや受講生を作成し、研修を実施するクラス
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class Induction {
public static void main(String[] args) {
// TODO
Course javaCourse = null;
try {
javaCourse = createCourse();
} catch (FileNotFoundException e) {
System.out.println("コース作成時にエラーが発生しました。システムを終了します");
// TODO
e.printStackTrace();
System.exit(0);
}
JavaStudent.setCourses(javaCourse);
// TODO
List<Student> studentList = createStudentList();
// TODO
introduceTime(studentList);
// TODO
inductionStart();
}
/**
* コース作成メソッド
* @return 作成したコース
* @throws FileNotFoundException カリキュラム作成時のエラー
*/
private static Course createCourse() throws FileNotFoundException{
// TODO
JavaCourse javaCourse = new JavaCourse();
return javaCourse;
}
/**
* 受講生作成メソッド
* @return 作成した受講生リスト
*/
private static List<Student> createStudentList() {
List<Student> studentList = new ArrayList<Student>();
// TODO
Student studentTanaka = new JavaStudent("田中", 22);
Student studentYamada = new JavaStudent("山田", 22, "少しだけ経験ありますが、忘れているので頑張ります!");
// TODO
studentList.add(studentTanaka);
studentList.add(studentYamada);
return studentList;
}
/**
* 自己紹介タイム
* 受講生分 introduceメソッドを実行する
* @param studentList 受講生リスト
*/
private static void introduceTime(List<Student> studentList) {
System.out.println("研修初日なので自己紹介をしていただきます。");
System.out.println();
// TODO
for (int i = 0; i < studentList.size(); i++) {
System.out.println((i + 1) + "人目");
// TODO
studentList.get(i).introduce();
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}
}
/**
* 研修開始メソッド
*/
private static void inductionStart() {
System.out.println("今回の研修では以下のJavaとDBを学びます");
// TODO
JavaStudent.getCourses().printAllCurriculumName();
System.out.println();
// TODO
String today = "06/01 10:00"; // 本当は現在日時から作成するべきだが今回は固定とする
String unitName = JavaStudent.getCourses().getUnitNameByDateTime(today);
System.out.println("今日学習する単元は" + unitName + "です。");
}
}

View File

@@ -0,0 +1,3 @@
# オブジェクト指向総合復習問題 Question2-1
TODOコメントを埋めて、カリキュラム関連クラスを作ろう!

View File

@@ -0,0 +1,9 @@
05/26 10:00,DB概要・環境構築
05/26 13:30,パラメータ設定、SQL基礎
05/27 10:00,SQL応用(結合・サブクエリ)
05/27 13:30,SQL応用(グルーピング・集約関数)
05/31 10:00,トランザクション、ロック
05/31 13:30,インデックス、ストアドプロシージャ、JDBC
06/01 10:00,SQLインジェクション対策
06/01 13:30,DAO/DTO
06/02 10:00,DAO/DTOを用いたCRUD構築演習
1 05/26 10:00 DB概要・環境構築
2 05/26 13:30 パラメータ設定、SQL基礎
3 05/27 10:00 SQL応用(結合・サブクエリ)
4 05/27 13:30 SQL応用(グルーピング・集約関数)
5 05/31 10:00 トランザクション、ロック
6 05/31 13:30 インデックス、ストアドプロシージャ、JDBC
7 06/01 10:00 SQLインジェクション対策
8 06/01 13:30 DAO/DTO
9 06/02 10:00 DAO/DTOを用いたCRUD構築演習

View File

@@ -0,0 +1,23 @@
04/21 10:00,Javaを始めよう
04/21 13:30,プログラムの書き方
04/22 10:00,アルゴリズム
04/22 13:30,式と演算子
04/25 10:00,制御構文(if文、while文)
04/26 13:30,制御構文(switch、do~while、for文)
05/02 10:00,配列
05/02 13:30,メソッド
05/06 10:00,複数クラスを用いた開発
05/11 10:00,Java基本文法総合演習
05/12 10:00,オブジェクト指向概要
05/12 13:30,インスタンスとクラス
05/13 10:00,様々なクラス機構
05/13 13:30,カプセル化
05/19 10:00,継承
05/19 13:30,抽象クラス、インタフェース
05/20 10:00,多態性
05/20 13:30,Java標準ライブラリ
05/23 10:00,アノテーション
05/23 13:30,例外
05/24 10:00,コレクション
05/24 13:30,Java総合テスト
05/25 10:00,オブジェクト指向プログラミング総合演習
1 04/21 10:00 Javaを始めよう
2 04/21 13:30 プログラムの書き方
3 04/22 10:00 アルゴリズム
4 04/22 13:30 式と演算子
5 04/25 10:00 制御構文(if文、while文)
6 04/26 13:30 制御構文(switch、do~while、for文)
7 05/02 10:00 配列
8 05/02 13:30 メソッド
9 05/06 10:00 複数クラスを用いた開発
10 05/11 10:00 Java基本文法総合演習
11 05/12 10:00 オブジェクト指向概要
12 05/12 13:30 インスタンスとクラス
13 05/13 10:00 様々なクラス機構
14 05/13 13:30 カプセル化
15 05/19 10:00 継承
16 05/19 13:30 抽象クラス、インタフェース
17 05/20 10:00 多態性
18 05/20 13:30 Java標準ライブラリ
19 05/23 10:00 アノテーション
20 05/23 13:30 例外
21 05/24 10:00 コレクション
22 05/24 13:30 Java総合テスト
23 05/25 10:00 オブジェクト指向プログラミング総合演習

View File

@@ -0,0 +1,99 @@
package com.rhizome.beans.curriculum;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
/**
* カリキュラムクラス
* 各カリキュラムの元となる抽象クラス
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public abstract class Curriculum {
// カリキュラムがあるフォルダのパス
private final static String CURRICULUM_FOLDER_PATH = "file/";
// カリキュラム対象ファイル
private File targetFile;
// カリキュラムのマップ <実施日時(String), 単元名(String)>で保持
private Map<String, String> curriculumMap = new LinkedHashMap<String, String>();
/**
* Curriculumクラスのコンストラクタ
* カリキュラムファイルインスタンスを作成する
* カリキュラム一覧を読み込みMapにする
*
* @param fileName
* @throws FileNotFoundException
*/
protected Curriculum(String fileName) throws FileNotFoundException {
this.targetFile = new File(CURRICULUM_FOLDER_PATH + fileName + ".csv");
// TODO カリキュラム一覧を読み込み、マップにするメソッドを呼ぶ
}
/**
* カリキュラムファイルから単元名一覧を読み込みマップを作成する
* key:日付 value:単元名
* @return 作成したマップ
* @throws FileNotFoundException ファイルがなかった場合エラーとする
*/
private void createCurriculumMap() throws FileNotFoundException {
Scanner scanner = null;
try{
// ファイルを読み込む
scanner = new Scanner(this.targetFile, "UTF-8");
// ファイルの内容を1行1行読み込み、リストに加える
while (scanner.hasNext()) {
// 日付とカリキュラム名で分割
String[] lineData = scanner.nextLine().split(",");
// マップに追加
curriculumMap.put(lineData[0], lineData[1]);
}
} finally {
// もしScannerがnullではなかったらクローズする
if (scanner != null) {
scanner.close();
}
}
}
/**
* TODO
* getUnitName()メソッド
* 日時を指定して、カリキュラムの単元名を取得する
* @param dateTime 日時
* @return 単元名
*/
/**
* カリキュラム情報Mapからすべての単元名を表示する
*/
public void printAllUnitName() {
for (String key : this.getCurriculumMap().keySet()) {
System.out.println(key + ":" + this.getCurriculumMap().get(key));
}
}
/**
* curriculumMapのGetter
* @return curriculumMapフィールド
*/
/**
* curriculumMapのSetter
* @param curriculumMap セットするマップ
*/
/**
* カリキュラム名のGetter 抽象メソッド
* @return カリキュラム名
*/
}

View File

@@ -0,0 +1,34 @@
package com.rhizome.beans.curriculum;
/**
* DBのカリキュラムクラス
* DBのカリキュラムやテキスト情報を保持したクラス
* TODO Curriculumクラスを継承する
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class DBCurriculum {
// DBカリキュラム名一覧のテキストファイル名
private final static String DB_CURRICULUM_FILE_NAME = "DBCurriculum";
// カリキュラム名
private final static String CURRICULUM_NAME = "DB";
/**
* TODO
* DBCurriculumクラスのコンストラクタ
* 親のコンストラクタに、カリキュラムのファイル名を引数で渡す
*
* @throws FileNotFoundException カリキュラム一覧ファイルが見つからなかった場合はエラー
*/
/**
* TODO
* getCurriculumNameメソッドのオーバーライド
*
* @return カリキュラム名
*/
}

View File

@@ -0,0 +1,37 @@
package com.rhizome.beans.curriculum;
/**
* Javaのカリキュラムクラス
* Javaのカリキュラムやテキスト情報を保持したクラス
* TODO Curriculumクラスを継承する
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class JavaCurriculum {
// Javaカリキュラム名一覧のテキストファイル名
private final static String JAVA_CURRICULUM_FILE_NAME = "JavaCurriculum";
// カリキュラム名
private final static String CURRICULUM_NAME = "Java";
// 使用するテキスト名
public final static String JAVA_TEXT = "スッキリわかるJava入門";
/**
* TODO
* JavaCurriculumクラスのコンストラクタ
* 親のコンストラクタに、カリキュラムのファイル名を引数で渡す
*
* @throws FileNotFoundException カリキュラム一覧ファイルが見つからなかった場合はエラー
*/
/**
* TODO
* getCurriculumNameメソッドのオーバーライド
*
* @return カリキュラム名
*/
}

View File

@@ -0,0 +1,4 @@
# オブジェクト指向総合復習問題 Question2-2
TODOコメントを埋めて、コース関連クラスを作ろう!
カリキュラム関連クラスは以前の問題からコピーして移行しましょう。

View File

@@ -0,0 +1,70 @@
package com.rhizome.beans.course;
import java.util.List;
import com.rhizome.beans.curriculum.Curriculum;
/**
* コースクラス
* 各コースの元となる抽象クラス
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public abstract class Course {
// コース名
protected String courseName;
// カリキュラムリスト
protected List<Curriculum> curriculumList;
/**
* TODO
* Courceクラスのコンストラクタ
* コース名フィールドを初期化する
* 新人研修のカリキュラムリストを作成する
*
* @throws FileNotFoundException ファイルがなかった場合エラーとする
*/
/**
* TODO
* printAllCurriculumName()メソッド
* カリキュラムリストの中にあるすべてのカリキュラムのカリキュラム名と単元名を表示する
*/
/**
* TODO
* getUnitNameByDateTime()メソッド
* 日付を元に単元名を取得するメソッド
*
* @param dateTime 文字列の日時 「MM/dd HH:mm」形式
* @return 単元名 or 指定した日時で取得できなかった場合はnull
*/
public String getUnitNameByDateTime(String dateTime) {
String unitName = null;
// 全カリキュラムから捜索
// カリキュラムマップから日時で検索
// 見つかった場合はループを終える
}
/**
* TODO
* getCourseName()メソッド
* コース名を返却する抽象メソッド
*
* @return コース名
*/
/**
* TODO
* createInductionCurriculums()メソッド
* 新入社員研修カリキュラムを作成する抽象メソッド
*
* @throws FileNotFoundException カリキュラム一覧ファイルが見つからなかった場合はエラー
*/
}

View File

@@ -0,0 +1,33 @@
package com.rhizome.beans.course;
/**
* Javaのコースクラス
* Javaコースとして、コース名やカリキュラム情報を保持するクラス
* TODO Courseクラスを継承する
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class JavaCourse {
// コース名
private final static String COURCE_NAME = "Javaコース";
/**
* TODO
* getCourceNameメソッドのオーバーライド
*
* @return コース名
*/
/**
* TODO
* createInductionCurriculums()メソッド
* 新入社員研修 Javaコース作成
* curriculumListフィールドに、カリキュラムを追加していく
* JavaコースはJavaのカリキュラムとDBのカリキュラムが含まれる
*
* @throws FileNotFoundException カリキュラム一覧ファイルが見つからなかった場合はエラー
*/
}

View File

@@ -0,0 +1,4 @@
# オブジェクト指向総合復習問題 Question2-3
TODOコメントを埋めて、受講生関連クラスを作ろう!
カリキュラム関連クラス、コース関連クラスは以前の問題からコピーして移行しましょう。

View File

@@ -0,0 +1,63 @@
package com.rhizome.beans.student;
import com.rhizome.beans.course.Course;
/**
* Javaの受講生クラス
* Java受講生として、コース情報や研修で行う動作を保持するクラス
* TODO Studentクラスを継承する
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class JavaStudent{
// 受講するコース(受講コースは共通のためstatic)
private static Course courses;
// デフォルト自己紹介
private final static String INTRO_DEFAULT_MESSAGE = "初心者なので頑張ります!";
/**
* TODO
* JavaStudentクラスのコンストラクタ
* nameフィールドとageフィールドを初期化
*
* @param name 名前
* @param age 年齢
*/
/**
* JavaStudentクラスのコンストラクタ
* nameフィールド、ageフィールド、introMessageフィールドを初期化
*
* @param name 名前
* @param age 年齢
* @param introMessage 自己紹介メッセージ
*/
/**
* TODO
* introduceメソッドのオーバーライド
*/
@Override
public void introduce() {
System.out.println("初めまして。" + this.name + "と申します。");
/*
* TODO
* もしメッセージが代入されていれば代入されたメッセージを表示する
* メッセージが代入されていなければデフォルトの自己紹介メッセージを表示する
*/
}
public static Course getCourses() {
return courses;
}
public static void setCourses(Course courses) {
JavaStudent.courses = courses;
}
}

View File

@@ -0,0 +1,45 @@
package com.rhizome.beans.student;
/**
* 学習インタフェース
* 学習する際に必要となる機能
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public interface Learn {
/**
* TODO
* question()メソッド
* 質問メソッド
*
* @param unit 単元名
*/
/**
* TODO
* learn()メソッド
* 学習メソッド
*
* @param unit 単元名
*/
/**
* TODO
* review()メソッド
* 復習メソッド
*
* @param unit 単元名
*/
/**
* TODO
* prepare()メソッド
* 予習メソッド
*
* @param unit 単元名
*/
}

View File

@@ -0,0 +1,66 @@
package com.rhizome.beans.student;
/**
* 受講生クラス
* 各コースの受講生の元となる抽象クラス
* TODO Learnインターフェースを実装する
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public abstract class Student {
// 名前
protected String name;
// 年齢
protected int age;
// 自己紹介メッセージ
protected String introMessage;
/**
* TODO
* Studentクラスのコンストラクタ
* nameとageフィールド初期化用
*
* @param name 名前
* @param age 年齢
*/
/**
* Studentクラスのコンストラクタ
* nameフィールド、ageフィールド、introMessageフィールドを初期化
*
* @param name 名前
* @param age 年齢
* @param introMessage 自己紹介メッセージ
*/
/**
* TODO
* introduce()メソッド 抽象メソッド
* 自己紹介メソッド
*/
/**
* TODO
* questionメソッドのオーバーライド
*/
/**
* TODO
* learnメソッドのオーバーライド
*/
/**
* TODO
* reviewメソッドのオーバーライド
*/
/**
* TODO
* prepareメソッドのオーバーライド
*/
}

View File

@@ -0,0 +1,4 @@
# オブジェクト指向総合復習問題 Question2-3
TODOコメントを埋めて、研修実施クラスを作ろう!
カリキュラム関連クラス、コース関連クラス、受講生関連クラスは以前の問題からコピーして移行しましょう。

View File

@@ -0,0 +1,63 @@
package com.rhizome.main;
/**
* 新入社員研修実行クラス
* コースや受講生を作成し、研修を実施するクラス
*
* @author ITCollege
* @since 2022
* ------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class Induction {
public static void main(String[] args) {
// TODO createCourseメソッドを使用して、コース作成
// TODO Java受講生のコースセット
// TODO createStudentListメソッドを使用して、受講生作成
// TODO introduceTimeメソッドを使用して、自己紹介タイム
// TODO inductionStartメソッドを使用して、研修スタート
}
/**
* TODO
* createCourse()メソッド
* Javaコース作成メソッド
*
* @return 作成したコース
* @throws FileNotFoundException カリキュラム作成時のエラー
*/
/**
* TODO
* createStudentList()メソッド
* 受講生作成メソッド
* 受講生は2人以上作ってリストに追加してください
*
* @return 作成した受講生リスト
*/
/**
* TODO
* introduceTime()メソッド
* 自己紹介タイム
* 受講生分introduceメソッドを実行する
*
* @param studentList 受講生リスト
*/
/**
* TODO
* 研修開始メソッド
* JavaとDBの単元をすべて表示して、
* 本日の単元を表示する
* 「本日」はカリキュラムファイルの日時を見て、単元名を取得できる日時なら何でもよいです
*
* inductionStart()メソッド
*/
}

View File

@@ -0,0 +1,31 @@
# オブジェクト指向総合復習問題
本問題はオブジェクト指向を総合的に学べる問題となっています。
# システム概要
研修システム
# 機能一覧
- カリキュラム作成機能
- コース作成機能
- 受講生作成機能
- 研修実施機能
# 仕様説明
本システムでは、Javaコースを開講することができ、
コースを作成することで自動的にカリキュラムが設定されるようになっています。
Javaコースでは、「Java」と「DB」のカリキュラムがそれぞれ設定され、
カリキュラム内容としては、fileフォルダに入っているCSVファイルにてそれぞれ確認・修正できるようになっています。
また、Javaコースを受講する受講生も作成し、研修を実施することができます。
# 問題概要
本問題では、上記の仕様を満たすシステムを段階的にプログラムしていき、
最終的に研修システムとして実行できるようにしていきます。
オブジェクト指向全範囲を使用していますので、テキストやネットを駆使しながら解いていきましょう。
# 段階
1. 完成したプログラムにコメントを追加してみよう
2. TODOに沿ってプログラムしてみよう
1. カリキュラム関連のクラスを作成
2. コース関連のクラスを作成
3. 受講生関連のクラス作成
4. メインとなる研修クラスを作成

View File

@@ -0,0 +1,15 @@
/*
* Calendar.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class Calendar {
/**
* @param args
*/
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,2 @@
java -jar Calendar.jar
pause

View File

@@ -0,0 +1,23 @@
<EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>́A<CD81><41><EFBFBD>Ƃ̖<C682><CC96>_<EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>A<EFBFBD>S<EFBFBD>͂<EFBFBD><CD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>̐<EFBFBD><CC90><EFBFBD><EFBFBD>ȗ<EFBFBD><C897>z<EFBFBD>ƖړI<DA93><49><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>邱<EFBFBD>Ƃ𐾂<C682><F090BE82>B
<EFBFBD>S<EFBFBD>Ă̐l<EFBFBD>͐<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><EFBFBD>ē<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>œƗ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̌<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
<EFBFBD>V<EFBFBD>͐l<EFBFBD>̏<EFBFBD><EFBFBD>ɐl<EFBFBD>𑢂炸<EFBFBD>l<EFBFBD>̉<EFBFBD><EFBFBD>ɐl<EFBFBD>𑢂炸<EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̒<EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD>𔲂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɛፑ<EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‚<EFBFBD><EFBFBD>Ƃ͑傫<EFBFBD>ȍK<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>̗t<EFBFBD>̗t<EFBFBD><EFBFBD><EFBFBD>Ɍ<EFBFBD><EFBFBD>Ԕ<EFBFBD><EFBFBD>I<EFBFBD>̒u<EFBFBD><EFBFBD><EFBFBD>Ă͂<EFBFBD><EFBFBD>ڂꂱ<EFBFBD>ڂ<EFBFBD><EFBFBD>Ă͒u<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ɍs<EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD>ƂɎc<C98E><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɓ@<40>A<EFBFBD><41><EFBFBD>čs<C48D><73><EFBFBD>ʂ<EFBFBD><CA82>킩<EFBFBD>ꂼ<EFBFBD>Ǝv<C68E><76>
<EFBFBD>g<EFBFBD>͂<EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>̖<EFBFBD><CC96>ӂɁ@<40><><EFBFBD><EFBFBD><EFBFBD>ʂƂ<CA82><C682>@<40><><EFBFBD>ߒu<DF92><75><EFBFBD>܂<EFBFBD><DC82>@<40><><EFBFBD>a<EFBFBD><61>
<EFBFBD><EFBFBD><EFBFBD>ƂАg<EFBFBD>́@<40>ڈ΂̓<CE82><CC93><EFBFBD><EFBFBD>Ɂ@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>@<40><><EFBFBD>͓<EFBFBD><CD93>́@<40>N<EFBFBD><4E><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>߂Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΕK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‚<EFBFBD><EFBFBD>͂ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>w<EFBFBD>͕͂K<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󂵂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>҂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>قǐ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɗ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͑<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ł͂Ȃ<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŗ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD>
<EFBFBD>d<EFBFBD>v<EFBFBD>Ȃ̂͑<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꂽ<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>ς<EFBFBD><EFBFBD>F<EFBFBD>߂邱<EFBFBD>ƂƁA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɍ<EFBFBD><EFBFBD>킹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ė<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>炽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͈ꎞ<EFBFBD>̒p<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʂ͈ꐶ<EFBFBD>̒p
<EFBFBD>}<7D><><EFBFBD>Ă͎<C482><CD8E><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ł͂Ȃ<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><EFBFBD>ɂȂ邱<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>瓦<EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>A<EFBFBD>K<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‚<EFBFBD><EFBFBD>͂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>Ȃ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Č<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ƁA<EFBFBD><EFBFBD><EFBFBD>炸<EFBFBD>Ɍ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂́A<EFBFBD>Ӗ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ǂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‚<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>΁A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>đ<EFBFBD><EFBFBD>͂Ȃ<EFBFBD>
<EFBFBD>ߋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>lj<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>ԂɂȂ<EFBFBD><EFBFBD>Ă͂Ȃ<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>ׂ̈ɂ͕׋<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鎖<EFBFBD><EFBFBD>
<EFBFBD>撣<EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͎̂<EFBFBD><EFBFBD>肪<EFBFBD>F<EFBFBD>߂鎖<EFBFBD>ŁA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撣<EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ł͂Ȃ<EFBFBD>
<EFBFBD>厖<EFBFBD>Ȃ̂͂ǂ̓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>Ԃ<EFBFBD><EFBFBD>ł͂Ȃ<EFBFBD><EFBFBD>A<EFBFBD>I<EFBFBD>񂾓<EFBFBD><EFBFBD>łǂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>邩

View File

@@ -0,0 +1,12 @@
/*
* Typing.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class Typing {
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,54 @@
/*
* UtilClass.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class UtilClass {
private static ArrayList<String> getFileList() {
ArrayList<String> list = new ArrayList<String>();
String strFileName = "file/Sentence.txt";
try (Scanner scanner = new Scanner(new File(strFileName))) {
while(scanner.hasNext()) {
String line = scanner.nextLine();
list.add(line);
}
} catch (FileNotFoundException e) {
// TODO 自動生成された catch ブロック
System.out.println("ファイルが読み込めませんでした");
list = null;
}
return list;
}
public static String getRandomSentence() {
ArrayList<String> list = getFileList();
String retStr = "";
if (list == null || list.size() <= 0) {
return "ファイル内容が不正です";
}
Collections.shuffle(list);
return list.get(0);
}
public static boolean chkStringEquals(String baseStr, String targetStr) {
return baseStr.trim().equals(targetStr.trim());
}
}

View File

@@ -0,0 +1,2 @@
java -jar Typing.jar
pause

View File

@@ -0,0 +1,15 @@
/*
* Histogram.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
public class Histogram {
/**
* @param args
*/
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,2 @@
java -jar Histgram.jar 1 2 3
pause

View File

@@ -0,0 +1,2 @@
java -jar Histgram.jar 1 2 3 4 5 6 7 8 9
pause

View File

@@ -0,0 +1,2 @@
java -jar Histgram.jar
pause

View File

@@ -0,0 +1,75 @@
package common.japan;
/**
* 都道府県
*
* @author IT College
*/
public enum Prefecture {
HOKKAIDO("北海道", "札幌", 5381733, 83424.22),
AOMORI("青森県", "青森", 1308265, 9645.40),
IWATE("岩手県", "盛岡", 1279594, 15275.01),
MIYAGI("宮城県", "仙台", 2333899, 7282.14),
AKITA("秋田県", "秋田", 1023119, 11637.54),
YAMAGATA("山形県", "山形", 1123891, 9323.15),
FUKUSHIMA("福島県", "福島", 1914039, 13783.75),
IBARAKI("茨城県", "水戸", 2916976, 6096.93),
TOCHIGI("栃木県", "宇都宮", 1974255, 6408.09),
GUMMA("群馬県", "前橋", 1973115, 6362.28),
SAITAMA("埼玉県", "さいたま", 7266534, 3797.75),
CHIBA("千葉県", "千葉", 6222666, 5157.64),
TOKYO("東京都", "新宿", 13515271, 2190.90),
KANAGAWA("神奈川県", "横浜", 9126214, 2415.81),
NIIGATA("新潟県", "新潟", 2304264, 12584.10),
TOYAMA("富山県", "富山", 1066328, 4247.61),
ISHIKAWA("石川県", "金沢", 1154008, 4186.15),
FUKUI("福井県", "福井", 786740, 4190.43),
YAMANASHI("山梨県", "甲府", 834930, 4464.99),
NAGANO("長野県", "長野", 2098804, 13561.56),
GIFU("岐阜県", "岐阜", 2031903, 10621.29),
SHIZUOKA("静岡県", "静岡", 3700305, 7778.70),
AICHI("愛知県", "名古屋", 7483128, 5172.40),
MIE("三重県", "津", 1815865, 5774.39),
SHIGA("滋賀県", "大津", 1412916, 4017.38),
KYOTO("京都府", "京都", 2610353, 4612.20),
OSAKA("大阪府", "大阪", 8839469, 1904.99),
HYOGO("兵庫県", "神戸", 5534800, 8400.90),
NARA("奈良県", "奈良", 1364316, 3690.94),
WAKAYAMA("和歌山県", "和歌山", 963579, 4724.68),
TOTTORI("鳥取県", "鳥取", 573441, 3507.05),
SHIMANE("島根県", "松江", 694352, 6708.23),
OKAYAMA("岡山県", "岡山", 1921525, 7114.62),
HIROSHIMA("広島県", "広島", 2843990, 8479.38),
YAMAGUCHI("山口県", "山口", 1404729, 6112.30),
TOKUSHIMA("徳島県", "徳島", 755733, 4146.93),
KAGAWA("香川県", "高松", 976263, 1876.73),
EHIME("愛媛県", "松山", 1385262, 5676.10),
KOCHI("高知県", "高知", 728276, 7103.91),
FUKUOKA("福岡県", "福岡", 5101556, 4986.40),
SAGA("佐賀県", "佐賀", 832832, 2440.64),
NAGASAKI("長崎県", "長崎", 1377187, 4132.32),
KUMAMOTO("熊本県", "熊本", 1786170, 7409.32),
OITA("大分県", "大分", 1166338, 6340.61),
MIYAZAKI("宮崎県", "宮崎", 1104069, 7735.31),
KAGOSHIMA("鹿児島県", "鹿児島", 1648177, 9188.10),
OKINAWA("沖縄県", "那覇", 1433566, 2281.00);
/** 都道府県名 */
public final String name;
/** 都道府県庁所在地 */
public final String capitalCity;
/** 人口(2015年10月1日 国勢調査人口) */
public final int population;
/** 面積(単位: km^2) */
public final double area;
private Prefecture(String name, String capitalCity, int population, double area) {
this.name = name;
this.capitalCity = capitalCity;
this.population = population;
this.area = area;
}
}

View File

@@ -0,0 +1,93 @@
package common.japan;
import java.util.Arrays;
import java.util.List;
/**
* 地方
*
* @author IT College
*
*/
public enum Region {
HOKKAIDO("北海道", new Prefecture[] {
Prefecture.HOKKAIDO
}),
TOHOKU("東北", new Prefecture[] {
Prefecture.AOMORI,
Prefecture.IWATE,
Prefecture.MIYAGI,
Prefecture.AKITA,
Prefecture.YAMAGATA,
Prefecture.FUKUSHIMA
}),
KANTO("関東", new Prefecture[] {
Prefecture.IBARAKI,
Prefecture.TOCHIGI,
Prefecture.GUMMA,
Prefecture.SAITAMA,
Prefecture.CHIBA,
Prefecture.TOKYO,
Prefecture.KANAGAWA
}),
CHUBE("中部", new Prefecture[] {
Prefecture.NIIGATA,
Prefecture.TOYAMA,
Prefecture.ISHIKAWA,
Prefecture.FUKUI,
Prefecture.YAMANASHI,
Prefecture.NAGANO,
Prefecture.GIFU,
Prefecture.SHIZUOKA,
Prefecture.AICHI
}),
KINKI("近畿", new Prefecture[] {
Prefecture.MIE,
Prefecture.SHIGA,
Prefecture.KYOTO,
Prefecture.OSAKA,
Prefecture.HYOGO,
Prefecture.NARA,
Prefecture.WAKAYAMA
}),
CHUGOKU("中国", new Prefecture[] {
Prefecture.TOTTORI,
Prefecture.SHIMANE,
Prefecture.OKAYAMA,
Prefecture.HIROSHIMA,
Prefecture.YAMAGUCHI
}),
SHIKOKU("四国", new Prefecture[] {
Prefecture.TOKUSHIMA,
Prefecture.KAGAWA,
Prefecture.EHIME,
Prefecture.KOCHI
}),
KYUSHU("九州", new Prefecture[] {
Prefecture.FUKUOKA,
Prefecture.SAGA,
Prefecture.NAGASAKI,
Prefecture.KUMAMOTO,
Prefecture.OITA,
Prefecture.MIYAZAKI,
Prefecture.KAGOSHIMA
}),
OKINAWA("沖縄", new Prefecture[] {
Prefecture.OKINAWA
});
private Region(String name, Prefecture[] prefectures) {
this.name = name;
this.prefectures = prefectures;
}
/** 地方名 */
public final String name;
private final Prefecture[] prefectures;
/** 地方に属する都道府県 */
public List<Prefecture> getPrefectureList() {
return Arrays.asList(Arrays.copyOf(prefectures, prefectures.length));
}
}

View File

@@ -0,0 +1,7 @@
/**
* 日本パッケージ<br>
* @see <a href="http://wsmh.net/121025/">データ元</a>
* @author IT College
*
*/
package common.japan;

View File

@@ -0,0 +1,20 @@
/*
* PTraEx_01.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
import common.japan.Prefecture;
public class PTraEx_01 {
public static void main(String[] args) {
/*
* 以下の処理をforEachを使って書き換えて下さい
*/
for (Prefecture prefecture : Prefecture.values()) {
System.out.println(prefecture.name);
}
}
}

View File

@@ -0,0 +1,28 @@
/*
* PTraEx_02.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
import java.util.ArrayList;
import java.util.List;
import common.japan.Prefecture;
public class PTraEx_02 {
public static void main(String[] args) {
/*
* 以下の処理をmapとforEachを使って書き換えて下さい
*/
List<String> capitalCityList = new ArrayList<>();
for (Prefecture prefecture : Prefecture.values()) {
capitalCityList.add(prefecture.capitalCity);
}
for (String capitalCity : capitalCityList) {
System.out.println(capitalCity);
}
}
}

View File

@@ -0,0 +1,22 @@
/*
* PTraEx_03.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
import common.japan.Prefecture;
public class PTraEx_03 {
public static void main(String[] args) {
/*
* 以下の処理をmap、filter、forEachを使って書き換えて下さい
*/
for (Prefecture prefecture : Prefecture.values()) {
if (prefecture.name.endsWith("府")) {
System.out.println(prefecture.name);
}
}
}
}

View File

@@ -0,0 +1,23 @@
/*
* PTraEx_04.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
import common.japan.Prefecture;
import common.japan.Region;
public class PTraEx_04 {
public static void main(String[] args) {
/*
* 以下の処理をmap、flatMap、forEachを使って書き換えて下さい
*/
for (Region region : Region.values()) {
for (Prefecture prefecture : region.getPrefectureList()) {
System.out.println(prefecture.name);
}
}
}
}

View File

@@ -0,0 +1,19 @@
/*
* PTraEx_05.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
public class PTraEx_05 {
public static void main(String[] args) {
/*
* 以下の処理をif文・switch文・for文・while文を使わずに実装してください
* ・都道府県名と都道府県庁所在地名が異なる都道府県を抽出する
* ・抽出した都道府県を"都道府県名(都道府県庁所在地名)"の形でコンソールに出力する
* ・抽出した都道府県のうち、人口が100万人以上の都道府県を抽出する
* ・抽出した都道府県の人口の合計を算出してコンソールに出力する
*/
}
}

View File

@@ -0,0 +1,17 @@
/*
* PTraEx_06.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
public class PTraEx_06 {
public static void main(String[] args) {
/*
* 以下の処理をfor文・while文を使わずに実装してください
* ・100以下の素数をコンソール出力する
* ・100以下の素数の和をコンソール出力する
*/
}
}

View File

@@ -0,0 +1,36 @@
/*
* PTraEx_07.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
import java.util.Arrays;
import java.util.List;
public class PTraEx_07 {
public static void main(String[] args) {
/*
* isAllOddNumberメソッドを実装し、以下の処理でエラーが出ないようにしてください。
*/
if (!isAllOddNumber(Arrays.asList(1, 3, 5, 7, 9))) {
throw new IllegalStateException();
}
if (!isAllOddNumber(Arrays.asList(111, 1119, 47, 99))) {
throw new IllegalStateException();
}
if (isAllOddNumber(Arrays.asList(2, 5, 7, 11, 13, 15, 18))) {
throw new IllegalStateException();
}
}
/**
* 与えられた整数リストの要素が全て奇数かどうか判定する
* @param numbers 判定対象の整数リスト
* @return リストの全要素が奇数であればtrue、それ以外はfalseを返す
*/
private static boolean isAllOddNumber(List<Integer> numbers) {
throw new UnsupportedOperationException("この行を削除し、if文・switch文・for文・while文を使わずに実装してください");
}
}

View File

@@ -0,0 +1,23 @@
/*
* PTraEx_08.java
* 作成 IT-College 2017
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package ptraEx;
public class PTraEx_08 {
public static void main(String[] args) {
/*
* 以下の処理をif文・switch文・for文・while文を使わずに実装してください
* ・本州に属する都府県のリストを生成し、変数に格納する
* ・上記のリストについて以下の値をコンソール出力する
* ・人口の最小値
* ・人口の最大値
* ・人口の平均値
* ・人口密度の最小値
* ・人口密度の最大値
* ・人口密度の平均値
*/
}
}

View File

@@ -0,0 +1,24 @@
○システム名
DAO
○システム説明
employeeテーブルを管理するDAOプログラムを作成
○出題タイミング
「Java-DB連携(MySQL).pptx」が終了後に出題
○配布物
実行例
○課題の進め方
・個人で実施させる場合(1日予定)
基本的には講師・他の受講生に対する質問はなしにしてください。
※ただし、教室全体のレベルが低い場合は受講生同士での質問はOKにしてください。
時間は日次作業(スピーチ・小テスト等)が終わり次第残りの時間をすべて充てて作業させてください。
・グループで実施させる場合(1.5日予定)
グループでクラス設計をさせ、設計を元に各々作成する(コピペは厳禁)
○納品物
作成したプログラム
○早く終わったら・・・・
テストを実施させてください

View File

@@ -0,0 +1 @@
/~$DAO作成用テーブル定義書.xlsx

View File

@@ -0,0 +1,39 @@
-- employeeテーブルの作成
DROP TABLE IF EXISTS employee;
CREATE TABLE employee (
id_employee INT AUTO_INCREMENT PRIMARY KEY
, nm_employee VARCHAR(50) NOT NULL
, kn_employee VARCHAR(50) NOT NULL
, mail_address VARCHAR(100) NOT NULL
, password VARCHAR(10) NOT NULL
, id_department INT NOT NULL
)
AUTO_INCREMENT = 10000;
-- 部署テーブルの作成
DROP TABLE IF EXISTS department;
CREATE TABLE department (
id_department INT AUTO_INCREMENT PRIMARY KEY
, nm_department VARCHAR(10) NOT NULL
)
AUTO_INCREMENT = 10;
-- 社員テーブルのデータ
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('山田龍也','ヤマダタツヤ','yamada@hoge.jp','aaa',10);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('高橋準','タカハシジュン','jtaka@hoge.jp','bbb',10);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('麻枝史明','マエダフミアキ','fmak@hoge.jp','ccc',11);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('丸戸章介','マルトショウスケ','marusyo@hoge.jp','ddd',12);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('三宅武','ミヤケタケシ','miya@hoge.jp','eee',13);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('丸井悠','マルイハルカ','haru@hoge.jp','fff',13);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('涼元香織','スズモトカオリ','suzumoto@hoge.jp','ggg',13);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('葉山稔','ハヤマミノル','mhayama@hoge.jp','hhh',14);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('川上朱里','カワカミアカリ','kawakami@hoge.jp','iii',14);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('杉井肇','スギイハジメ','sugi@hoge.jp','jjj',15);
-- 部署テーブルのデータ
INSERT INTO department (nm_department) VALUES ('役員');
INSERT INTO department (nm_department) VALUES ('人事・総務部');
INSERT INTO department (nm_department) VALUES ('経理部');
INSERT INTO department (nm_department) VALUES ('システム開発事業部');
INSERT INTO department (nm_department) VALUES ('教育事業部');
INSERT INTO department (nm_department) VALUES ('営業企画部');

View File

@@ -0,0 +1,39 @@
-- employeeテーブルの作成
DROP TABLE IF EXISTS employee;
CREATE TABLE employee (
id_employee serial PRIMARY KEY
,nm_employee varchar(50) NOT NULL
,kn_employee varchar(50) NOT NULL
,mail_address varchar(100) NOT NULL
,password varchar(10) NOT NULL
,id_department integer NOT NULL
);
ALTER SEQUENCE employee_id_employee_seq RESTART WITH 10000;
-- 部署テーブルの作成
DROP TABLE IF EXISTS department;
CREATE TABLE department (
id_department serial PRIMARY KEY
,nm_department varchar(10) NOT NULL
);
alter sequence department_id_department_seq restart with 10;
-- 社員テーブルのデータ
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('山田龍也','ヤマダタツヤ','yamada@hoge.jp','aaa',10);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('高橋準','タカハシジュン','jtaka@hoge.jp','bbb',10);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('麻枝史明','マエダフミアキ','fmak@hoge.jp','ccc',11);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('丸戸章介','マルトショウスケ','marusyo@hoge.jp','ddd',12);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('三宅武','ミヤケタケシ','miya@hoge.jp','eee',13);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('丸井悠','マルイハルカ','haru@hoge.jp','fff',13);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('涼元香織','スズモトカオリ','suzumoto@hoge.jp','ggg',13);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('葉山稔','ハヤマミノル','mhayama@hoge.jp','hhh',14);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('川上朱里','カワカミアカリ','kawakami@hoge.jp','iii',14);
INSERT INTO employee (nm_employee, kn_employee, mail_address, password, id_department) VALUES ('杉井肇','スギイハジメ','sugi@hoge.jp','jjj',15);
-- 部署テーブルのデータ
INSERT INTO department (nm_department) VALUES ('役員');
INSERT INTO department (nm_department) VALUES ('人事・総務部');
INSERT INTO department (nm_department) VALUES ('経理部');
INSERT INTO department (nm_department) VALUES ('システム開発事業部');
INSERT INTO department (nm_department) VALUES ('教育事業部');
INSERT INTO department (nm_department) VALUES ('営業企画部');

View File

@@ -0,0 +1,78 @@
/*
* DepartmentDAO.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.db.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.rhizome.example.db.dao.base.BaseDao;
import com.rhizome.example.db.entity.Department;
/**
* 部署テーブルのDAOです
* @author IT-College
*
*/
public class DepartmentDAO extends BaseDao<Department> {
/**
* コンストラクタ
* @param con
*/
public DepartmentDAO(Connection con) {
super(con);
}
@Override
protected String getTableId() {
return "department";
}
@Override
protected Department rowMapping(ResultSet rs) throws SQLException {
Department department = new Department();
department.setIdDepartment(rs.getInt("id_department"));
department.setNmDepartment(rs.getString("nm_department"));
return department;
}
@Override
protected List<String> setPrimaryKey() {
List<String> aryPK = new ArrayList<>();
aryPK.add("id_department");
return aryPK;
}
@Override
protected List<String> setColumnsList() {
List<String> aryColumns = new ArrayList<>();
aryColumns.add("id_department");
aryColumns.add("nm_department");
return aryColumns;
}
/**
* id_departmentを除く項目を登録するメソッド
* departmentテーブルでは、pk項目がオートインクリメントのため、pk項目を外して登録します
* @param emp 部署テーブルのDTO
* @return 登録件数
* @throws SQLException SQLの実行失敗時に起こる例外
*/
public int insertRemovePk(Department emp) throws SQLException {
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO ");
sql.append(super.tableId);
sql.append(" (nm_department) VALUES (?)");
super.stmt = super.con.prepareStatement(sql.toString());
super.stmt.setString(1, emp.getNmDepartment());
return super.stmt.executeUpdate();
}
}

View File

@@ -0,0 +1,136 @@
/*
* EmployeeDAO.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.db.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.rhizome.example.db.dao.base.BaseDao;
import com.rhizome.example.db.entity.Employee;
/**
* employeeのDAOクラス
*
* @author IT-College
*
*/
public class EmployeeDAO extends BaseDao<Employee> {
/**
* コンストラクタ
*
* @param con
*/
public EmployeeDAO(Connection con) {
super(con);
}
@Override
protected String getTableId() {
return "employee";
}
@Override
protected Employee rowMapping(ResultSet rs) throws SQLException {
Employee employee = new Employee();
employee.setIdEmployee(rs.getInt("id_employee"));
employee.setNmEmployee(rs.getString("nm_employee"));
employee.setKnEmployee(rs.getString("kn_employee"));
employee.setMailAddress(rs.getString("mail_address"));
employee.setPassword(rs.getString("password"));
employee.setIdDepartment(rs.getInt("id_department"));
return employee;
}
@Override
protected List<String> setPrimaryKey() {
ArrayList<String> aryPK = new ArrayList<String>();
aryPK.add("id_employee");
return aryPK;
}
@Override
protected List<String> setColumnsList() {
ArrayList<String> aryColumns = new ArrayList<>();
aryColumns.add("id_employee");
aryColumns.add("nm_employee");
aryColumns.add("kn_employee");
aryColumns.add("mail_address");
aryColumns.add("password");
aryColumns.add("id_department");
return aryColumns;
};
/**
* パラメータを指定して検索するメソッド
*
* @param param EmployeeのDTO
* @return 検索結果
* @throws SQLException SQLの実行失敗時に起こる例外
*/
public List<Employee> selectByPram(Employee param) throws SQLException {
List<Object> aryParam = new ArrayList<>();
StringBuffer sql = new StringBuffer();
sql.append(super.sqlSelectAll);
String where = " WHERE ";
if (super.setSQLParam(sql, "id_employee", param.getIdEmployee(), aryParam, where)) {
where = " AND ";
}
if (super.setSQLParam(sql, "nm_employee", param.getNmEmployee(), aryParam, where)) {
where = " AND ";
}
if (super.setSQLParam(sql, "kn_employee", param.getKnEmployee(), aryParam, where)) {
where = " AND ";
}
if (super.setSQLParam(sql, "mail_address", param.getMailAddress(), aryParam, where)) {
where = " AND ";
}
if (super.setSQLParam(sql, "password", param.getPassword(), aryParam, where)) {
where = " AND ";
}
if (super.setSQLParam(sql, "id_department", param.getIdDepartment(), aryParam, where)) {
where = " AND ";
}
List<Employee> aryResult = new ArrayList<Employee>();
this.stmt = con.prepareStatement(sql.toString());
this.setParamValue(aryParam, 1);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
aryResult.add(this.rowMapping(rs));
}
stmt.close();
return aryResult;
}
/**
* id_employeeを除く項目を登録するメソッド
* employeeテーブルでは、pk項目がオートインクリメントのため、pk項目を外して登録します
* @param emp 社員テーブルのDTO
* @return 登録件数
* @throws SQLException SQLの実行失敗時に起こる例外
*/
public int insertRemovePk(Employee emp) throws SQLException {
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO ");
sql.append(super.tableId);
sql.append(" (nm_employee, kn_employee, mail_address, password, id_department) VALUES (?, ?, ?, ?, ?)");
super.stmt = super.con.prepareStatement(sql.toString());
super.stmt.setString(1, emp.getNmEmployee());
super.stmt.setString(2, emp.getKnEmployee());
super.stmt.setString(3, emp.getMailAddress());
super.stmt.setString(4, emp.getPassword());
super.stmt.setInt(5, emp.getIdDepartment());
return super.stmt.executeUpdate();
}
}

View File

@@ -0,0 +1,327 @@
/*
* BaseDao.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.db.dao.base;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.rhizome.example.db.entity.base.BaseEntity;
import com.rhizome.example.exception.AppException;
/**
* DAOの基底クラスです。 各SQLにおいての単純なCRUDを提供します。
* DAOを作る場合は、このクラスを継承して作成してください。
*
* @author IT-College
*
*/
public abstract class BaseDao<T extends BaseEntity> {
protected Connection con;
protected PreparedStatement stmt;
protected String tableId;
protected List<String> aryPrimaryKey;
protected List<String> columnsList;
protected String sqlSelectAll;
protected String sqlInsertAllColumn;
protected String sqlUpdateByPK;
protected String sqlDeleteByPK;
protected BaseDao(Connection con) {
this.con = con;
this.tableId = this.getTableId();
this.aryPrimaryKey = this.setPrimaryKey();
this.columnsList = this.setColumnsList();
this.sqlSelectAll = this.getSelectSQL();
this.sqlUpdateByPK = this.getUpdateSQL();
this.sqlDeleteByPK = this.getDeleteSQL();
this.sqlInsertAllColumn = this.getInsertSQL();
}
/**
* 全件検索SQLの取得
*
* @return 全件検索用のSQL
*/
private String getSelectSQL() {
return "SELECT * FROM " + this.tableId;
}
/**
* 更新用SQLの取得 <br />
* 主キーは更新しないものとする
*
* @return 主キー以外の項目を更新するSQL
*/
private String getUpdateSQL() {
StringBuffer strSQL = new StringBuffer();
strSQL.append("UPDATE ");
strSQL.append(this.tableId);
strSQL.append(" SET ");
for (String col : this.columnsList) {
if (!aryPrimaryKey.contains(col)) {
strSQL.append(col);
strSQL.append(" = ?,");
}
}
strSQL.replace(strSQL.length() - 1, strSQL.length(), "");
return strSQL.toString();
}
/**
* 削除用SQLの取得
*
* @return 全件削除用のSQL
*/
private String getDeleteSQL() {
return "DELETE FROM " + this.tableId;
}
/**
* 全カラムを対象とした登録用SQLの取得
*
* @return 全項目を対象としたinsertのSQL
*/
private String getInsertSQL() {
StringBuffer strSQL = new StringBuffer();
strSQL.append("INSERT INTO ");
strSQL.append(this.tableId);
strSQL.append(" (");
for (String col : this.columnsList) {
strSQL.append(col);
strSQL.append(",");
}
strSQL.replace(strSQL.length() - 1, strSQL.length(), "");
strSQL.append(") VALUES (");
for (int i = 0; i < this.aryPrimaryKey.size(); i++) {
strSQL.append("?,");
}
strSQL.replace(strSQL.length() - 1, strSQL.length(), "");
strSQL.append(")");
return strSQL.toString();
}
/**
* 絞り込み条件、登録/更新値等をSQLにセットする
*
* @param aryParam 条件を格納したList int項目ならばIntegerクラス、varchar項目ならばStringクラスで格納してください
* @param index Statementの置換文字インデックス(開始番号)
* @throws SQLException 置換失敗した場合の例外
*/
protected void setParamValue(List<Object> aryParam, int index) throws SQLException {
if (aryParam.size() > 0) {
for (int i = 0; i < aryParam.size(); i++, index++) {
if (aryParam.get(i) instanceof Integer) {
this.stmt.setInt(index, Integer.parseInt(aryParam.get(i).toString()));
} else if (aryParam.get(i) instanceof String) {
this.stmt.setString(index, aryParam.get(i).toString());
}
}
}
}
/**
* 更新・登録・削除を行うSQLの実行
*
* @return 変更件数
* @throws SQLException
*/
protected int doExecuteUpdate() throws SQLException {
int ret = -1;
ret = this.stmt.executeUpdate();
this.stmt.close();
return ret;
}
/**
* 全検索メソッド
*
* @return 検索結果
* @throws SQLException
*/
public List<T> findAll() throws SQLException {
List<T> aryResult = new ArrayList<T>();
String sql = this.sqlSelectAll;
this.stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
aryResult.add(this.rowMapping(rs));
}
stmt.close();
return aryResult;
}
/**
* 主キー検索メソッド
* @param aryParam 主キー条件を格納したList(int項目ならばIntegerクラス、varchar項目ならばStringクラスで格納してください)
* @return 検索した結果のDTO
* @throws SQLException SQLで何かしらのエラーが発生した場合の例外
* @throws AppException SQL生成時に起こった例外
*/
public T findByPrimaryKey(List<Object> aryParam) throws SQLException, AppException {
this.stmt = con.prepareStatement(sqlConcatPrimaryKey(this.sqlSelectAll, aryParam));
this.setParamValue(aryParam, 1);
ResultSet rs = stmt.executeQuery();
T ret = null;
if (rs.next()) {
ret = this.rowMapping(rs);
}
stmt.close();
return ret;
}
/**
* * 登録を行うメソッド
*
* @param aryParam 登録値の順に指定(必須)
* @return 登録件数
* @throws SQLException SQLで何かしらのエラーが発生した場合の例外
*/
public int insertByAllColumns(List<Object> aryParam) throws SQLException {
this.stmt = con.prepareStatement(this.sqlInsertAllColumn);
this.setParamValue(aryParam, 1);
return this.doExecuteUpdate();
}
/**
* 主キーを更新条件に値を登録するメソッド
*
* @param aryParam 更新値 テーブルに設定しているカラム順に指定してください。全項目必須です。
* @return 更新件数
* @throws SQLException SQLで何かしらのエラーが発生した場合の例外
* @throws AppException SQL生成時に起こった例外
*/
public int updateByPrimaryKey(List<Object> aryParam, List<Object> aryPKeyParam) throws SQLException, AppException {
this.stmt = con.prepareStatement(sqlConcatPrimaryKey(this.sqlUpdateByPK, aryPKeyParam));
this.setParamValue(aryParam, 1);
this.setParamValue(aryPKeyParam, aryParam.size() + 1);
return this.doExecuteUpdate();
}
/**
* 主キーを削除条件にレコードを削除するメソッド
*
* @param aryParam 主キー条件を格納したList(int項目ならばIntegerクラス、varchar項目ならばStringクラスで格納してください)
* @return 削除件数
* @throws SQLException SQLで何かしらのエラーが発生した場合の例外
* @throws AppException SQL生成時に起こった例外
*/
public int deleteByPrimaryKey(List<Object> aryPKeyParam) throws SQLException, AppException {
this.stmt = con.prepareStatement(sqlConcatPrimaryKey(this.sqlDeleteByPK, aryPKeyParam));
this.setParamValue(aryPKeyParam, 1);
return this.doExecuteUpdate();
}
/**
* SQLに主キー条件をWhereとして追加するメソッド
* @param sql 主キー条件を追加したいSQL
* @param aryPKeyParam 主キー条件に指定したい値のリスト(主キーのカラム数と差異がある場合は例外が発生します)
* @return 主キー条件を追加した状態のSQL
* @throws AppException SQL生成時に起こった例外
*/
private String sqlConcatPrimaryKey(String sql, List<Object> aryPKeyParam) throws AppException {
StringBuffer sbSQL = new StringBuffer();
if (aryPrimaryKey.size() != aryPKeyParam.size()) {
throw new AppException(AppException.ERROR_CODE.PARAM_SIZE_ERROR);
}
sbSQL.append(sql);
for (int i = 0; i < aryPrimaryKey.size(); i++) {
if (i == 0) {
sbSQL.append(" WHERE ");
} else {
sbSQL.append(" AND ");
}
sbSQL.append(aryPrimaryKey.get(i));
sbSQL.append(" = ?");
}
return sbSQL.toString();
}
// ============================================ Utilメソッド
/**
* 指定された文字列に"%"が含まれている場合はLIKE、なければ"="を返すメソッド
* @param val 条件式に設定したい値
* @return LIKE or =
*/
protected String likeORequals(String val) {
if (val.contains("%")) {
return " LIKE ";
}
return " = ";
}
/**
* 条件式に設定する値を追記するメソッド
*
* @param sql 追記対象のSQL
* @param columns 対象のカラム名
* @param param 条件に指定したい値(int項目ならばIntegerクラス、varchar項目ならばStringクラスで格納してください)
* @param aryParam 条件値を格納しているLIST(SQL生成時に、paramの値を格納します)
* @param where 条件式を連結する際の文字列(WHERE, AND, ORなど)
* @return 追記が正常に出来れていればTRUE, できなかった場合はfalse
*/
protected boolean setSQLParam(StringBuffer sql, String columns, Object param, List<Object> aryParam, String where) {
if (param != null) {
if (param instanceof String) {
if (((String) param).length() > 0) {
sql.append(where);
sql.append(columns);
sql.append(this.likeORequals((String) param));
sql.append("?");
aryParam.add(param);
return true;
}
} else {
sql.append(where);
sql.append(columns);
sql.append(" = ?");
aryParam.add(param);
return true;
}
}
return false;
}
// ============================================ 抽象メソッド
/**
* テーブル物理名を取得する
*
* @return tableName
*/
protected abstract String getTableId();
/**
* 取得したデータのマッピング
*
* @param rs
* @return ArrayList<BaseEntity>
*/
protected abstract T rowMapping(ResultSet rs) throws SQLException;
/**
* カラム一覧をセットする
*
* @return
*/
protected abstract List<String> setColumnsList();
/**
* PKをセットする
*
* @return
*/
protected abstract List<String> setPrimaryKey();
}

View File

@@ -0,0 +1,71 @@
/*
* Department.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.db.entity;
import com.rhizome.example.db.entity.base.BaseEntity;
/**
* DepartmentテーブルのEntity
* @author IT-College
*
*/
public class Department implements BaseEntity {
public static final String TITLE_ID_DEPARTMENT = "部署ID";
public static final String TITLE_NM_DEPARTMENT = "部署名";
/** 部署ID */
private Integer idDepartment;
/** 部署名 */
private String nmDepartment;
/**
* 部署IDを取得します
* @return 部署ID
*/
public Integer getIdDepartment() {
return idDepartment;
}
/**
* 部署IDを設定します
* @param idDepartment 部署ID
*/
public void setIdDepartment(Integer idDepartment) {
this.idDepartment = idDepartment;
}
/**
* 部署名を取得します
* @return 部署名
*/
public String getNmDepartment() {
return nmDepartment;
}
/**
* 部署名を設定します
* @param nmDepartment 部署名
*/
public void setNmDepartment(String nmDepartment) {
this.nmDepartment = nmDepartment;
}
@Override
public String getHeaderTitle() {
StringBuffer sb = new StringBuffer();
sb.append(TITLE_ID_DEPARTMENT);
sb.append(TAB);
sb.append(TITLE_NM_DEPARTMENT);
return sb.toString();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(idDepartment);
sb.append(TAB);
sb.append(nmDepartment);
return sb.toString();
}
}

View File

@@ -0,0 +1,155 @@
/*
* Employee.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.db.entity;
import com.rhizome.example.db.entity.base.BaseEntity;
/**
* EmployeeテーブルのEntity
* @author IT-College
*
*/
public class Employee implements BaseEntity {
public static final String TITLE_ID_EMPLOYEE = "社員ID";
public static final String TITLE_NM_EMPLOYEE = "社員名";
public static final String TITLE_KN_EMPLOYEE = "フリガナ";
public static final String TITLE_MAIL = "メールアドレス";
public static final String TITLE_PASSWORD = "パスワード";
public static final String TITLE_ID_DEPARTMENT = "部署ID";
/** 社員ID */
private Integer idEmployee;
/** 社員名 */
private String nmEmployee;
/** 社員名カナ */
private String knEmployee;
/** メールアドレス */
private String mailAddress;
/** パスワード */
private String password;
/** 部署ID */
private Integer idDepartment;
/**
* 社員IDを取得します
* @return 社員ID
*/
public Integer getIdEmployee() {
return idEmployee;
}
/**
* 社員IDを設定します
* @param idEmployee 社員ID
*/
public void setIdEmployee(Integer idEmployee) {
this.idEmployee = idEmployee;
}
/**
* 社員名を取得します
* @return 社員名
*/
public String getNmEmployee() {
return nmEmployee;
}
/**
* 社員名を設定します
* @param nmEmployee 社員名
*/
public void setNmEmployee(String nmEmployee) {
this.nmEmployee = nmEmployee;
}
/**
* 社員名カナを取得します
* @return 社員名カナ
*/
public String getKnEmployee() {
return knEmployee;
}
/**
* 社員名カナを設定します
* @param knEmployee 社員名カナ
*/
public void setKnEmployee(String knEmployee) {
this.knEmployee = knEmployee;
}
/**
* メールアドレスを取得します
* @return メールアドレス
*/
public String getMailAddress() {
return mailAddress;
}
/**
* メールアドレスを設定します
* @param mailAddress メールアドレス
*/
public void setMailAddress(String mailAddress) {
this.mailAddress = mailAddress;
}
/**
* パスワードを取得します
* @return パスワード
*/
public String getPassword() {
return password;
}
/**
* パスワードを設定します
* @param password パスワード
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 部署IDを取得します
* @return 部署ID
*/
public Integer getIdDepartment() {
return idDepartment;
}
/**
* 部署IDを設定します
* @param idDepartment 部署ID
*/
public void setIdDepartment(Integer idDepartment) {
this.idDepartment = idDepartment;
}
@Override
public String getHeaderTitle() {
StringBuffer sb = new StringBuffer();
sb.append(TITLE_ID_EMPLOYEE);
sb.append(TAB);
sb.append(TITLE_NM_EMPLOYEE);
sb.append(TAB);
sb.append(TITLE_KN_EMPLOYEE);
sb.append(TAB);
sb.append(TITLE_MAIL);
sb.append(TAB);
sb.append(TITLE_PASSWORD);
sb.append(TAB);
sb.append(TITLE_ID_DEPARTMENT);
return sb.toString();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(idEmployee);
sb.append(TAB);
sb.append(nmEmployee);
sb.append(TAB);
sb.append(knEmployee);
sb.append(TAB);
sb.append(mailAddress);
sb.append(TAB);
sb.append(password);
sb.append(TAB);
sb.append(idDepartment);
return sb.toString();
}
}

View File

@@ -0,0 +1,22 @@
/*
* BaseEntity.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.db.entity.base;
/**
* 各Entityのインタフェース
* @author IT-College
*
*/
public interface BaseEntity {
String TAB = "\t";
/**
* カラム名一覧を取得するメソッド
* @return カラム名一覧の文字列
*/
String getHeaderTitle();
}

View File

@@ -0,0 +1,70 @@
/*
* AppException.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.exception;
import java.sql.SQLException;
/**
* このシステムの例外をまとめたものです。
* エラーコードからどのようなエラーが起きているかを判断してください。
* @author IT-College
*
*/
public class AppException extends Exception {
public enum ERROR_CODE {
JDBC_ERROR
,DB_ERROR
,SQL_ERROR
,PARAM_SIZE_ERROR
,IO_ERROR
,NOT_FOUND
,INSERT_FAILD
,UPDATE_FAILD
,DELETE_FAILD
,OTHER_ERROR
}
private ERROR_CODE st = ERROR_CODE.OTHER_ERROR;
public AppException(ERROR_CODE st) {
this.st = st;
}
public AppException(SQLException e) {
// TODO:ベンダー固有エラーコードから内容を判定
this(ERROR_CODE.OTHER_ERROR);
}
@Override
public void printStackTrace() {
System.out.println(this.errorMessage());
super.printStackTrace();
}
public String errorMessage() {
switch (this.st) {
case JDBC_ERROR:
return "JDBCドライバ周辺に不備があります";
case DB_ERROR:
return "データベースに障害が発生しています";
case SQL_ERROR:
return "SQLにエラーがあります";
case PARAM_SIZE_ERROR:
return "SQLのパラメータ定義に誤りがあります";
case IO_ERROR:
return "入出力装置にエラーが発生しています";
case NOT_FOUND:
return "入力された値で情報がみつかりませんでした";
case INSERT_FAILD:
return "登録できませんでした";
case UPDATE_FAILD:
return "更新できませんでした";
case DELETE_FAILD:
return "削除できませんでした";
default:
return "予期せぬエラーです!";
}
}
}

View File

@@ -0,0 +1,34 @@
/*
* Main.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.main;
/**
* rezodbに定義されているテーブルのメンテナンスを行うクラスです。
* @author IT-College
*
*/
public class Main {
/** 対象テーブル判定用 **/
private static int mode = 0;
/**
* 対象テーブルの名前を取得するメソッド
* @return 現在の対象テーブル名
*/
private String targetTableName() {
return Main.mode == 0 ? "社員テーブル" : "部署テーブル";
}
/**
* システムのエントリーポイントです。
* コマンドライン引数は使用していません。
* @param args 使用していません
*/
public static void main(String[] args) {
}
}

View File

@@ -0,0 +1,50 @@
/*
* AccessDepartment.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.service;
import java.sql.Connection;
import java.sql.SQLException;
import com.rhizome.example.db.dao.DepartmentDAO;
import com.rhizome.example.db.entity.Department;
import com.rhizome.example.exception.AppException;
import com.rhizome.example.service.base.BaseAccess;
import com.rhizome.example.util.DbUtil;
/**
* Departmentのトランザクション処理クラス
* @author IT-College
*
*/
public class AccessDepartment extends BaseAccess<Department> {
private DepartmentDAO departmentDAO;
public AccessDepartment() throws AppException {
super();
}
@Override
protected DepartmentDAO getDaoInstance(Connection con) {
departmentDAO = new DepartmentDAO(super.con);
return departmentDAO;
}
public int insertDepartment(Department dep) throws SQLException, AppException {
int ret = -1;
try {
ret = departmentDAO.insertRemovePk(dep);
super.con.commit();
} catch(SQLException e) {
super.con.rollback();
throw new AppException(e);
} finally {
DbUtil.closeConnection(con);
}
return ret;
}
}

View File

@@ -0,0 +1,55 @@
/*
* AccessEmployee.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.service;
import java.sql.Connection;
import java.sql.SQLException;
import com.rhizome.example.db.dao.EmployeeDAO;
import com.rhizome.example.db.entity.Employee;
import com.rhizome.example.exception.AppException;
import com.rhizome.example.service.base.BaseAccess;
import com.rhizome.example.util.DbUtil;
/**
* Employeeのトランザクション処理クラス
* @author IT-College
*
*/
public class AccessEmployee extends BaseAccess<Employee> {
private EmployeeDAO employeeDAO;
public AccessEmployee() throws AppException {
super();
}
@Override
protected EmployeeDAO getDaoInstance(Connection con) {
if(employeeDAO == null) { employeeDAO = new EmployeeDAO(super.con); }
return employeeDAO;
}
/**
* 社員情報を登録するメソッド
* @param emp 社員情報DTO
* @return 登録件数
* @throws SQLException
* @throws AppException
*/
public int insertEmploee(Employee emp) throws SQLException, AppException {
int ret = -1;
try {
ret = employeeDAO.insertRemovePk(emp);
super.con.commit();
} catch(SQLException e) {
super.con.rollback();
throw new AppException(e);
} finally {
DbUtil.closeConnection(con);
}
return ret;
}
}

View File

@@ -0,0 +1,164 @@
/*
* BaseAccess.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.service.base;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import com.rhizome.example.db.dao.base.BaseDao;
import com.rhizome.example.db.entity.base.BaseEntity;
import com.rhizome.example.exception.AppException;
import com.rhizome.example.util.DbUtil;
public abstract class BaseAccess<E extends BaseEntity> {
protected BaseDao<E> dao;
protected Connection con;
protected BaseAccess() throws AppException {
try {
con = DbUtil.getConnection();
dao = this.getDaoInstance(con);
} catch (ClassNotFoundException e) {
throw new AppException(AppException.ERROR_CODE.JDBC_ERROR);
} catch (SQLException e) {
throw new AppException(e);
}
}
/**
* 全件検索トランザクション処理を行う
*
* @return 検索結果
* @throws AppException DAOから発生した例外
* @throws SQLException DAOから発生した例外
*/
public List<E> doSelectAll() throws AppException, SQLException {
List<E> entityList = null;
entityList = dao.findAll();
try {
DbUtil.closeConnection(con);
} catch (SQLException e) {
throw new AppException(e);
}
return entityList;
}
/**
* 検索トランザクション処理を行う
*
* @param pkObj 検索条件
* @return 検索結果
* @throws AppException DAOから発生した例外
* @throws SQLException DAOから発生した例外
*/
public E doSelectByPKey(Object... pkObj) throws AppException, SQLException {
List<Object> pkList = Arrays.asList(pkObj);
E entity = this.doSelectPrimaryKey(pkList);
try {
DbUtil.closeConnection(con);
} catch (SQLException e) {
throw new AppException(e);
}
return entity;
}
/**
* 登録トランザクション処理を行う
*
* @param aryParam 登録する値
* @return 登録件数
* @throws AppException DAOから発生した例外
*/
public int doInsert(List<Object> aryParam) throws AppException {
int numRet = 0;
try {
try {
numRet = dao.insertByAllColumns(aryParam);
con.commit();
} catch (SQLException e) {
con.rollback();
} finally {
DbUtil.closeConnection(con);
}
} catch (SQLException e) {
throw new AppException(e);
}
return numRet;
}
/**
* 更新トランザクション
*
* @param aryParam 更新内容
* @param pkObj 主キー条件に設定する値
* @return 削除件数
* @throws AppException DAOから発生した例外
*/
public int doUpdate(List<Object> aryParam, Object... pkObj) throws AppException {
int numRet = 0;
List<Object> pkList = Arrays.asList(pkObj);
try {
try {
numRet = dao.updateByPrimaryKey(aryParam, pkList);
con.commit();
} catch (SQLException e) {
con.rollback();
throw new AppException(e);
} finally {
DbUtil.closeConnection(con);
}
} catch (SQLException e) {
throw new AppException(e);
}
return numRet;
}
/**
* 削除トランザクション
*
* @param pkObj 削除条件
* @return 削除件数
* @throws AppException DAOから発生した例外
*/
public int doDelete(Object... pkObj) throws AppException {
int numRet = 0;
List<Object> pkList = Arrays.asList(pkObj);
try {
try {
con = DbUtil.getConnection();
numRet = dao.deleteByPrimaryKey(pkList);
con.commit();
} catch (ClassNotFoundException e) {
throw new AppException(AppException.ERROR_CODE.JDBC_ERROR);
} catch (SQLException e) {
con.rollback();
throw new AppException(e);
} finally {
DbUtil.closeConnection(con);
}
} catch (SQLException e) {
throw new AppException(e);
}
return numRet;
}
/**
* 主キー検索処理
*
* @param pkList 主キー条件
* @return 検索結果
* @throws AppException DAOから発生した例外
* @throws SQLException DAOから発生した例外
*/
private E doSelectPrimaryKey(List<Object> pkList) throws AppException, SQLException {
return dao.findByPrimaryKey(pkList);
}
protected abstract BaseDao<E> getDaoInstance(Connection con);
}

View File

@@ -0,0 +1,55 @@
/*
* CommonUtil.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.util;
import java.util.Scanner;
/**
* 文字列変換や数値チェックなどの細かい調整処理を行うメソッドを集めたクラスです
* @author IT-College
*
*/
public class CommonUtil {
private static Scanner scanner = new Scanner(System.in);
/** インスタンス禁止 */
private CommonUtil() { }
/**
* コマンドライン上で入力された値を取得するメソッド
* @return 入力された文字列
*/
public static String getInputLine() {
String line = scanner.nextLine();
return line;
}
/**
* Nullを空文字("")に変換するメソッド
* @param value 判定する文字列
* @return 変換結果
*/
public static String convertNullToBlank(String value) {
if (value == null) {
return "";
}
return value;
}
/**
* 空文字をNullに変換するメソッド
* @param value 判定する文字列
* @return 変換結果
*/
public static String convertBlankToNull(String value) {
if (value == null || "".equals(value.trim())) {
return null;
}
return value;
}
}

View File

@@ -0,0 +1,67 @@
/*
* DbUtil.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package com.rhizome.example.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* データベースの接続・切断を行うクラスです。
* @author IT-College
*
*/
public class DbUtil {
// 定数定義(共通)
private static final String DB_HOST = "127.0.0.1";
private static final String DB_NAME = "rezodb";
private static final String DB_USER = "rezouser";
private static final String DB_PASS = "Rezo_0000";
// 定数定義(PostgreSQL用)
// private static final String DBMS = "postgresql";
// private static final String DB_DRIVER = "org." + DBMS + ".Driver";
// private static final String DB_PORT = "5432";
// private static final String DB_URL = "jdbc:" + DBMS + "://" + DB_HOST + ":" + DB_PORT + "/" + DB_NAME;
// 定数定義(MySQL用)
private static final String DBMS ="mysql";
private static final String DB_DRIVER = "com." + DBMS + ".cj.jdbc.Driver";
private static final String DB_PORT = "3306";
private static final String DB_URL = "jdbc:" + DBMS + "://" + DB_HOST + ":" + DB_PORT + "/" + DB_NAME;
// + "?serverTimezone=JST"; //JDBCドライバのバージョン8.0.22以前を利用する場合は必要
// インスタンス化の禁止
private DbUtil() {}
// Connectionを単一のインスタンスとする
private static Connection con;
/**
* DBのコネクションを取得
* @return DBコネクション
* @throws ClassNotFoundException
* @throws SQLException
*/
public static Connection getConnection() throws ClassNotFoundException, SQLException {
if (con == null || con.isClosed()) {
Class.forName(DB_DRIVER);
con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
con.setAutoCommit(false);
}
return con;
}
/**
* DBとのコネクションを切断
* @param con DBコネクション
* @throws SQLException
*/
public static void closeConnection(Connection con) throws SQLException {
if (con != null) { con.close(); }
}
}

View File

@@ -0,0 +1,2 @@
java -jar DAO.jar
pause

View File

@@ -0,0 +1,248 @@
○システム名
社員メンテナンス
○システム説明
employeeテーブルをDAO・DTOを使用して管理するプログラムを作成
○配布物
実行例フォルダ
 srcフォルダ
 sqlフォルダ(既に講義で配布済みなら不要)
○納品物
作成したプログラム
1段階目(メインメニュー作成)
メインメニューを表示し、0を入力したら終了、0以外を入力したらエラー表示し、再入力させる。
1段階目では1~4、9を入力しても未実装のためエラー表示とする。
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
1                       ←1を入力
指定の番号を入力してください
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
0                       ←0を入力
システムを終了します
2段階目(DB接続確認)
メインメニューで1検索を選択すると以下の処理を行う。
・DbUtilクラスのgetConnectionメソッドでDB接続する
・検索メニューを表示する(表示のみで入力はさせない)
・DbUtilクラスのcloseConnectionメソッドでDB切断する
・メインメニュー表示に戻る
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
1
1:全検索 2:条件検索 それ以外:戻る
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
3段階目(全検索作成)
検索メニューで1全検索を選択するとDAOを使用して社員の一覧を表示し、メインメニューに戻る。
検索メニューで1全検索以外を選択するとメインメニューに戻る
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
1
1:全検索 2:条件検索 それ以外:戻る
2                       ←未実装の2を入力
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
1
1:全検索 2:条件検索 それ以外:戻る
1                       ←1を入力
10000 山田龍也 ヤマダタツヤ yamada@hoge.jp aaa 10
10001 高橋準 タカハシジュン jtaka@hoge.jp bbb 10
10002 麻枝史明 マエダフミアキ fmak@hoge.jp ccc 11
10003 丸戸章介 マルトショウスケ marusyo@hoge.jp ddd 12
10004 三宅武 ミヤケタケシ miya@hoge.jp eee 13
10005 丸井悠 マルイハルカ haru@hoge.jp fff 13
10006 涼元香織 スズモトカオリ suzumoto@hoge.jp ggg 13
10007 葉山稔 ハヤマミノル mhayama@hoge.jp hhh 14
10008 川上朱里 カワカミアカリ kawakami@hoge.jp iii 14
10009 杉井肇 スギイハジメ sugi@hoge.jp jjj 15
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
4段階目(条件検索作成)
検索メニューで2条件検索を選択するとIDを入力させ、エラー時は再入力させる。
正しいID入力時はDAOを使用して検索結果を表示する。
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
1
1:全検索 2:条件検索 それ以外:戻る
2
IDを入力してください
                       ←入力なしでEnter
IDは入力必須です。
IDを入力してください
1000x                     ←数字以外を入力
IDは数値入力です
IDを入力してください
10010                     ←存在しないIDを入力
入力された値で情報がみつかりませんでした
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
1
1:全検索 2:条件検索 それ以外:戻る
2
IDを入力してください
10001
10001 高橋準 タカハシジュン jtaka@hoge.jp bbb 10
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
5段階目(削除作成)
メインメニューで4削除を選択するとIDを入力させ、エラー時は再入力させる。
正しいID入力時は削除確認を行い、Yかyを選択したらDAOを使用して削除する
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
4
IDを入力してください
                       ←入力なしでEnter
IDは入力必須です。
IDを入力してください
1000x                     ←数字以外を入力
IDは数値入力です
IDを入力してください
10010                     ←存在しないIDを入力
入力された値で情報がみつかりませんでした
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
4
IDを入力してください
10002                     ←存在するIDを入力
指定されたIDの情報を削除します? Y/y
(Y/y以外の入力であればキャンセル)
N                       ←キャンセルを選択
削除をキャンセルしました
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
4
IDを入力してください
10002
指定されたIDの情報を削除します? Y/y
(Y/y以外の入力であればキャンセル)
y                       ←削除を選択
削除が完了しました
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
6段階目(登録作成)
メインメニューで2登録を選択するとID以外の各項目を入力させ、エラー時は再入力させる。
部署IDは数値チェックも行う。
入力が正しければDAOを使用して登録する
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
2
社員名を入力してください
社員名は入力必須です。
社員名を入力してください
てすと
フリガナを入力してください
テスト
メールアドレスを入力してください
test@hoge.jp
パスワードを入力してください
xxx
部署IDを入力してください
a2
部署IDは数値入力です
部署IDを入力してください
12
登録が完了しました
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
7段階目(更新作成)
メインメニューで3更新を選択すると各項目を入力させ、エラー時は再入力させる。
ID、部署IDは数値チェックも行う。
入力が正しければDAOを使用して更新する
<実行例>
システムを開始します
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
3
IDを入力してください
10011
入力された値で情報がみつかりませんでした
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
3
IDを入力してください
10010
社員名を入力してください
試し
フリガナを入力してください
タメシ
メールアドレスを入力してください
tameshi@hoge.jp
パスワードを入力してください
yyy
部署IDを入力してください
1c
部署IDは数値入力です
部署IDを入力してください
14
更新が完了しました
現在のメンテナンス対象テーブル:社員テーブル
1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了
8段階目(部署マスター管理作成)
EmployeeDAO、EmployeeDTOを参考にDepartmentDAO、DepartmentDTOを作成し、
部署マスターで全検索、条件検索、削除、登録、変更を実装する。
また、9テーブル切替を行うたびに社員と部署のテーブルを切り替える。
<以下、時間が余った人向け>
9段階目(機能改善)
・社員テーブルの検索時、部署IDの代わりに部署名を表示する
・社員テーブルの全検索時、縦の線が揃うように位置を調整する
・社員テーブルの更新時、変更したくない項目は何も入力せずにEnterを押せるようにする
・社員テーブルの登録・更新時、存在しない部署IDを入力するとエラーになるようにする
・社員テーブル、部署テーブル共に登録・変更時はSQL実行前に登録・変更を行ってよいか確認させる
10段階目(検索機能改善)
・社員テーブル、部署テーブル共に条件検索時はID以外の項目でも検索できるようにする
・検索条件の中で社員名、フリガナ、メールアドレス、部署名は曖昧検索できるようにする
・社員テーブルの条件検索ではAND条件で複数の項目を指定することができるようにする
11段階目(部署入力改善)
・社員テーブルの登録・更新時、部署はIDでも部署名でも入力できるようにする
 部署名で入力した場合は部署名の一部でも特定できればOKとする(例:「総務」と入力)

View File

@@ -0,0 +1,25 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="ja">
<head>
<!-- Generated by javadoc (1.8.0_131) on Wed Jun 21 09:42:55 JST 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>すべてのクラス</title>
<meta name="date" content="2017-06-21">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">すべてのクラス</h1>
<div class="indexContainer">
<ul>
<li><a href="com/rhizome/example/util/DbUtil.html" title="com.rhizome.example.util内のクラス" target="classFrame">DbUtil</a></li>
<li><a href="com/rhizome/example/dao/DepartmentDAO.html" title="com.rhizome.example.dao内のクラス" target="classFrame">DepartmentDAO</a></li>
<li><a href="com/rhizome/example/dto/DepartmentDTO.html" title="com.rhizome.example.dto内のクラス" target="classFrame">DepartmentDTO</a></li>
<li><a href="com/rhizome/example/dao/EmployeeDAO.html" title="com.rhizome.example.dao内のクラス" target="classFrame">EmployeeDAO</a></li>
<li><a href="com/rhizome/example/dto/EmployeeDTO.html" title="com.rhizome.example.dto内のクラス" target="classFrame">EmployeeDTO</a></li>
<li><a href="com/rhizome/example/main/Main.html" title="com.rhizome.example.main内のクラス" target="classFrame">Main</a></li>
</ul>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More