Excerpt |
---|
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.
Code Block |
---|
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();
}
}
|
Code Block |
---|
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();
}
} |
I mange sammenhenger er det greit å bruke et hovedprogram, altså lage en hovedprogramklasse, for å prøve ut andre klasser.