挑戦問題を格納しました

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

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 + "です。");
}
}