1.3-Object-Georienteerd-Programmeren

Berekeningen

Bij deze opdracht gaan we oefenen met abstracte klassen en abstracte methoden. We gaan klassen schrijven voor het rekenen met twee getallen (doubles). De superklasse die we nodig hebben heet Calculation. Deze klasse maak je aan met twee getallen (value1 en value2) waarvoor je natuurlijk de constructor gebruikt. Daarnaast heeft de klasse een abstracte methode double calculate() die geïmplementeerd dient te worden in de subklassen.

Er zijn vier klassen die erven van de Calculation klasse:

Voorbeeld

De volgende code …

public static void main(String[] args) {
    ArrayList<Calculation> calculations = new ArrayList<>();

    // Add a bunch of calculations
    calculations.add(new SumCalculation(5, 10));
    calculations.add(new SubtractCalculation(20, 10));
    calculations.add(new MultiplyCalculation(20, 6));
    calculations.add(new DivisionCalculation(35, 7));

    try {
        calculations.add(new DivisionCalculation(35, 0));
    } catch (IllegalStateException ise) {
        System.err.println("Error: " + ise.getMessage());
    }

    // Execute calculations
    for (Calculation calculation : calculations) {
        System.out.println(calculation);
    }
}

… produceert de volgende output:

Error: Cannot divide by 0.
5.0 + 10.0 = 15.0
20.0 - 10.0 = 10.0
20.0 * 6.0 = 120.0
35.0 / 7.0 = 5.0

Let er op dat de laatste DivisionCalculation (35/0) niet toegestaan is omdat delen door 0 niet mag. Wij kiezen er voor om hier bij de constructor al een fout op te laten geven.