diff --git a/MessApp.java b/MessApp.java new file mode 100644 index 0000000..3cb8b41 --- /dev/null +++ b/MessApp.java @@ -0,0 +1,34 @@ +/** + * Die Klasse MessApp steuert einen Messablauf, um die Performance des + * Zufallszahlengenerators zu messen. + */ +public class MessApp { + private Messkonduktor messkonduktor; + + /** + * Fuehrt eine Messung durch. + */ + public void messen() { + initialisieren(); + analyseDurchfuehren(); + berechneUndDruckeMittelwerteMessreihe(); + berechneUndDruckeMittelwerteMessung(); + } + + private void initialisieren() { + // TODO Objektsammlung und Messkonduktor erzeugen + } + + private void analyseDurchfuehren() { + // TODO Benutzen Sie 'messkonduktor' um die Messungen + // durchzufuehren und in der Objektsammlung zu speichern. + } + + private void berechneUndDruckeMittelwerteMessreihe() { + // TODO Implementieren Sie die Methode. + } + + private void berechneUndDruckeMittelwerteMessung() { + // TODO Implementieren Sie die Methode. + } +} \ No newline at end of file diff --git a/Messkonduktor.java b/Messkonduktor.java new file mode 100644 index 0000000..2a63d49 --- /dev/null +++ b/Messkonduktor.java @@ -0,0 +1,58 @@ +import java.util.Arrays; +import java.util.Random; + +/** + * Mit dem Messkonduktor kann die Zeit fuer das Erzeugen und Sortieren einer + * vorgegebenen Anzahl Zusfallszahlen gemessen werden. Die Anzahl Zufallszahlen + * ist konfigurierbar. + */ +public class Messkonduktor { + private int anzahlZufallszahlen; + + /** + * Erstellt einen Messkonduktor. + * + * @param anzahlZufallszahlen Anzahl Zufallszahlen pro Messung. + */ + public Messkonduktor(int anzahlZufallszahlen) { + this.anzahlZufallszahlen = anzahlZufallszahlen; + } + + /** + * Fuehrt eine Anzahl Messungen durch. Die Anzahl ist bestimmt durch die + * Laenge des uebergeben Arrays. Eine einzelne Messung besteht aus dem + * Generieren und Sortieren der Zufallszahlen. + * + * @param messResultate Der Array fuer die Messresultate. + * @return Messresultate mit Zeitdauer in ms. + */ + public int[] messungenDurchfuehren(int[] messResultate) { + for (int i = 0; i < messResultate.length; i++) { + messResultate[i] = einzelneMessungDurchfuehren(); + } + + return messResultate; + } + + private int einzelneMessungDurchfuehren() { + long zeitVorher = System.currentTimeMillis(); + + int[] zufallszahlen = zufallszahlenGenerieren(); + Arrays.sort(zufallszahlen); + + long zeitDanach = System.currentTimeMillis(); + int zeitdauerInMs = (int) (zeitDanach - zeitVorher); + + return zeitdauerInMs; + } + + private int[] zufallszahlenGenerieren() { + int[] zufallszahlen = new int[anzahlZufallszahlen]; + Random zufallszahlenGenerator = new Random(); + + for (int i = 0; i < anzahlZufallszahlen; i++) { + zufallszahlen[i] = zufallszahlenGenerator.nextInt(100000); + } + return zufallszahlen; + } +} diff --git a/README.TXT b/README.TXT new file mode 100644 index 0000000..0ad193f --- /dev/null +++ b/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/package.bluej b/package.bluej new file mode 100644 index 0000000..9b8dcbc --- /dev/null +++ b/package.bluej @@ -0,0 +1,31 @@ +#BlueJ package file +dependency1.from=MessApp +dependency1.to=Messkonduktor +dependency1.type=UsesDependency +package.editor.height=400 +package.editor.width=560 +package.editor.x=222 +package.editor.y=351 +package.numDependencies=1 +package.numTargets=2 +package.showExtends=true +package.showUses=true +project.charset=UTF-8 +target1.editor.height=700 +target1.editor.width=900 +target1.editor.x=0 +target1.editor.y=1 +target1.height=50 +target1.name=Messkonduktor +target1.showInterface=false +target1.type=ClassTarget +target1.width=120 +target1.x=240 +target1.y=170 +target2.height=50 +target2.name=MessApp +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=70 +target2.y=40