Morgan's Calculator

June 22, 2010 – 6 years, 10 months ago, by Vladimir Klebanov

Short Description

A calculator object is able to receive an arbitrary number or real
numbers, and is able to provide to arithmetic mean of the numbers
entered so far.

Long Description

The calculator has the following Java interface:

interface CalcInt {
  // resets the calculator
  void reset();

  // add element x to calculator
  void add(double x);

  // returns the mean of numbers added so far
  double mean();

}

Problem 1: how could we formally specify this interface?

An implementation can be clever: it only needs to store the sum and the
count of numbers received, e.g the following Java implementation :

class Calculator implements CalcInt {
  private double sum;
  private int count;

  void reset() { sum = 0.0; count = 0; }
  void add(double x) { sum += x; count++; }
  double mean() { return sum/count; }

}

Problem 2: how to prove it implements the calculator correctly?

Supplementary Materials

This is an example from Carroll Morgan's book ``Programming from
Specifications'', Section 17.6
http://web2.comlab.ox.ac.uk/oucl/publications/books/PfS/

Subbmitted by

Claude Marché