これまでに学んできたJavaの基礎やオブジェクト指向の概念を応用し、実際にJavaプロジェクトを作成していきます。小規模なアプリケーションを構築することで、理論と実践の橋渡しをし、学んだ内容をより深く理解できるようにします。また、コードの書き方やリファクタリング(コードの整理・最適化)の重要性も学び、実践的なコーディングスキルを磨いていきます。
6.1 プロジェクト概要: 簡単なタスク管理アプリケーション
ここでは、基本的なタスク管理アプリケーションを開発します。このアプリケーションは、タスクを追加、表示、完了の設定ができる機能を持ちます。シンプルな構成ですが、オブジェクト指向のクラス設計や、基本的なデータ構造の活用を理解するには十分な規模です。
- 目標:
- Javaで小さなアプリケーションを作成し、クラスの設計からコードの最適化までの流れを体験する
- プロジェクト構成やコード管理の方法を学ぶ
- リファクタリングを通じてコードの品質を向上させる
6.2 クラス設計
タスク管理アプリケーションの設計において、最初にクラス構造を考えます。以下のようなクラスを作成し、必要な機能を各クラスに分担します。
- Taskクラス:
- タスクの情報(タスク名、説明、状態など)を保持する。
- TaskManagerクラス:
- 複数のタスクを管理する機能(追加、削除、リスト表示など)を持つ。
Taskクラスの設計
Taskクラスは、アプリケーションの中心となる「タスク」を表現します。タスクの名前や説明、タスクが完了しているかどうかの状態などをプロパティとして持たせます。以下のようにクラスの設計を行います。
public class Task {
private String name; // タスク名
private String description; // タスクの説明
private boolean isCompleted; // タスクの状態
// コンストラクタ
public Task(String name, String description) {
this.name = name;
this.description = description;
this.isCompleted = false;
}
// タスク名を取得
public String getName() {
return name;
}
// タスクの説明を取得
public String getDescription() {
return description;
}
// タスクが完了しているかどうかの状態を取得
public boolean isCompleted() {
return isCompleted;
}
// タスクの状態を完了にするメソッド
public void completeTask() {
this.isCompleted = true;
}
// タスクの詳細を表示するメソッド
public String displayTask() {
String status = isCompleted ? "完了" : "未完了";
return name + ": " + description + " [" + status + "]";
}
}
設計のポイント:
- コンストラクタでタスクの名前と説明を初期化し、初期状態は未完了(
isCompleted = false
)とします。 - 完了メソッド(
completeTask()
)を使い、タスクの状態を変更します。 - タスク表示メソッド(
displayTask()
)で、タスク名・説明・状態を見やすい形式で出力します。
TaskManagerクラスの設計
TaskManagerクラスは、タスクのリストを管理します。リストにタスクを追加、削除、表示、完了済みにする機能を提供します。
import java.util.ArrayList;
import java.util.List;
public class TaskManager {
private List<Task> tasks;
// コンストラクタ
public TaskManager() {
this.tasks = new ArrayList<>();
}
// タスクを追加するメソッド
public void addTask(Task task) {
tasks.add(task);
System.out.println("タスクが追加されました: " + task.getName());
}
// タスクを表示するメソッド
public void displayTasks() {
System.out.println("=== タスク一覧 ===");
for (Task task : tasks) {
System.out.println(task.displayTask());
}
}
// 特定のタスクを完了済みにするメソッド
public void completeTask(String taskName) {
for (Task task : tasks) {
if (task.getName().equals(taskName)) {
task.completeTask();
System.out.println("タスクが完了しました: " + task.getName());
return;
}
}
System.out.println("タスクが見つかりませんでした: " + taskName);
}
// 特定のタスクを削除するメソッド
public void removeTask(String taskName) {
tasks.removeIf(task -> task.getName().equals(taskName));
System.out.println("タスクが削除されました: " + taskName);
}
}
設計のポイント:
- タスクリストの保持:
tasks
としてList<Task>
を利用。タスクの追加・削除・更新が容易になります。 - タスク追加メソッド:新しいタスクをリストに追加し、追加されたことをコンソールに表示。
- タスク表示メソッド:全てのタスクを順番に表示し、完了・未完了の状態も示します。
- タスク完了メソッド:指定されたタスク名を検索し、そのタスクを完了済みに更新。
- タスク削除メソッド:指定されたタスク名を削除します。
6.3 メインクラスでの実行
これらのクラスが完成したら、実際にアプリケーションを動作させるためのメインクラスを作成します。ここでは、ユーザーからの入力に応じてタスクを管理するシンプルなコンソールアプリケーションを作ります。
import java.util.Scanner;
public class TaskManagerApp {
public static void main(String[] args) {
TaskManager taskManager = new TaskManager();
Scanner scanner = new Scanner(System.in);
boolean running = true;
while (running) {
System.out.println("\n=== タスク管理アプリケーション ===");
System.out.println("1: タスク追加");
System.out.println("2: タスク一覧表示");
System.out.println("3: タスク完了");
System.out.println("4: タスク削除");
System.out.println("5: 終了");
System.out.print("選択してください: ");
int choice = scanner.nextInt();
scanner.nextLine(); // 改行文字を消費
switch (choice) {
case 1:
System.out.print("タスク名: ");
String name = scanner.nextLine();
System.out.print("タスクの説明: ");
String description = scanner.nextLine();
Task task = new Task(name, description);
taskManager.addTask(task);
break;
case 2:
taskManager.displayTasks();
break;
case 3:
System.out.print("完了するタスク名: ");
String taskName = scanner.nextLine();
taskManager.completeTask(taskName);
break;
case 4:
System.out.print("削除するタスク名: ");
taskName = scanner.nextLine();
taskManager.removeTask(taskName);
break;
case 5:
running = false;
System.out.println("アプリケーションを終了します。");
break;
default:
System.out.println("無効な入力です。もう一度試してください。");
}
}
scanner.close();
}
}
6.4 コードレビューとリファクタリング
- コメントの追加: コードの理解を助けるため、各メソッドに説明コメントを追加します。
- エラーチェック: ユーザー入力のエラーチェックを追加し、より堅牢なアプリケーションにします。
- メソッド分割: たとえば、
completeTask
やremoveTask
の処理をさらに細かく分割して見通しをよくすることができます。
リファクタリングにより、コードはより読みやすく保守しやすいものになり、アプリケーションの品質も向上します。
まとめ
簡単なタスク管理アプリケーションを通じて、Javaの基礎的なプログラミング知識を実践的に応用しました。クラス設計やリファクタリングの重要性も体験することで、プログラミングの品質向上に役立つスキルが身につきました。
初心者におすすめ!プログラミングスクールのススメ
未経験でも気軽に!サブスク型プログラミングスクール【Freeks】
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学の挫折率、驚きの87.5%!
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
有料と無料、スクールの違いは?
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
- 受講条件が異なる
- 学べるスキルやカリキュラム内容が異なる
- 就職や転職のサポート内容が異なる
どちらが自分に合っているか、よく考えて選ぶのが大事です。
サブスク型プログラミングスクール『FREEKS(フリークス)』に注目!
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
- 未経験者向けのわかりやすいカリキュラム
- 経験豊富なエンジニアのサポート
- オンラインで自分のペースで学習可能
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
終了後は副業もサポート!
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