Hi Java/BlueJ-Interessierte
Mich interessiert was Ihr für Lösungsansatze für die folgenden Aufgaben habt:
(Hinweis: Bitte dokumentieren Sie alle Sourcecodes mit Kommentaren im Programm! Um ist die Nachvollziehbarkeit des Programms für andere User zu ermöglich.)
Greetz cruiser_s
Aufgabe 1: Unverkaufte Posten ausgeben
Alles anzeigen
Fügen Sie der Klasse Auktion eine Methode gibUnverkaufte hinzu, die über folgende Signatur verfügt:
Diese Methode soll über das Datenfeld posten iterieren und unverkaufte Posten in einer neuen lokalen ArrayList-Variablen ablegen. Am Ende soll diese Liste als Ergebnis der Methode zurückgegeben
werden. (Übung 4.15 aus dem Buch: Java lernen mit BlueJ)
Aufgabe 2:
Fügen Sie der Klasse Auktion eine Methode mit folgender Signatur hinzu:
Diese Methode soll nicht davon ausgehen, dass ein Posten mit einer bestimmten Nummer an einer bestimmten Position innerhalb der Liste abgelegt ist. (Übung 4.18 aus dem Buch)
Aufgabe 3:
Alles anzeigen
Fügen Sie im Projekt Weblog-Auswertung der Klasse ProtokollAuswerter eine Methode ruhigsteStunde hinzu, welche die Stunde mit den wenigsten Zugriffen liefern soll. (Übung 4.31 aus dem Buch)
Aufgabe 4:
Alles anzeigen
Java bietet einen weiteren Schleifentyp an: do-while-Schleife. Finden Sie heraus, wie diese Schleife funktioniert und beschreiben Sie es. Was ist der wesentliche Unterschied zu den anderen Schleifen? Schreiben Sie zusätzlich die Methode notizenAusgeben im Projekt Notizbuch so um, dass sie eine do-while-Schleife benutzt.
Aufgabe 5: Sortierte Ausgabe im Projekt Auktion
Erweitern Sie das Projekt Auktion so, dass die Ausgabe der Posten sortiert erfolgt (genauer: alphabetisch aufsteigend). Die Ausgabe der Posten soll dabei alle Details der Posten berücksichtigen.
Mich interessiert was Ihr für Lösungsansatze für die folgenden Aufgaben habt:
(Hinweis: Bitte dokumentieren Sie alle Sourcecodes mit Kommentaren im Programm! Um ist die Nachvollziehbarkeit des Programms für andere User zu ermöglich.)
Greetz cruiser_s
Aufgabe 1: Unverkaufte Posten ausgeben
Quellcode
- import java.util.*;
- /**
- * Ein einfaches Modell einer Auktion.
- * Ein Exemplar dieser Klasse hält eine Liste von Posten,
- * die beliebig lang werden kann.
- * @author David J. Barnes und Michael Kölling.
- * @version 2003.03.02
- */
- public class Auktion
- {
- // eine Liste der Posten dieser Auktion
- private ArrayList postenliste;
- // die Nummer, die an den nächsten Posten vergeben wird,
- // der für diese Auktion angemeldet wird.
- private int naechstePostennummer;
- /**
- * Erzeuge eine neue Auktion.
- */
- public Auktion()
- {
- postenliste = new ArrayList();
- naechstePostennummer = 1;
- }
- /**
- * Melde einen Posten für diese Auktion an.
- * Posten können nur über diese Operation in eine
- * Auktion eingebracht werden.
- * @param beschreibung die Beschreibung des Postens.
- */
- public void postenAnmelden(String beschreibung)
- {
- postenliste.add(new Posten(naechstePostennummer, beschreibung));
- naechstePostennummer++;
- }
- /**
- * Zeige eine komplette Liste der Postennummern mit
- * Postenbeschreibungen für diese Auktion. Zeige auch
- * die aktuellen Höchstgebote.
- */
- public void zeigePostenliste()
- {
- Iterator it = postenliste.iterator();
- while(it.hasNext()) {
- Posten posten = (Posten) it.next();
- System.out.println(posten.gibNummer() + ": " +
- posten.gibBeschreibung());
- // Informationen über Höchstgebote anzeigen.
- Gebot hoechstesGebot = posten.gibHoechstesGebot();
- if(hoechstesGebot != null) {
- System.out.println(" Gebot: " +
- hoechstesGebot.gibHoehe());
- }
- else {
- System.out.println(" (kein Gebot)");
- }
- }
- }
- /**
- * Liefere den Posten mit der angegebenen Nummer.
- * Liefere 'null', wenn ein Posten mit dieser Nummer
- * nicht existiert.
- * @param nummer die Nummer des Postens, der geliefert
- * werden soll.
- */
- public Posten gibPosten(int nummer)
- {
- if((nummer >= 1) && (nummer < naechstePostennummer)) {
- // die Nummer scheint gültig zu sein.
- Posten gewaehlterPosten = (Posten) postenliste.get(nummer-1);
- // ein Sicherheitscheck, ob wir auch den richtigen
- // Posten haben:
- if(gewaehlterPosten.gibNummer() != nummer) {
- System.out.println("Interner Fehler: " +
- "falsche Postennummer. " +
- "Number: " + nummer);
- }
- return gewaehlterPosten;
- }
- else {
- System.out.println("Einen Posten mit der Nummer: " + nummer +
- " gibt es nicht.");
- return null;
- }
- }
- }
Fügen Sie der Klasse Auktion eine Methode gibUnverkaufte hinzu, die über folgende Signatur verfügt:
Diese Methode soll über das Datenfeld posten iterieren und unverkaufte Posten in einer neuen lokalen ArrayList-Variablen ablegen. Am Ende soll diese Liste als Ergebnis der Methode zurückgegeben
werden. (Übung 4.15 aus dem Buch: Java lernen mit BlueJ)
Aufgabe 2:
Fügen Sie der Klasse Auktion eine Methode mit folgender Signatur hinzu:
Diese Methode soll nicht davon ausgehen, dass ein Posten mit einer bestimmten Nummer an einer bestimmten Position innerhalb der Liste abgelegt ist. (Übung 4.18 aus dem Buch)
Aufgabe 3:
Quellcode
- /**
- * Eine Klasse, die das Protokoll eines Web-Servers
- * in Hinsicht auf Zugriffe pro Stunde auswertet.
- *
- * @author David J. Barnes und Michael Kölling.
- * @version 2003.05.17
- */
- public class ProtokollAuswerter
- {
- // Hier werden die Zugriffe für die Stunden gehalten
- private int[] zugriffeInStunde;
- // Verwendung eines LogdateiLesers
- private LogdateiLeser leser;
- /**
- * Erzeuge ein Exemplar, das die Zugriffe in den
- * Stunden eines Tages zählt.
- */
- public ProtokollAuswerter()
- {
- // 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();
- }
- /**
- * Analysiere die in der Logdatei erfassten Zugriffsdaten.
- */
- public void analysiereStundendaten()
- {
- while(leser.hatWeitereEintraege()) {
- Logeintrag eintrag = leser.naechsterEintrag();
- int stunde = eintrag.gibStunde();
- zugriffeInStunde[stunde]++;
- }
- }
- /**
- * 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();
- }
- }
Fügen Sie im Projekt Weblog-Auswertung der Klasse ProtokollAuswerter eine Methode ruhigsteStunde hinzu, welche die Stunde mit den wenigsten Zugriffen liefern soll. (Übung 4.31 aus dem Buch)
Aufgabe 4:
Quellcode
- import java.util.ArrayList;
- /**
- * Eine Klasse zur Verwaltung von beliebig langen Notizlisten.
- * Notizen sind nummeriert, um durch einen Benutzer referenziert
- * werden zu können.
- * In dieser Version starten die Notiznummern bei 0.
- *
- * @author David J. Barnes and Michael Kolling.
- * @version 2003.04.15
- */
- public class Notizbuch
- {
- // Speicher für eine beliebige Anzahl an Notizen.
- private ArrayList notizen;
- /**
- * Führe die Initialisierungen durch, die für ein Notizbuch
- * notwendig sind.
- */
- public Notizbuch()
- {
- notizen = new ArrayList();
- }
- /**
- * Speichere eine neue Notiz in diesem Notizbuch.
- * @param notiz die zu speichernde Notiz.
- */
- public void speichereNotiz(String notiz)
- {
- notizen.add(notiz);
- }
- /**
- * @return die Anzahl der Notizen in diesem Notizbuch.
- */
- public int anzahlNotizen()
- {
- return notizen.size();
- }
- /**
- * Zeige eine Notiz.
- * @param notiznummer die Nummer der Notiz, die gezeigt werden soll.
- */
- public void zeigeNotiz(int notiznummer)
- {
- if(notiznummer < 0) {
- // Keine gültige Nummer, nichts zu tun.
- }
- else if(notiznummer < anzahlNotizen()) {
- // Die Nummer ist gültig, wir können die Notiz ausgeben.
- System.out.println(notizen.get(notiznummer));
- }
- else {
- // Keine gültige Nummer, nichts zu tun.
- }
- }
- }
Java bietet einen weiteren Schleifentyp an: do-while-Schleife. Finden Sie heraus, wie diese Schleife funktioniert und beschreiben Sie es. Was ist der wesentliche Unterschied zu den anderen Schleifen? Schreiben Sie zusätzlich die Methode notizenAusgeben im Projekt Notizbuch so um, dass sie eine do-while-Schleife benutzt.
Aufgabe 5: Sortierte Ausgabe im Projekt Auktion
Erweitern Sie das Projekt Auktion so, dass die Ausgabe der Posten sortiert erfolgt (genauer: alphabetisch aufsteigend). Die Ausgabe der Posten soll dabei alle Details der Posten berücksichtigen.