Design Recipe 1: Designing simple computational functions (methods).

 

Phase

Goal

Activity

Purpose

and Header

to name the function;

to specify its classes of input data

 

and its classes of output data;

 

 

 

 

to describe its purpose;

to formulate a header

choose a name that fits the problem

·        study the problem for clues on how many unknown "givens" the function consumes

·        identify the type of data for each of the "givens"

·        describe what the method should produce using the chosen variables

·        determine the type of data the function (method) should produce

·        formulate the purpose and signature (header):

/* to compute ... given par1, par2 ... */         

result-type name(par-type1 par1,

                 par-type2 par2, ...){

   ...

}

Examples

to characterize

the input-output relationship via examples

Design examples of invoking this function (method)

Body

to define the function

·        formulate how the function computes its result

·        develop a Java expression that uses Java's primitive operations, other functions, and the variables

·        translate the mathematical expressions in the problem statement, when available

Test

to discover mistakes

("typos" and logic)

·        apply the function to the inputs of the examples

·        check that the outputs are as predicted