04 Felder

IV Interaktion
04 Felder
Ein elektronischer Buchladen
Die Klasse Buch
 Welche Attribute sollte diese Klasse haben?
Unser Bücherregal
 Welche Attribute und welche Methoden sind hier
sinnvoll?
Die Umsetzung und ihre Tücken
public class Buecherregal
{
private Buch buch1;
private Buch buch2;
private Buch buch3;
private Buch buch4;
...
public Buecherregal()
{
buch1 = new Buch();
buch2 = new Buch();
buch3 = new Buch();
buch4 = new Buch();
...
}
...
}
 Was mache ich bei 100
Büchern?
Lösung:
Wir brauchen Arrays!
Aber was ist das?
Beispiel mit ganzen Zahlen:
eine Integervariable
int zahl;
zahl = 41;
ein Array von Integervariablen
int[] zahlen;
zahlen[0] = 23;
zahlen[1] = 19;
zahlen[2] = 33;
04 Felder: Beispiel1
public class Beispiel1
{
private int[] zahlen;
public Beispiel1()
{
zahlen = new int[7];
}
public void zahlenEintragen()
{
zahlen[0] = 3;
zahlen[1] = 2;
zahlen[2] = 7;
zahlen[3] = 9;
zahlen[4] = 1;
zahlen[5] = 7;
zahlen[6] = 13;
}
Ein Array ist ein Objekt!
public class Beispiel1
{
private int[] zahlen;
public Beispiel1()
{
zahlen = new int[7];
}
…
1. Eine Referenz auf ein
int-Array deklarieren!
2. Hier wird das int[ ] – Objekt erzeugt und
festgelegt, dass es 7 Zahlen aufnehmen kann.
Werte eintragen
public void zahlenEintragen()
{
zahlen[0] = 3;
zahlen[1] = 2;
zahlen[2] = 7;
zahlen[3] = 9;
zahlen[4] = 1;
zahlen[5] = 7;
zahlen[6] = 13;
}
Ausprobieren!
 Erstelle ein Objekt der Klasse Beispiel1.
 Inspiziere die Attribute dieses Objekts.
 Führe die Methode Werte eintragen aus.
 Inspiziere noch einmal.
Ja und? Welchen Vorteil hat das?
 Erstelle ein Objekt der Klasse Beispiel2
 Führe die Methoden aus. Was passiert?
 Schau in den Quelltext. Kannst du ihn erklären?
Aufgaben
 Speichere die ersten 100 Quadratzahlen in einem
Array und lasse sie ausgeben.
 Buch S. 68/1 Temperaturmessung
 Tipp: Zufallszahlen siehe Beispiel2!
Temperaturmessung Buch S. 68/1
Steffi will ein Jahr lang jeden Tag um 15 Uhr die
Temperatur auf ihrem Balkon messen und die Ergebnisse
auswerten. Dazu definiert sie eine Klasse Tempmessung.
a) Lege ein Feld temperatur an, welches die reellen
Werte für jeden Tag eines Jahres aufnehmen kann.
Definiere eine Methode, um das Feld mit zufälligen
Temperaturwerten zu belegen.
b) Nach genau einem Jahr sollen mithilfe dreier
Methoden der Tag mit dem höchsten Temperturwert,
die niedrigste gemessene Temperatur und der
Durchschnittwert aller Messwert bestimmt werden.
Implementiere geeignete Methoden.
Erweiterung der Temperaturmessung
 Bereits im Konstruktor sollen die zufälligen
Temperaturwerte erzeugt werden.
 Bei Erzeugung des Temperaturmessungs-Objekts
soll der Zeitraum in Tagen festgelegt werden.
 Welche Methoden müssen angepasst werden?
 Führe die Änderungen durch!
Es muss nicht nur der Konstruktor
angepasst werden!
private double[] temperatur;
public Tempmessung2(int anzahl)
{
temperatur = new double[anzahl];
tempWerteErzeugen();
}
public void tempWerteErzeugen()
{
for (int i=0;i < 365; i++)
{
temperatur[i]= 50* Math.random() - 20;
}
}
Lösung: Das Attribut length
 Jedes Feld hat ein Attribut length, das die Länge des
Feldes angibt!
public void tempWerteErzeugen()
{
for (int i=0;i < temperatur.length; i++)
{
temperatur[i]= 50* Math.random() - 20;
}
}
Die Klasse Würfel
Das Attribut max gibt die größte Zahl an, die mit
diesem Würfel geworfen werden kann.
Die Methode wuerfeln() liefert ein Würfelergebnis
zurück.
Klasse Würfeltest
Es soll nun oft gewürfelt werden. Die Wurfergebnisse
werden im Feld test festgehalten und ausgegeben.
So könnte die Ausgabe aussehen:
Anforderungen:
 Bei der Erzeugung des Würfeltestobjekts soll
angegeben werden können, ob es sich um einen 4seitigen, 6-seitigen, … Würfel handelt.
 Bei der testen()-Methode soll als Parameter
übergeben werden, wie oft gewürfelt wird.
 Es soll die absolute Häufigkeit und die relative
Häufigkeit angegeben werden!
Varianten:
 Erstelle weitere Würfelklassen mit folgenden
extras:
 gezinkter Würfel
die Ergebnisse sind nicht gleich wahrscheinlich
 SummeVonZwei
Es werden zwei Würfel geworfen und die Summe der
Augenzahlen zurückgegeben.
 Teste diese Würfel ebenfalls!
Zusammenfassung:
 Schreibe (mit Stift und Papier!) auf, welche Schritte
nötig sind, um ein Feld(array) zu erzeugen.
 Beschränke dich auf ein Feld, das primitive
Datentypen wie int oder double speichert.
Zurück zum Bücherregal
 Ändere die Klasse Buecherregal:
Verwende ein Feld, um den ganzen
Buchbestand zu speichern.
public class Buecherregal
{
private
private
private
private
...
Buch
Buch
Buch
Buch
buch1;
buch2;
buch3;
buch4;
public Buecherregal()
{
buch1 = new Buch();
buch2 = new Buch();
buch3 = new Buch();
buch4 = new Buch();
...
}
...
}
Wenn man statt Zahlen Bücher
speichern möchte…
public class Beispiel1
{
private int[] zahlen;
public Beispiel1()
{
zahlen = new int[7];
}
public void zahlenEintragen()
{
zahlen[0] = 3;
zahlen[1] = 2;
zahlen[2] = 7;
zahlen[3] = 9;
zahlen[4] = 1;
zahlen[5] = 7;
zahlen[6] = 13;
}
Was muss alles
geändert werden?
Anforderungen:
 Erstelle eine Klasse Buch, in der der Titel und der
Autor eines Buches gespeichert werden kann.
 Erstelle ein Feld, in dem 100 Bücher gespeichert
werden können.
 Fülle dieses Feld mit 10 Büchern.
 Gib den Buchbestand aus.
Viele Roboter
Als Vorlage erhältst du das Karolprojekt,
bei dem zwei Roboter um die Wette laufen.
 Baue dieses Programm um!
 Es sollen bis zu 5 Karols unterstützt werden, die in
einem Feld gespeichert werden.
 Wie müssen die Methoden marsch() und wettlauf()
umgeschrieben werden?