   Next: 1.6.3 Inheritance and the Up: 1.6.2 An Extended Example: Previous: 1.6.2.3 Maintaining Sample Test

### 1.6.2.4 A Sample Program

We are now ready to define a simple program to sum the integers in a lists. We will add a definition of the method

int sum();
to each class in our composite class hierarchy for IntList. Let's begin by writing the contract and header for sum in the abstract class IntList:
```// IntList := Empty() + Cons(Object, IntList)

abstract class IntList {
...
abstract int sum();
// returns the sum of the numbers in this
}
```

Next we need to generate examples showing the expected behavior of the method:

```// IntList := Empty() + Cons(Object, IntList)

abstract class IntList {
...
abstract int sum();
// returns the sum of the numbers in this

void test(int ans) {
// assumes that ans is the correct answer for this.sum()
// prints this and the this.sum();
// reports failure if result does not match ans

int result = sum();
System.out.println("computed sum of " + this + " = " + sum());
if (result != ans)
System.out.println("FAILURE: correct answer is " + ans);
}

public static void main(String[] args) {
// test method
Empty.only.test(0);
Cons.oneElt.test(1);
Cons.twoElts.test(6);
Cons.threeElts.test(-4);
}
}
```

As the fourth step, we select a template for writing the sum method:

```class Empty {
...
int sum() { ... }
}

class Cons extends IntList {

int first;
IntList rest;
...
int sum() { ... first  ... rest ... rest.sum() ... ; }
}
```

Finally, we complete the coding process by filling in the bodies of the methods in the template:

```class Empty {
...
int sum() { return 0; }
}

class Cons extends IntList {

int first;
IntList rest;
...
int sum() { return first + rest.sum(); }
}
```

To finish the design recipe, we test our code using the examples in the main method of IntList.

Finger exercise: Load the IntList2 sample program into the DrJava Definitions window. In the Interactions window, run the tests specified in IntList.main. Using the design recipe, add a definition of a method prod to compute the product of a list of numbers and test it. Note that the Data Analysis and Design step has aleady been done in IntList code.   Next: 1.6.3 Inheritance and the Up: 1.6.2 An Extended Example: Previous: 1.6.2.3 Maintaining Sample Test
Corky Cartwright
2000-01-07