OK nächste Aufgabe:
Fügen Sie eine Methode anzahlZugriffe in die Klasse Protokollauswerter ein und
überprüfen Sie, ob sie das richtige Ergebnis liefert.
Hinweis: Sie können die Prüfung vereinfachen, indem Sie den Auswerter eine Datei mit nur wenigen
Zeilen lesen lassen. Auf diese Weise werden Sie leichter feststellen können, ob ihre Methode das
richtige Ergebnis liefert. Die Klasse LogdateiLeser hat einen Konstruktor mit folgendem Kopf, um
aus einer bestimmten Datei lesen zu können.
/**
*Erzeuge einen LogdateiLeser, der Einträge aus einer
*Datei mit dem angegeben Namen liest.
*@param dateiname der Name der Logdatei.
*/
public LogdateiLeser(String dateiname)
Klasse Protokollauswerter:
So die Methode anzahlZugriffe haben wir schonmal.
Welche Datei mit nur wenigen Zeilen soll hier gelesen werden?
Die Klasse Protokollauswerter soll lesen.
Verstehe die Aufgabenstellung nicht ganz.
Das was da über die Klasse LogdateiLeser steht bzw. deren Konstruktor muss ich nun
auf die Klasse Protokollauswerter übertragen? Sodass Protokollauswerter die Datei lesen kann?
Fügen Sie eine Methode anzahlZugriffe in die Klasse Protokollauswerter ein und
überprüfen Sie, ob sie das richtige Ergebnis liefert.
Hinweis: Sie können die Prüfung vereinfachen, indem Sie den Auswerter eine Datei mit nur wenigen
Zeilen lesen lassen. Auf diese Weise werden Sie leichter feststellen können, ob ihre Methode das
richtige Ergebnis liefert. Die Klasse LogdateiLeser hat einen Konstruktor mit folgendem Kopf, um
aus einer bestimmten Datei lesen zu können.
/**
*Erzeuge einen LogdateiLeser, der Einträge aus einer
*Datei mit dem angegeben Namen liest.
*@param dateiname der Name der Logdatei.
*/
public LogdateiLeser(String dateiname)
Klasse Protokollauswerter:
Code:
/**
* Eine Klasse, die das Protokoll eines Webservers
* in Hinsicht auf Zugriffe pro Stunde auswertet.
*
* @author David J. Barnes und Michael Kölling.
* @version 31.07.2011
*/
public class ProtokollAuswerter
{
// Hier werden die Zugriffe für die Stunden gehalten
private int[] zugriffeInStunde;
// Verwendung eines LogdateiLesers
private LogdateiLeser leser;
private int stunde;
/**
* Erzeuge ein Exemplar, das die Zugriffe in den
* Stunden eines Tages zählt.
*/
public ProtokollAuswerter(String Sebastian)
{
// das Array-Objekt erzeugen, das die Zugriffe
// in den einzelnen Stunden eines Tages zählt.
zugriffeInStunde = new int[24];
// Den Leser für die Logdatei erzeugen.
leser = new LogdateiLeser(Sebastian);
}
/**
* Analysiere die in der Logdatei erfassten Zugriffsdaten.
*/
public void analysiereStundendaten()
{
while(leser.hasNext()) {
Logeintrag eintrag = leser.next();
int stunde = eintrag.gibStunde();
zugriffeInStunde[stunde]++;
}
}
public int anzahlZugriffe() {
int gesamt = 0;
for (int aktuellerZugriff : zugriffeInStunde){
gesamt = gesamt + aktuellerZugriff;
}
return gesamt;
}
/**
* Gib die Anzahl der Zugriffe in den Stunden eines
* Tages nach Stunden sortiert auf der Konsole aus.
* Diese Werte sollten zuerst mit einem Aufruf von
* 'analysiereStundendaten' berechnet werden.
*/
public void stundendatenAusgeben()
{
System.out.println("Stunde: Zugriffe");
for(int stunde = 0; stunde < zugriffeInStunde.length; stunde++) {
System.out.println(stunde + ": " + zugriffeInStunde[stunde]);
}
}
/**
* Gib die Zeilen der Logdatei auf der Konsole aus.
*/
public void logdateiAusgeben()
{
leser.datenAusgeben();
}
}
So die Methode anzahlZugriffe haben wir schonmal.
Welche Datei mit nur wenigen Zeilen soll hier gelesen werden?
Die Klasse Protokollauswerter soll lesen.
Verstehe die Aufgabenstellung nicht ganz.
Das was da über die Klasse LogdateiLeser steht bzw. deren Konstruktor muss ich nun
auf die Klasse Protokollauswerter übertragen? Sodass Protokollauswerter die Datei lesen kann?