プログラミングBlog

プログラミング学習用

ちょいちょい書いてます

開発アプリサークル Java講座① 2020-11-14(土)

今回はクラス(model)について

Springフレームワークの依存関係を追加する時にlombockがあると思いますが、 modelを作る上で必要な部分がわからなくなってしまうので学習しました。
Employee(従業員)を作ってみましょう。まずはlombokとの比較からみていきましょう。

lombokとの比較例

@Data
public class Employee {
    // フィールド
    private int id;
    private String name;
    }
}

lombockを使うとフィールドに変数を宣言するだけで後はアノテーションがいい感じに処理をしてくれます。
@Getter @Setter @ToString @EqualsAndHashCode @Constructor この5個のアノテーションが付与されます。
@Getter @Setter このふたつが重要なので書いていきます。

public class Employee {
    // フィールド
    private int id;
    private String name;

    // getter
    public int getId() {
        return this.id;
    }

    // setter
    public void setId(int id) {
        this.id = id;
    }

    // getter
    public String getName() {
        return this.name;
    }

    // setter
    public void setId(String name) {
        this.name = name;
    }
}

書くコードがだいぶ増えましたが、
getterとsetterがないとprivateな変数の値を別のクラスで取り出したり、設定したりができなくなるのでかなり重要です。 lombockについてはここでいったん終了し、次はコンストラクターを作っていきます。
コンストラクタを書くことで、インスタンス宣言時にそのクラスにある変数の値を設定することができます。
コンストラクタとは・・・インスタンス生成した時に最初に呼びだされる場所のこと

// コンストラクタ
    Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }

Employeeクラスにこちらを追加。
Employeeクラスを呼び出してみましょう。

public class Main {
    public static void main(String[] args) {
        Employee A = new Employee(1, "A");

        System.out.println(A.getId());
        System.out.println(A.getName());;
    }
}

f:id:Tokuty:20201121140044p:plain
コンストラクタでインスタンス生成時に値を設定し、Getterで呼び出しています。
次はCompany(会社)を作ってみます。

public class Company {

    public String companyName;

    public Employee customer;

    Company(String companyName, Employee customer) {
        this.companyName = companyName;
        this.customer = customer;
    }

    // getter
    public String getCompanyName() {
        return this.companyName;
    }

    // setter
    public void setId(String companyName) {
        this.companyName = companyName;
    }

    // getter
    public Employee getCustomer() {
        return this.customer;
    }

    // setter
    public void setCustomer(Employee customer) {
        this.customer = customer;
    }
}

コンストラクターの部分で会社名とEmployee(社員)を設定するようにしてみました。
イメージは会社に属している社員。
実行してみます。

public class Main {

    public static void main(String[] args) {
        Employee A = new Employee(1, "A");

        Company company = new Company("KAISYA", A);

        System.out.println(company.getCompanyName());
        System.out.println(company.getCustomer().getName());
    }
}

f:id:Tokuty:20201121141000p:plain
無事、会社名と会社に属している会社員名が表示されました。