Java | 1 日 90 分 × 7 日アプリ学習 初級編:クラス分割アプリ

APP Java
スポンサーリンク

1日目のゴール

1日目のテーマは
「Javaの“クラス”ってそもそも何者なのか」と「mainメソッドとの関係」を、頭の中でスッキリさせること です。

いきなり「クラス分割しよう!」と言われても、
クラスの正体がふわっとしていると、全部がモヤモヤします。

今日はまず、

クラスとは何か
main はどこに書くのか
「1クラスだけの世界」から「クラスを分ける世界」への入り口

ここを、超やさしく、でも本質は外さずに押さえていきます。


まずは「クラスなしっぽいJava」から見てみる

Javaは必ず「クラスの中」から始まる

Javaのコードは、必ずクラスの中に書きます。
でも、最初に習うコードは、だいたいこんな感じですよね。

public class Main {
    public static void main(String[] args) {
        System.out.println("こんにちは Java!");
    }
}
Java

初心者目線だと、こう思うはずです。

public class Main って何?
public static void main(String[] args) って何?
とりあえず書けと言われたから書いてるだけ…

今日は、この「とりあえず書いてるだけ」の部分を、
ちゃんと意味のあるものとして理解していきます。


クラスとは「設計図」であり「箱」

「クラス=モノの設計図」とイメージしてみる

クラスを一言で言うと、
「何かのモノの設計図」 です。

例えば、「人」を表すクラスを作るとしたら、
こんなイメージです。

public class Person {
    String name;
    int age;

    void sayHello() {
        System.out.println("こんにちは、" + name + "です。");
    }
}
Java

ここでやっていることを、かみ砕いて説明します。

public class Person { ... }
「Person という名前のクラス(設計図)を定義します」という宣言です。

String name; int age;
Person が持つ「情報(データ)」を定義しています。
名前と年齢ですね。

void sayHello() { ... }
Person ができる「動き(処理)」を定義しています。
ここでは「自己紹介する」という動きです。

この時点では、まだ「Personという設計図」を作っただけで、
実際の「人」は一人も生まれていません。


クラスから「実体(オブジェクト)」を作る

設計図から“本物”を作るイメージ

さっきの Person クラスを使って、
実際に「人」を作ってみます。

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "太郎";
        p.age = 20;

        p.sayHello();
    }
}
Java

ここでの流れを、丁寧に追ってみましょう。

Person p = new Person();
Person という設計図から、実体(オブジェクト)を1つ作っています。
p は「Person型の変数」で、中身は「Personの実体」です。

p.name = "太郎";
その人の名前を「太郎」に設定しています。

p.age = 20;
年齢を20に設定しています。

p.sayHello();
「pという人」に自己紹介させています。
中で System.out.println("こんにちは、" + name + "です。"); が実行されます。

ここで大事なのは、

クラス(Person)は「設計図」
new Person() で「実体(オブジェクト)」が生まれる
main の中では、その「実体」を使って処理を進める

という役割分担です。


mainメソッドは「アプリのスタート地点」

Javaは「どこから実行を始めるか」を決めないと動けない

Javaのプログラムを実行するとき、
Javaはこう考えます。

「どのクラスの、どのメソッドから始めればいいの?」

その答えが、
public static void main(String[] args) です。

public class Main {
    public static void main(String[] args) {
        System.out.println("ここからプログラムが始まる");
    }
}
Java

この main メソッドには、特別なルールがあります。

クラスの中に書かれていること
public static void main(String[] args) という形で書かれていること

この形のメソッドを、Javaは「スタート地点」として認識します。

つまり、

クラスはたくさんあってもいい
でも、「実行の入り口(スタート)」は main で決まる

という構造になっています。


「mainクラス」と「その他のクラス」の関係

mainは“司令塔”、他のクラスは“役割を持った部品”

さっきの Person の例をもう一度見てみましょう。

public class Person {
    String name;
    int age;

    void sayHello() {
        System.out.println("こんにちは、" + name + "です。");
    }
}
Java
public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "太郎";
        p.age = 20;

        p.sayHello();
    }
}
Java

ここでの役割分担は、こうなっています。

Person クラス
「人」という概念を表すクラス。
名前・年齢というデータと、「挨拶する」という動きを持っている。

