抽象クラス

概要

単なる継承ではなく抽象クラスを使って四則演算処理を記述しオブジェクトの動きを確認する。

abstract class CalcBase {
    void execute(int x, int y) {
        System.out.println("x=[" + x + "]");
        System.out.println("x=[" + y + "]");
        int ans = calc(x, y);
        System.out.println("答え=[" + ans + "]");
    }

    abstract int calc(int x, int y);
}

class Add extends CalcBase {
    Add() {
        System.out.println("足し算を実行するオブジェクトを生成しました。");
    }

    public int calc(int x, int y) {
        return x + y;
    }
}

class Sub extends CalcBase {
    Sub() {
        System.out.println("引き算を実行するオブジェクトを生成しました。");
    }

    public int calc(int x, int y) {
        return x - y;
    }
}

class Mult extends CalcBase {
    Mult() {
        System.out.println("掛け算を実行するオブジェクトを生成しました。");
    }

    public int calc(int x, int y) {
        return x * y;
    }
}

class Div extends CalcBase {
    Div() {
        System.out.println("割り算を実行するオブジェクトを生成しました。");
    }

    public int calc(int x, int y) {
        return x / y;
    }
}

class Surplus extends CalcBase {
    Surplus() {
        System.out.println("剰余算を実行するオブジェクトを生成しました。");
    }

    public int calc(int x, int y) {
        return x % y;
    }
}

public class BasicMathOperation {
    public static void main(String[] args) {
        Add ad = new Add();
        ad.execute(10, 20);
        Sub sb = new Sub();
        sb.execute(30, 28);
        Mult ml = new Mult();
        ml.execute(14, 3);
        Div dv = new Div();
        dv.execute(8, 3);
        Surplus sp = new Surplus();
        sp.execute(15, 6);
    }
}

実行結果

足し算を実行するオブジェクトを生成しました。
x=[10]
x=[20]
答え=[30]
引き算を実行するオブジェクトを生成しました。
x=[30]
x=[28]
答え=[2]
掛け算を実行するオブジェクトを生成しました。
x=[14]
x=[3]
答え=[42]
割り算を実行するオブジェクトを生成しました。
x=[8]
x=[3]
答え=[2]
剰余算を実行するオブジェクトを生成しました。
x=[15]
x=[6]
答え=[3]

抽象への憧れ−位相空間:20世紀数学のパラダイム (大人のための数学 5)

抽象への憧れ−位相空間:20世紀数学のパラダイム (大人のための数学 5)