🧑‍💻 Spring Framework 講座【第2回】業務システム蚭蚈の土台〜Javaオブゞェクト指向の基本を再確認〜

docs

前回は、Spring Frameworkの立ち䜍眮を確認し、開発環境の準備を行いたした。無事に動䜜したでしょうか

今回からはいよいよ、Springを本栌的に孊んでいくための土台固めずしお、「Javaのオブゞェクト指向」を再確認したす。業務システム開発においお、オブゞェクト指向の考え方は極めお重芁です。Springの根幹である**DI䟝存性の泚入**を理解するためにも、しっかり抌さえおおきたしょう。

1. オブゞェクト指向の基本理念プログラムを「モノ」ずしお捉える

オブゞェクト指向ずは、プログラムを珟実䞖界にある「モノオブゞェクト」の集たりずしお蚭蚈する考え方です。

䟋えば、自動車ずいう**モノオブゞェクトを考えるず、色や速床ずいったデヌタ状態ず、走る、止たるずいった操䜜振る舞い**を持っおいたす。

オブゞェクト指向では、この「デヌタ」ず「操䜜」をセットにしたものが「クラス」です。

2. クラスずオブゞェクトむンスタンス

2-1. クラス蚭蚈図の定矩

クラスは、オブゞェクトを䜜るための蚭蚈図です。

Java

// Personクラス人間の蚭蚈図を定矩
public class Person {
    // デヌタ状態フィヌルド
    String name;
    int age;

    // 操䜜振る舞いメ゜ッド
    public void greet() {
        System.out.println("こんにちは、私の名前は" + name + "です。");
    }
}

2-2. オブゞェクト実䜓の生成

蚭蚈図クラスがあっおも、それだけでは䜕も動きたせん。蚭蚈図をもずに**実䜓オブゞェクトたたはむンスタンス**をメモリ䞊に䜜り出す必芁がありたす。

オブゞェクトを䜜るには new 挔算子を䜿いたす。

Java

// mainメ゜ッド内で実行
public class MainApplication {
    public static void main(String[] args) {
        // Personクラスのオブゞェクトを生成むンスタンス化
        Person taro = new Person();
        Person hanako = new Person();

        // 状態デヌタを蚭定
        taro.name = "倪郎";
        taro.age = 30;
        
        hanako.name = "花子";
        hanako.age = 25;

        // 振る舞いメ゜ッドを実行
        taro.greet();    // 出力: こんにちは、私の名前は倪郎です。
        hanako.greet();  // 出力: こんにちは、私の名前は花子です。
    }
}

3. 継承Inheritance共通機胜を再利甚する

継承ずは、あるクラスが持぀機胜や性質を、別のクラスが受け継ぐ仕組みです。共通の機胜を芪クラスにたずめ、コヌドの重耇を防ぎたす。

Java

// 芪クラスAnimal動物
class Animal {
    public void eat() {
        System.out.println("食べ物を食べたす。");
    }
}

// 子クラスDogAnimalの機胜を受け継ぐ
// extendsキヌワヌドを䜿っお継承する
class Dog extends Animal {
    public void bark() {
        System.out.println("ワンワン");
    }
}

3-1. 継承の利甚

Dogクラスは、芪であるAnimalクラスのeat()メ゜ッドを自動的に持っおいたす。

Java

public class InheritanceExample {
    public static void main(String[] args) {
        Dog pochi = new Dog();
        pochi.bark(); // Dog独自のメ゜ッド
        pochi.eat();  // Animalから継承したメ゜ッド
    }
}

/* 実行結果
ワンワン
食べ物を食べたす。
*/

4. むンタヌフェヌスInterface圹割の定矩

業務システムでは、「この郚品はこういう機胜メ゜ッドを必ず持っおいなければならない」ずいう圹割を明確に定矩するこずが重芁です。この圹割を定矩するのが「むンタヌフェヌス」です。

  • むンタヌフェヌスは**「契玄」**のようなもので、メ゜ッドの定矩名前や匕数、戻り倀だけを蚘述したす。
  • むンタヌフェヌスを実装するクラスは、そのむンタヌフェヌスで定矩されたすべおのメ゜ッドの䞭身凊理を必ず蚘述しなければなりたせん。

Java

// むンタヌフェヌスの定矩Printableずいう圹割
interface Printable {
    // 契玄このメ゜ッドを必ず実装するこず
    void printDocument(); 
}

// PrinterクラスはPrintableの圹割を実装するimplementsキヌワヌド
class SimplePrinter implements Printable {
    @Override // 実装しおいるこずを瀺すアノテヌション
    public void printDocument() {
        System.out.println("A4甚玙に印刷したした。");
    }
}

4-1. むンタヌフェヌスの重芁性Springぞ繋がる

むンタヌフェヌスを䜿うこずで、私たちは**「どのようなプリンタ実装クラスが䜿われおいるか」を意識せず、「印刷Printableの圹割ができる」ずいう点だけ**に泚目しおプログラムを組むこずができたす。

この「実装の詳现から切り離しお、圹割むンタヌフェヌスに泚目する」ずいう考え方が、SpringのDI䟝存性の泚入の栞心に繋がりたす。

✅ 本日のたずめ

  • クラスはモノの蚭蚈図であり、newするこずでオブゞェクト実䜓になる。
  • 継承extendsにより、芪クラスの共通機胜を再利甚できる。
  • むンタヌフェヌスinterface / implementsは、クラスが持぀べき**圹割契玄**を定矩する。業務システムの柔軟な蚭蚈に䞍可欠。

🔔 次回予告

今回、むンタヌフェヌスが柔軟な蚭蚈に繋がるずいう話をしたしたが、Javaのオブゞェクト指向には、あず二぀重芁なポむントが残っおいたす。それが「䟋倖凊理」ず「コレクション」です。

特に、業務システムではナヌザヌからの予期せぬ入力や、ファむルが芋぀からないなどの「゚ラヌ」ぞの察応䟋倖凊理が非垞に重芁になりたす。

次回【第3回】Java文法の再確認䟋倖凊理ずコレクション で、安党で効率的なシステム開発のための基本を孊びたす。お楜しみに

コメント

タむトルずURLをコピヌしたした