挑戦問題を格納しました
This commit is contained in:
1
CUI_オブジェクト指向復習問題/Question1/.gitignore
vendored
Normal file
1
CUI_オブジェクト指向復習問題/Question1/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/bin/
|
||||
11
CUI_オブジェクト指向復習問題/Question1/README.md
Normal file
11
CUI_オブジェクト指向復習問題/Question1/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# オブジェクト指向総合復習問題 Question1
|
||||
完成したプログラムを確認しコメントを追加してください。
|
||||
追加するコメントは以下とします。
|
||||
|
||||
- クラス自体へのコメント
|
||||
Induction.javaを参考にして書いてみてください
|
||||
|
||||
- メソッド自体へのコメント
|
||||
Induction.javaを参考にして書いてみてください
|
||||
|
||||
- 1行1行処理のコメント
|
||||
9
CUI_オブジェクト指向復習問題/Question1/file/DBCurriculum.csv
Normal file
9
CUI_オブジェクト指向復習問題/Question1/file/DBCurriculum.csv
Normal 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構築演習
|
||||
|
23
CUI_オブジェクト指向復習問題/Question1/file/JavaCurriculum.csv
Normal file
23
CUI_オブジェクト指向復習問題/Question1/file/JavaCurriculum.csv
Normal 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,オブジェクト指向プログラミング総合演習
|
||||
|
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 + "の予習をします。");
|
||||
}
|
||||
}
|
||||
107
CUI_オブジェクト指向復習問題/Question1/src/com/rhizome/main/Induction.java
Normal file
107
CUI_オブジェクト指向復習問題/Question1/src/com/rhizome/main/Induction.java
Normal 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 + "です。");
|
||||
}
|
||||
}
|
||||
3
CUI_オブジェクト指向復習問題/Question2-1/README.md
Normal file
3
CUI_オブジェクト指向復習問題/Question2-1/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# オブジェクト指向総合復習問題 Question2-1
|
||||
|
||||
TODOコメントを埋めて、カリキュラム関連クラスを作ろう!
|
||||
9
CUI_オブジェクト指向復習問題/Question2-1/file/DBCurriculum.csv
Normal file
9
CUI_オブジェクト指向復習問題/Question2-1/file/DBCurriculum.csv
Normal 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構築演習
|
||||
|
23
CUI_オブジェクト指向復習問題/Question2-1/file/JavaCurriculum.csv
Normal file
23
CUI_オブジェクト指向復習問題/Question2-1/file/JavaCurriculum.csv
Normal 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,オブジェクト指向プログラミング総合演習
|
||||
|
@@ -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 カリキュラム名
|
||||
*/
|
||||
}
|
||||
@@ -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 カリキュラム名
|
||||
*/
|
||||
}
|
||||
@@ -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 カリキュラム名
|
||||
*/
|
||||
}
|
||||
4
CUI_オブジェクト指向復習問題/Question2-2/README.md
Normal file
4
CUI_オブジェクト指向復習問題/Question2-2/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# オブジェクト指向総合復習問題 Question2-2
|
||||
|
||||
TODOコメントを埋めて、コース関連クラスを作ろう!
|
||||
カリキュラム関連クラスは以前の問題からコピーして移行しましょう。
|
||||
@@ -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 カリキュラム一覧ファイルが見つからなかった場合はエラー
|
||||
*/
|
||||
}
|
||||
@@ -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 カリキュラム一覧ファイルが見つからなかった場合はエラー
|
||||
*/
|
||||
}
|
||||
4
CUI_オブジェクト指向復習問題/Question2-3/README.md
Normal file
4
CUI_オブジェクト指向復習問題/Question2-3/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# オブジェクト指向総合復習問題 Question2-3
|
||||
|
||||
TODOコメントを埋めて、受講生関連クラスを作ろう!
|
||||
カリキュラム関連クラス、コース関連クラスは以前の問題からコピーして移行しましょう。
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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 単元名
|
||||
*/
|
||||
}
|
||||
@@ -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メソッドのオーバーライド
|
||||
*/
|
||||
}
|
||||
4
CUI_オブジェクト指向復習問題/Question2-4/README.md
Normal file
4
CUI_オブジェクト指向復習問題/Question2-4/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# オブジェクト指向総合復習問題 Question2-3
|
||||
|
||||
TODOコメントを埋めて、研修実施クラスを作ろう!
|
||||
カリキュラム関連クラス、コース関連クラス、受講生関連クラスは以前の問題からコピーして移行しましょう。
|
||||
@@ -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()メソッド
|
||||
*/
|
||||
}
|
||||
31
CUI_オブジェクト指向復習問題/README.md
Normal file
31
CUI_オブジェクト指向復習問題/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# オブジェクト指向総合復習問題
|
||||
本問題はオブジェクト指向を総合的に学べる問題となっています。
|
||||
|
||||
# システム概要
|
||||
研修システム
|
||||
|
||||
# 機能一覧
|
||||
- カリキュラム作成機能
|
||||
- コース作成機能
|
||||
- 受講生作成機能
|
||||
- 研修実施機能
|
||||
|
||||
# 仕様説明
|
||||
本システムでは、Javaコースを開講することができ、
|
||||
コースを作成することで自動的にカリキュラムが設定されるようになっています。
|
||||
Javaコースでは、「Java」と「DB」のカリキュラムがそれぞれ設定され、
|
||||
カリキュラム内容としては、fileフォルダに入っているCSVファイルにてそれぞれ確認・修正できるようになっています。
|
||||
また、Javaコースを受講する受講生も作成し、研修を実施することができます。
|
||||
|
||||
# 問題概要
|
||||
本問題では、上記の仕様を満たすシステムを段階的にプログラムしていき、
|
||||
最終的に研修システムとして実行できるようにしていきます。
|
||||
オブジェクト指向全範囲を使用していますので、テキストやネットを駆使しながら解いていきましょう。
|
||||
|
||||
# 段階
|
||||
1. 完成したプログラムにコメントを追加してみよう
|
||||
2. TODOに沿ってプログラムしてみよう
|
||||
1. カリキュラム関連のクラスを作成
|
||||
2. コース関連のクラスを作成
|
||||
3. 受講生関連のクラス作成
|
||||
4. メインとなる研修クラスを作成
|
||||
Reference in New Issue
Block a user