Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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:

  1. Hvordan oppgavene til et komplekst objekt kan deles opp og fordeles over flere objekter.
  2. 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.