17 01 01 Übungen zu Computeranwendung und Programmierung WS 10/11 Erster Kenntnisnachweis 15. - 19. November 2010 Aufgabe 1 Schreiben Sie eine Klasse Auto mit dem Konstruktor public Auto(String marke, int preis, int kw) und den Methoden public String gibMarke(), public int gibPreis() und public int gibKw(), die die Marke, den Preis und die Leistung (kw) zurückgeben. Schreiben Sie weiters eine Klasse Autohaendler, die über eine Liste vorhandener Autos verfügt. Mit dem Konstruktor public Autohaendler(), wird ein Autohändler ohne Autos erzeugt. Die Methode public void addAuto(Auto einAuto) fügt einAuto der Liste der vorhandenen Autos hinzu. Implementieren Sie auch die folgenden Methoden: public ArrayList<Auto> gibAutos(int wert, int leistung) liefert eine ArrayList mit jenen Autos die einen Preis ≤ wert und eine Leistung ≥ leistung haben. public ArrayList<Auto> gibMarke(String bestimmteMarke) liefert eine ArrayList mit allen Autos einer bestimmten Marke zurück, public double durchschnittspreis() soll den Durchschnittspreis aller auf Lager befindlichen Autos zurückgeben. Die Methode public int zaehle(String bestimmteMarke) soll zaehlen, wie viele Autos einer bestimmten Marke vorhanden sind und die Anzahl dieser Autos zurückgeben. Aufgabe 2 Schreiben Sie eine Klasse Gast mit dem Konstruktor public Gast(String name, int zimmerpreis, int anzahlTage) und den Methoden public int gibVerweilzeit(), public int gibPreis() und public String gibName(), die die Aufenthaltszeit (anzahlTage), den Zimmerpreis und den Namen des Gastes zurückgeben. Darüber hinaus soll diese Klasse über eine Methode public int rechnung() verfügen, die den zu zahlenden Betrag (=anzahlTage*zimmerpreis) für einen Gast berechnet. Schreiben Sie weiters eine Klasse Hotel, die über eine Gästeliste verfügt. Mit dem Konstruktor public Hotel(), wird ein Hotel mit leerer Gästeliste erzeugt. Die Methode public void addGast(Gast einGast) fügt einGast der Gästeliste hinzu, die Methode public ArrayList<Gast> gibLangeAufenthalte(int vieleTage) soll eine ArrayList mit jenen Gästen zurückgeben, die einen Aufenthalt von mehr als vieleTage gebucht haben. Die Methode public double gibDurchschnitt() soll die durchschnittliche Aufenthaltsdauer aller Gäste des Hotels zurückgeben. Die Methode public int zaehleGuteGaeste(int betrag) soll zaehlen, wie viele Gäste ein teures Zimmer (zimmerpreis > betrag) gebucht haben und die Anzahl dieser Gäste zurückgeben. Aufgabe 3 Schreiben Sie eine Klasse Gast mit dem Konstruktor public Gast(String name, int zimmerpreis, int anzahlTage) und den Methoden public int gibVerweilzeit(), public int gibPreis() und public String gibName(), die die Aufenthaltszeit (anzahlTage), den Zimmerpreis und den Namen des Gastes zurückgeben. Darüber hinaus soll diese Klasse über eine Methode public int rechnung() verfügen, die den zu zahlenden Betrag (=anzahlTage*zimmerpreis) für einen Gast berechnet. Schreiben Sie weiters eine Klasse Hotel, die über eine Gästeliste verfügt. Mit dem Konstruktor public Hotel(), wird ein Hotel mit leerer Gästeliste erzeugt. Die Methode public void addGast(Gast einGast) fügt einGast der Gästeliste hinzu, die Methode public double gibDurchschnitt() soll die durchschnittliche Aufenthaltsdauer aller Gäste des Hotels zurückgeben. Die Methode public double rechnung(Gast einGast) soll den zu zahlenden Betrag (=anzahlTage*zimmerpreis) für einen Gast berechnen, wobei der Zimmerpreis für einen Gast, der mehr Tage als die durchschnittliche Aufenthaltsdauer im Hotel verbringt, um zehn Prozent vermindert ist (mit 0.9 multiplizieren)! public ArrayList<Gast> gibKurzeAufenthalte() soll eine ArrayList mit jenen Gästen zurückgeben, die einen Aufenthalt gebucht haben, der höchstens so lange ist, wie die durchschnittliche Aufenthaltsdauer, public int zaehleUeberDS() soll zaehlen, wie viele Gäste einen Urlaub gebucht haben, der länger dauert als die durchschnittliche Aufenthaltsdauer und die Anzahl dieser Gäste zurückgeben. Aufgabe 4 Schreiben Sie eine Klasse Produkt mit dem Konstruktor public Produkt(String bezeichnung, int preis, int wieviele) und den Methoden public String gibBezeichnung(), public int gibWieviele() und public void setzeWieviele(int anzahl), die die Bezeichnung eines Produkts bzw. die Stückanzahl die von einem Produkt auf Lager liegt, zurückgeben, sowie diese Stückanzahl neu definieren. Schreiben Sie weiters eine Klasse Lager, die über eine Produktliste verfügt. Mit dem Konstruktor public Lager(), wird ein Lager mit leerer Produktliste erzeugt. Die Methode public boolean addProdukt(Produkt einProdukt) fügt einProdukt der Lagerliste dann hinzu, wenn einProdukt im Lager noch nicht vorhanden ist. Der Rückgabewert ist true, wenn einProdukt hinzugefügt werden konnte, sonst false. Die Methode public boolean auslieferungMoeglich(String bezeichnung, int anzahl) soll true zurückgeben, wenn vom Produkt bezeichnung mindestens anzahl Stück im Lager vorhanden sind, sonst false. Die Methode public void liefereAus(String bezeichnung, int anzahl) soll für das Produkt bezeichnung die Auslieferung durchführen, d. h. den Lagerbestand für dieses Produkt um anzahl vermindern, die Methode public void einlagern(String bezeichnung, int anzahl) soll für das Produkt bezeichnung den Lagerbestand um anzahl Stück erhöhen. Die Methode public ArrayList<Produkt> warnung(int anzahl) soll eine Liste all jener Produkte zurückgeben, deren Bestand auf weniger als anzahl Stück gesunken ist. Aufgabe 5 Schreiben Sie eine Klasse Student mit dem Konstruktor public Student(String matNr, String studienrichtung, int noteLv1, int noteLv2) und den Methoden public public public public String gibMatNr(), String gibSR(), int gibNoteLv1() und int gibNoteLv2(), die die entsprechenden Attribute zurückgeben, wobei lv1 und lv2 die Noten sind, die der Student auf die Prüfungen zweier Lehrveranstaltungen (LV1,LV2) bekommen hat. Schreiben Sie weiters eine Klasse Uebung, die über eine Übungsliste verfügt, in die sich Studenten unter gewissen Bedingungen (siehe unten) eintragen können. Mit dem Konstruktor public Uebung(), wird eine Übung mit leerer Übungsliste erzeugt. Die Methode public boolean addStudent(Student einStudent) fügt einStudent der Übungsliste hinzu, falls folgende Bedingungen erfüllt sind: 1. Kein Student darf öfter als einmal in der Liste vorkommen (Identifikation =matNr). 2. Ein Student der Studienrichtung "X13" darf an diesen Übungen nur teilnehmen, wenn er die Prüfung für die LV1 positiv abgelegt hat. 3. Ein Student der Studienrichtung "Y17" darf an diesen Übungen nur teilnehmen, wenn er die Prüfung für die LV2 positiv abgelegt hat. 4. Ein Student der Studienrichtung "Z77" darf an diesen Übungen nur teilnehmen, wenn er sowohl die Prüfung für die LV1 als auch für die LV2 positiv abgelegt hat. 5. Alle anderen Studenten dürfen auch teilnehmen, wenn sie die Bedingungen 2, 3 und 4 nicht erfüllen. Eine Methode public ArrayList<Student> leistungsstipendien() soll eine Liste all jener Studenten zurückgeben, die beide Prüfungen mit Note 1 oder 2 bestanden haben. Aufgabe 6 Schreiben Sie eine Klasse Produkt mit dem Konstruktor public Produkt(String bezeichnung, double preis, Datum lagerDatum) und den Methoden public double gibPreis(), public Datum gibDatum() und public void setzePreis(double neuerPreis), die den Stückpreis bzw. das Einlagerdatum für ein Produkt zurückgeben, sowie den Preis neu setzen. lagerDatum ist dabei ein Objekt der Klasse Datum mit dem Konstruktor public Datum(int jahr, int monat), sowie den Methoden public int gibJahr() und public int gibMonat(), die die entsprechenden Attribute zurückgeben. Des weiteren soll Datum über eine Methode public boolean vor(Datum date) verfügen, die beim Aufruf date1.vor(date2) true zurckgibt, wenn date1 ein Datum darstellt, das auf der Zeitachse vor date2 liegt! Liegt date2 vor date1 oder bezeichnen date2 und date1 dasselbe Datum, so soll diese Methode false zurückgeben! Schreiben Sie weiters eine Klasse Lager, die über eine Produktliste verfügt. Mit dem Konstruktor public Lager(), wird ein Lager mit leerer Produktliste erzeugt. Die Methode public void addProdukt(Produkt einProdukt) fügt einProdukt dem Lager hinzu, die Methode public void verminderePreis(Datum date, double prozent) soll den Preis all jener Produkte, die früher als date angibt, eingelagert wurden, )). Die Methode um den Prozentsatz prozent vermindern (preis ∗ (1 − prozent 100 public ArrayList<Produkt> getAbDatum(Datum date) soll eine Liste all jener Produkte zurückgeben, die nach jenem Zeitpunkt den date angibt, eingelagert wurden.