255 lines
11 KiB
Markdown
255 lines
11 KiB
Markdown
# オブジェクト指向総合演習
|
||
|
||
## はじめに(演習の⽬的と取り組み⽅)
|
||
当演習は、講義で学んだことを⾃⼒で実践できるようになるために実施します。 そのために以下の内容を守って演習に取り組んでください。
|
||
|
||
### 納品物、納期を守りましょう
|
||
この演習は、実際の仕事を想定した内容です。
|
||
提出物の内容と提出期限は必ず守ってください。
|
||
作業が間に合わない、提出物に問題が出そうな場合は、**必ずルールにしたがって適切な相⼿に相談してください**。
|
||
|
||
### 適切な⼿順で開発しましょう
|
||
プログラムを書き始める前に、**README.md** や**仕様書**(配布されている場合) を必ず読んでください。
|
||
「**何を作るのか**」、「**どこまで作ればよいのか**」を理解してから作業を始めてください。
|
||
|
||
### 知らないことは⾃分で調べましょう
|
||
この演習には、**講義で扱っていない内容が⼀部含まれています**。
|
||
その場合は、インターネットなどで⾃分で調べながら進めてください。
|
||
調べることも、エンジニアにとって⼤切なスキルの⼀つです。
|
||
|
||
## 各種説明
|
||
|
||
### 演習目的
|
||
|
||
オブジェクト指向の概念や機能を組み合わせた、オブジェクト指向総合演習課題です。
|
||
学習した知識のアウトプット、オブジェクト指向の活用法の学習として実施していただきます。
|
||
また、課題をとおして以下のようなビジネススキルも合わせて学習していただきます。
|
||
|
||
- 納期の重要さ
|
||
- 開発の進め方
|
||
- 調査力
|
||
- 質問力
|
||
|
||
### システム名
|
||
|
||
社員メンテナンス(ファイルシステム版)
|
||
|
||
### システム説明
|
||
|
||
社員情報(CSVファイル)のCRUDシステム
|
||
|
||
- ※CRUDとは
|
||
- Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)の機能を有したシステムのこと。
|
||
|
||
### 配布物
|
||
|
||
##### docフォルダ
|
||
|
||
- API仕様書(JavaDoc)
|
||
- 今回作っていただくMain.javaとEmployeeに関しては、回答例のメソッド構成が載っています。
|
||
- 参考にしていただいても構いませんし、独自の作り方をしていただいても構いません。
|
||
|
||
|
||
##### fileフォルダ
|
||
|
||
- EmployeeData.csv
|
||
- 従業員データ一覧のCSVファイル
|
||
- DepartmentData.csv
|
||
- 部署データ一覧のCSVファイル(追加課題用)
|
||
|
||
|
||
##### srcフォルダ
|
||
- com.rhizome.example.access.BaseAccess.java
|
||
- ファイルアクセスのクラスに継承するベースクラス
|
||
- com.rhizome.example.access.EmployeeAccess.java
|
||
- 従業員データの検索・登録・更新・削除を行うクラス
|
||
- com.rhizome.example.data.BaseData.java
|
||
- ファイルから取得したデータの格納用クラスに継承するベースクラス
|
||
- com.rhizome.example.data.EmployeeData.java
|
||
- EmployeeData.csvから取得した従業員データを格納するためのクラス
|
||
- com.rhizome.example.main.Main.java
|
||
- システムのメイン処理を書くクラス
|
||
|
||
|
||
##### 実行例
|
||
- エクスプローラ上で「このファイルを実行してください.bat」ファイルを実行してください
|
||
|
||
### 納品物
|
||
|
||
作成したプログラム
|
||
|
||
### 進め方
|
||
|
||
1. 各種説明をじっくり読んで把握しましょう
|
||
1. 把握できなければ質問してください。
|
||
2. プロジェクトにどのファイルがあるかをすべて確認してください
|
||
3. 確認できたら、1段階目から順に進めてください
|
||
1. 問題内容を見て、何をしたいのか最初に把握するようにしてください
|
||
2. そして「実行例」を見て、
|
||
3. どう作るのかを考えてから作成に入りましょう。
|
||
4. 配布物のクラスを修正、もしくは新規クラスを追加して作成してください
|
||
|
||
|
||
### ゴール
|
||
|
||
この問題を解き終わったら、ファイルを使った社員のCRUDシステムが完成します。
|
||
問題を通して、以下のことができるようになることがゴールです。
|
||
すべて身につけられた方は素晴らしいです。
|
||
もちろんすべては難しくても、いくつかは達成できるように取り組みましょう。
|
||
|
||
- 実践的なプログラムにおけるオブジェクト指向の3大機能の目的・メリット・使用方法を理解する
|
||
- 継承(抽象クラスを継承し、抽象メソッドをオーバーライドしてクラス作成)
|
||
- 多態性(データクラスを親クラスの型で扱うことで汎用化)
|
||
- カプセル化(社員データクラスのprivateフィールド操作や、ファイルアクセス親クラスのprotectedメソッド利用)
|
||
- 例外処理の使用方法、止まらないシステムの作り方を理解する
|
||
- コレクション(ArrayList)の使用方法を理解する
|
||
- 既存のメソッドを利用する意識を付ける(汎用化・冗長性の排除)
|
||
- 調査(検索)力をつける / 調査する癖をつける
|
||
- ピンポイントで質問できるようになる
|
||
|
||
----
|
||
|
||
## 問題
|
||
|
||
### 前提
|
||
|
||
このシステムは社員情報をメンテナンスするためのシステムです。
|
||
しかし、納品先の担当者より
|
||
|
||
```
|
||
社員一覧を表示する機能がほしい。
|
||
毎回社員IDを聞くのは手間なので、一覧があるとすごく便利
|
||
```
|
||
|
||
との要望を頂いたため、改修するに至りました。
|
||
|
||
- 基本的にどこに手を入れていただいても構いません
|
||
- 既存メソッド/既存クラスに手を入れてもOKです
|
||
|
||
|
||
### 1段階目(検索メニューの追加)
|
||
|
||
検索機能に遷移した後、全件検索なのか条件検索なのかの振り分けメニューを追加してください。
|
||
1:全件検索 2:条件検索 それ以外:戻る
|
||
と表示させてください。
|
||
|
||
<実行例>
|
||
|
||
```
|
||
システムを開始します
|
||
|
||
1:検索 2:登録 3:更新 4:削除 0:終了
|
||
1 ←1を入力
|
||
|
||
1:全検索 2:条件検索 それ以外:戻る ←このメニュー追加してください
|
||
IDを入力してください ←この機能は実装済みです
|
||
```
|
||
|
||
### 2段階目(検索メニューの条件検索機能実装)
|
||
|
||
検索メニュー(1:全検索 2:条件検索 それ以外:戻る)に対して、ユーザー入力に対応した機能を実装してください。
|
||
2段階目の対象は、 `2:条件検索` の部分になります。
|
||
検索メニューにて2が入力された場合、今までのID検索機能に遷移するようにしてください。
|
||
|
||
<実行例>
|
||
|
||
```
|
||
システムを開始します
|
||
|
||
1:検索 2:登録 3:更新 4:削除 0:終了
|
||
1 ←1を入力
|
||
|
||
1:全検索 2:条件検索 それ以外:戻る
|
||
2 ←2を入力
|
||
|
||
IDを入力してください ←この機能は実装済みです
|
||
```
|
||
|
||
### 3段階目(検索メニューの戻る機能実装)
|
||
|
||
検索メニュー(1:全検索 2:条件検索 それ以外:戻る)に対して、ユーザー入力に対応した機能を実装してください。
|
||
3段階目の対象は、 `3:戻る` の部分になります。
|
||
検索メニューにて1/2以外が入力された場合、メインメニュー(1:検索 2:登録 3:更新 4:削除 0:終了)に戻るようにしてください。
|
||
|
||
<実行例>
|
||
|
||
```
|
||
システムを開始します
|
||
|
||
1:検索 2:登録 3:更新 4:削除 0:終了
|
||
1 ←1を入力
|
||
|
||
1:全検索 2:条件検索 それ以外:戻る
|
||
a ←1 or 2以外を入力
|
||
|
||
1:検索 2:登録 3:更新 4:削除 0:終了 ←メインメニューに戻ります
|
||
```
|
||
|
||
### 4段階目(検索メニューの全件検索機能実装)
|
||
|
||
検索メニュー(1:全検索 2:条件検索 それ以外:戻る)に対して、ユーザー入力に対応した機能を実装してください。
|
||
4段階目の対象は、 `1:全件検索` の部分になります。
|
||
検索メニューにて1が入力された場合、EmployeeData.csvファイルに記載されている情報が一覧で表示されるようにしてください。
|
||
一覧が表示された後は、メインメニューに戻るような形にしてください。
|
||
|
||
<実行例>
|
||
|
||
```
|
||
システムを開始します
|
||
|
||
1:検索 2:登録 3:更新 4:削除 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:削除 0:終了 ←メインメニューに戻る
|
||
```
|
||
|
||
----
|
||
|
||
## <以下、時間が余った人向け>
|
||
|
||
### 5段階目(リファクタリング)
|
||
|
||
作成したプログラムや既存のプログラム修正
|
||
|
||
|
||
|
||
### 6段階目(実行例の仕様確認)
|
||
|
||
作成したシステムの総合テストを行いましょう。
|
||
実行例通り動いているか確認してください。
|
||
以下の点を調査しながら、自身で項目を考えてみましょう。
|
||
|
||
- 正常系・異常系
|
||
- ブラックボックス・ホワイトボックス
|
||
- 分岐網羅・命令網羅
|
||
|
||
|
||
### 7段階目(部署マスター管理作成)
|
||
|
||
EmployeeAccess、EmployeeDataを参考にDepartmentAccess、DepartmentDataを作成し、部署で全検索、条件検索、削除、登録、変更を実装してください。
|
||
また、「9:データ切り替え」切替を行うたびに社員と部署のデータを切り替えるようにしましょう。
|
||
メニューが以下となります。
|
||
`1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:xxxx)`
|
||
|
||
<実行例>
|
||
|
||
```
|
||
システムを開始します
|
||
|
||
1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Employee)
|
||
9 ←9を入力
|
||
|
||
1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Department)
|
||
```` |