Main クラスの main メソッド
「アプリ全体の流れ」を決める司令塔。
Personを作って、値を入れて、メソッドを呼ぶ。

大事なのは、

main の中に全部の処理を書き込むのではなく、
「役割ごとにクラスを分けて、main はそれらを組み立てる側に回る」

という考え方です。

1日目では、
「クラスを分ける意味」を、まずこのレベルで理解しておけば十分です。


まずは「全部mainに書いたバージョン」を見てみる

クラス分割前の“ごちゃっとしたコード”

クラス分割の良さを感じるには、
あえて「分けていない状態」を見るのが一番早いです。

例えば、「2人の自己紹介をするプログラム」を
全部 main の中に書くと、こうなります。

public class Main {
    public static void main(String[] args) {
        String name1 = "太郎";
        int age1 = 20;
        System.out.println("こんにちは、" + name1 + "です。年齢は" + age1 + "歳です。");

        String name2 = "花子";
        int age2 = 25;
        System.out.println("こんにちは、" + name2 + "です。年齢は" + age2 + "歳です。");
    }
}
Java

動きとしては問題ありません。
でも、すでにちょっとイヤな感じがします。

同じようなコードが2回出てくる
人が増えるたびに、同じパターンをコピペすることになる
「人」という概念がバラバラに散らばっている

この状態から、「クラス分割」していきます。


同じ処理を「Personクラス」にまとめる

重複している“人の情報+挨拶”を1つのクラスにする

さっきのコードを、Person クラスを使って書き直してみます。

public class Person {
    String name;
    int age;

    void introduce() {
        System.out.println("こんにちは、" + name + "です。年齢は" + age + "歳です。");
    }
}
Java
public class Main {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.name = "太郎";
        p1.age = 20;

        Person p2 = new Person();
        p2.name = "花子";
        p2.age = 25;

        p1.introduce();
        p2.introduce();
    }
}
Java

ここでの変化を、しっかり感じてほしいです。

「人の情報+挨拶の仕方」が Person クラスにまとまった
main の中から、「人としてのロジック」が消えた
main は「誰を作って、どの順番で挨拶させるか」だけを考えればよくなった

これが、クラス分割の一番シンプルな効果です。


1日目のミニアプリ:簡単な「自己紹介アプリ」

仕様を言葉で決める

1日目の仕上げとして、
こんなミニアプリを作ってみましょう。

Personクラスを作る
Mainクラスのmainで、Personを2人作る
それぞれに名前と年齢を設定する
2人に順番に自己紹介させる

コードはこうなります。

public class Person {
    String name;
    int age;

    void introduce() {
        System.out.println("こんにちは、" + name + "です。年齢は" + age + "歳です。");
    }
}
Java
public class Main {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.name = "太郎";
        p1.age = 20;

        Person p2 = new Person();
        p2.name = "花子";
        p2.age = 25;

        p1.introduce();
        p2.introduce();
    }
}
Java

実行すると、こんな感じの出力になります。

こんにちは、太郎です。年齢は20歳です。
こんにちは、花子です。年齢は25歳です。

ここまで動かせたら、
「クラスを分ける意味」と「mainとの関係」が、かなりクリアになっているはずです。


今日いちばん大事な“頭の中の図”

クラスとmainの関係を、こうイメージしてほしい

1日目で絶対に持って帰ってほしいイメージは、これです。

クラス
何かを表す「設計図」。
データ(フィールド)と動き(メソッド)をセットで持つ。

main メソッド
「アプリのスタート地点」であり、「司令塔」。
必要なクラスのオブジェクトを作って、使って、処理の流れを組み立てる。

そして、

クラスはたくさんあっていい
main は基本的に1つ(または「スタート用」が1つ)
main は「全部自分でやる人」ではなく、「クラスたちに仕事を振る人」

この感覚が入っていれば、
2日目以降の「クラスをどう分けるか」「メソッドをどこに置くか」が、
一気に理解しやすくなります。

次のステップでは、
Personのようなクラスをもう少し増やして、
「役割ごとにクラスを分ける」練習をしていきましょう。
もう、クラスにビビる段階は抜けてるよ。

タイトルとURLをコピーしました