RandomMinMaksSnitt-eksemplet er et kode-eksempel som viser bruk av hovedprogram for å bruke/teste flere andre (små)klasser.
Dette eksemplet er ment å illustrere to ting:
- Hvordan oppgavene til et komplekst objekt kan deles opp og fordeles over flere objekter.
- Hvordan et hovedprogram, kodet i en hovedprogramklasse, kan brukes for å koordinere og prøve ut andre klasser.
Anta at du skal prøve ut en metode for å lage tilfeldige tall, f.eks. basert på http://en.wikipedia.org/wiki/Random_number_generation. I første omgang ønsker du å lage 1000 tilfeldige tall og sjekke minimum-, maksimum og gjennomsnittsverdien. Her er en hovedprogramklasse som inneholder algoritmen fra Wikipedia og som beregner de tre nevnte verdiene.
package randomminmaxaverage; public class RandomProgram1 { // from http://en.wikipedia.org/wiki/Random_number_generation long m_w = 31; /* must not be zero, nor 0x464fffff */ long m_z = 42; /* must not be zero, nor 0x9068ffff */ long nextRandom() { m_z = 36969 * (m_z & 65535) + (m_z >> 16); m_w = 18000 * (m_w & 65535) + (m_w >> 16); return (m_z << 16) + m_w; /* 32-bit result */ } void init() { } long min = Long.MAX_VALUE; long max = Long.MIN_VALUE; long count = 0, sum = 0; void run() { while (count < 1000) { long randomValue = nextRandom(); if (randomValue < min) { min = randomValue; } if (randomValue > max) { max = randomValue; } sum += randomValue; count++; } System.out.println("Min: " + min); System.out.println("Max: " + max); System.out.println("Average: " + (sum / count)); } public static void main(String[] args) { RandomProgram1 program = new RandomProgram1(); program.init(); program.run(); } }
public class RandomProgram2 { Random random; Min min; Max max; Average average; void init() { random = new Random(); min = new Min(); max = new Max(); average = new Average(); } void run() { for (int i = 0; i < 1000; i++) { long randomValue = random.nextRandom(); min.accumulate(randomValue); max.accumulate(randomValue); average.accumulate(randomValue); } System.out.println("Min: " + min.getMin()); System.out.println("Max: " + max.getMax()); System.out.println("Average: " + average.getAverage()); } public static void main(String[] args) { RandomProgram2 program = new RandomProgram2(); program.init(); program.run(); } }