Probeklausuren¶
Table (pdf)
- Erstellen Sie ein package
klausurvorbereitung.table. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
KeyValuemit-
den privaten Objektvariablen
keyvom Typintundvaluevom TypString.
-
Erstellen Sie für die Klasse
KeyValueeinen parametrisierten Konstruktor, dem als Parameter einint keyund einString valueübergeben werden. Initialisieren Sie mit dem Parameterwerten die Objektvariablen. -
Erstellen Sie für die beiden Objektvariablen die Getter
getKey()undgetValue(). -
Erstellen Sie für die Objektvariable value einen Setter
setValue(String value). -
Überschreiben Sie die Objektmethode
toString(), so dass einKeyValue-Objekt in der folgenden Form ausgegeben wird (Beispielwert):- es kommt also zunächst ein
|, - dann der
key(reservieren Sie dafür3Stellen), - dann wieder ein
|, - dann der
value(reservieren Sie dafür10Stellen) und - dann erneut ein
|
- es kommt also zunächst ein
-
Überschreiben Sie die Objektmethode
equals(Object o). Diese Methode gibt eintruezurück, wenn diekeys vonthisundogleich sind (undfalsesonst). -
Erstellen Sie eine
Programmklassemitmain()-Methode. Kopieren Sie in diemain()-Methode zunächst folgende Deklaration:String[] staedte = { "Berlin", "Potsdam", "Hamburg", "Magdeburg", "Bremen", "Dresden", "Leipzig", "Halle", "Dortmund", "Stuttgart", "Mainz", "Frankfurt" };- Erstellen Sie eine Schleife, so dass Sie durch das
staedte-Array laufen. - Verwenden Sie die jeweilige Stadt aus dem
staedte-Array alsvalueund den jeweiligen Index aus demstaedte-Array alskeyund erzeugen Sie damit jeweils einKeyValue-Objekt. -
Geben Sie jedes
KeyValue-Objekt mithilfe dertoString()-Methode auf die Konsole aus. Es entsteht folgende Ausgabe:
- Erstellen Sie eine Schleife, so dass Sie durch das
-
-
(Teil 2) Erstellen Sie eine Klasse
Tablemit-
der privaten Objektvariablen
entriesvom TypKeyValue[]// Tabelle mit lauter Schlüssel-Werte-Paaren
-
Erstellen Sie für die Klasse
Tableeinen parameterlosen Konstruktor. Innerhalb des Konstruktors wird dasentries-Array mit der Länge0erzeugt. -
Erstellen Sie eine Objektmethode
containsKey(int key), die eintruezurückgibt, wenn einKeyValue-Objekt mit dem Schlüsselkeyinentriesenthalten ist undfalsesonst. -
Erstellen Sie eine Objektmethode
put(int key, String value). Diese Methode fügt einKeyValue-Objekt in die Tabelleentriesein, wenn der Schlüsselkeynoch nicht inentriesexistiert. Existiertkeyjedoch bereits, wird nur der dazugehörige Wert durch den neuenvalueersetzt. Es gibt also 2 Möglichkeiten:keyexistiert noch nicht inentries. Dann wird ein neuesKeyValue-Objekt bestehend aus (key,value)entrieshinzugefügt (entrieswird um 1 größer).keyexistiert bereits. Dann wird nur der dazugehörige Wert mitvalueaktualisiert.
Im ersten Fall (1.) gibt die
put(int, String)-Methode eintruezurück, im 2. Fallfalse. -
Erstellen Sie eine Objektmethode
fill(String[] values). Diese fügt neueKeyValue-Objekteentrieshinzu. Nutzen Sie dazu dieput(int, String)-Methode. Es werden alle Einträge ausvaluesder Tableentrieshinzugefügt.Aber Achtung! Achten Sie darauf, dass auch tatsächlich neue Einträge hinzugefügt werden, d.h. die verwendeten Schlüssel sollen zuvor noch nicht existieren.
Tipp: Sie können ja versuchen, den Index des Arrays
valuesalskeyzu verwenden. Sollte dieserkeyjedoch bereits existieren, erhöhen Sie den Wert fürkeysolange, bis er noch nicht inentriesexistiert und verwenden ihn. -
Erstellen Sie eine Objektmethode
getEntry(int key), die dasKeyValue-Objekt mit dem Schlüsselkeyausentrieszurückgibt. Ist ein solches Objekt nicht inentriesvorhanden, wirdnullzurückgegeben. -
Erstellen Sie eine Objektmethode
getSize(), die die Anzahl der Einträge in entries zurückgibt. -
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte):12 Eintraege -------------------- | 0 | Berlin | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | --------------------- erst kommt die Anzahl von Einträgen in
entriesgefolgt von"Eintraege" - dann eine Linie (Länge muss nicht passen)
- dann alle
KeyValue-Objekte ausentries - dann noch eine Linie (Länge muss nicht passen)
- erst kommt die Anzahl von Einträgen in
-
Erzeugen Sie in der
main()-Methode derProgrammklasseeinTable-Objekt. Rufen Sie für dieses Objekt- die
fill()-Methode auf und übergeben dieser Methode dasstaedte-Array. -
Geben Sie das
Table-Objekt mithilfe dertoString()-Methode auf die Konsole aus.Es entsteht folgende Ausgabe:
-
Rufen sie die
fill()-Methode erneut auf und übergeben der Methode erneut dasstaedte-Array. -
Geben Sie das
Table-Objekt mithilfe dertoString()-Methode erneut auf die Konsole aus.Es entsteht folgende Ausgabe:
24 Eintraege -------------------- | 0 | Berlin | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | --------------------
- die
-
Rufen Sie in der
main()-Methode derProgrammklassefür dasTable-Objekt die Methodenput(0, "Potsdam")(mit Ausgabe des Rückgabewertes auf die Konsole) undput(24, "Potsdam")(mit Ausgabe des Rückgabewertes auf die Konsole) auf und geben Sie danach mithilfe-
der
toString()-Methode dasTable-Objekt auf die Konsole aus.Es entsteht folgende Ausgabe:
false true 25 Eintraege -------------------- | 0 | Potsdam | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | | 24 | Potsdam | --------------------
-
Testen Sie die
getEntry()-Methode mit einem existierendenkeyund geben Sie das zurückgegebeneKeyValue-Objekt auf die Konsole aus.
-
-
(Teil 3) weiter mit Klasse
Table-
Erstellen Sie in der Klasse
Tableeine ObjektmethodegetKeys(). Diese Methode gibt allekeysausentriesalsint[]zurück. -
Erstellen Sie in der Klasse
Tableeine ObjektmethodeprintKeys(). Diese Methode ruft diegetKeys()-Methode auf und gibt dasint[], das alle Schlüssel enthält, in der folgenden Form auf die Konsole aus (Beispielwerte):d.h. es werden alle Schlüssel getrennt durch
–. auf die Konsole ausgegeben -
Erstellen Sie eine Objektmethode
contains(String[] arr, String s). Diese Methode gibt eintruezurück, wennsinarrenthalten ist undfalsesonst. -
Erstellen Sie eine Objektmethode
getValues(). Diese Methode gibt allevaluesausentriesalsString[]zurück.Aber Achtung! Kein
valuedarf im zurückgegebenenString[]doppelt vorkommen.Tipp: Nutzen Sie die
contains(String[], String)-Methode. -
Erstellen Sie in der Klasse
Tableeine ObjektmethodeprintValues(). Diese Methode ruft diegetValues()-Methode auf und gibt dasString[], das alle Werte enthält, in der folgenden Form auf die Konsole aus (Beispielwerte):Potsdam - Hamburg - Magdeburg - Bremen - Dresden - Leipzig - Halle - Dortmund - Stuttgart - Mainz - Frankfurt – Berlind.h. es werden alle Werte getrennt durch „ – „ auf die Konsole ausgegeben
-
Erstellen Sie eine Objektmethode
sort(boolean asc). Diese Methode sortiert die Tabelleentriesnach Schlüsselgröße. Istascgleichtrue, wird aufsteigend sortiert. Istascgleichfalse, wird absteigend sortiert. -
Erstellen Sie eine Objektmethode
remove(int key). Diese Methode löscht dasKeyValue-Objekt ausentries, das den Schlüsselkeyhat. Wird ein solcher Eintrag gelöscht, gibt dieremove()-Methodetruezurück. Ist ein solcher Eintrag nicht vorhanden, gibt die Methodefalsezurück. -
Erstellen Sie eine Objektmethode
remove(String value). Diese Methode löscht dieKeyValue-Objekte ausentries, die den Wertvaluehaben. Wird ein solcher Eintrag bzw. solche Einträge gelöscht, gibt dieremove()-Methodetruezurück. Ist ein solcher Eintrag nicht vorhanden, gibt die Methodefalsezurück.Beachten Sie, dass es mehrere gleiche
valuesinentriesgeben kann (im Gegensatz zukey). -
Testen Sie alle Objektmethoden aus Teil 3. Es entstehen z.B. folgende Ausgaben:
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 Potsdam - Hamburg - Magdeburg - Bremen - Dresden - Leipzig - Halle - Dortmund - Stuttgart - Mainz - Frankfurt - Berlin 25 Eintraege -------------------- | 24 | Potsdam | | 23 | Frankfurt | | 22 | Mainz | | 21 | Stuttgart | | 20 | Dortmund | | 19 | Halle | | 18 | Leipzig | | 17 | Dresden | | 16 | Bremen | | 15 | Magdeburg | | 14 | Hamburg | | 13 | Potsdam | | 12 | Berlin | | 11 | Frankfurt | | 10 | Mainz | | 9 | Stuttgart | | 8 | Dortmund | | 7 | Halle | | 6 | Leipzig | | 5 | Dresden | | 4 | Bremen | | 3 | Magdeburg | | 2 | Hamburg | | 1 | Potsdam | | 0 | Potsdam | -------------------- 25 Eintraege -------------------- | 0 | Potsdam | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | | 24 | Potsdam | -------------------- remove(9) = true remove(25) = false 24 Eintraege -------------------- | 0 | Potsdam | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | | 24 | Potsdam | -------------------- remove(Potsdam) = true remove(Brandenburg) = false 20 Eintraege -------------------- | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | --------------------Zur Kontrolle. Die möglichen Ausgaben könnten sein:
---------------- Teil 1 ------------------- | 0 | Berlin | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | ---------------- Teil 2 ------------------- 12 Eintraege -------------------- | 0 | Berlin | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | -------------------- 24 Eintraege -------------------- | 0 | Berlin | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | -------------------- false true 25 Eintraege -------------------- | 0 | Potsdam | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | | 24 | Potsdam | -------------------- | 1 | Potsdam | ---------------- Teil 3 ------------------- 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 Potsdam - Hamburg - Magdeburg - Bremen - Dresden - Leipzig - Halle - Dortmund - Stuttgart - Mainz - Frankfurt - Berlin 25 Eintraege -------------------- | 24 | Potsdam | | 23 | Frankfurt | | 22 | Mainz | | 21 | Stuttgart | | 20 | Dortmund | | 19 | Halle | | 18 | Leipzig | | 17 | Dresden | | 16 | Bremen | | 15 | Magdeburg | | 14 | Hamburg | | 13 | Potsdam | | 12 | Berlin | | 11 | Frankfurt | | 10 | Mainz | | 9 | Stuttgart | | 8 | Dortmund | | 7 | Halle | | 6 | Leipzig | | 5 | Dresden | | 4 | Bremen | | 3 | Magdeburg | | 2 | Hamburg | | 1 | Potsdam | | 0 | Potsdam | -------------------- 25 Eintraege -------------------- | 0 | Potsdam | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 9 | Stuttgart | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | | 24 | Potsdam | -------------------- remove(9) = true remove(25) = false 24 Eintraege -------------------- | 0 | Potsdam | | 1 | Potsdam | | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 13 | Potsdam | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | | 24 | Potsdam | -------------------- remove(Potsdam) = true remove(Brandenburg) = false 20 Eintraege -------------------- | 2 | Hamburg | | 3 | Magdeburg | | 4 | Bremen | | 5 | Dresden | | 6 | Leipzig | | 7 | Halle | | 8 | Dortmund | | 10 | Mainz | | 11 | Frankfurt | | 12 | Berlin | | 14 | Hamburg | | 15 | Magdeburg | | 16 | Bremen | | 17 | Dresden | | 18 | Leipzig | | 19 | Halle | | 20 | Dortmund | | 21 | Stuttgart | | 22 | Mainz | | 23 | Frankfurt | --------------------
-
Eine mögliche Lösung für Table
package klausurvorbereitung.table;
public class KeyValue
{
private int key;
private String value;
KeyValue(int key, String value)
{
this.key = key;
this.value = value;
}
public int getKey()
{
return this.key;
}
public String getValue()
{
return this.value;
}
public void setValue(String newValue)
{
this.value = newValue;
}
@Override
public String toString()
{
return String.format("| %3d | %-10s |", this.key, this.value);
}
@Override
public boolean equals(Object o)
{
if(o == null) return false;
if(this == o) return true;
if(this.getClass() != o.getClass()) return false;
KeyValue k = (KeyValue)o;
return this.key == k.key;
}
}
package klausurvorbereitung.table;
public class Table
{
private KeyValue[] entries;
Table()
{
this.entries = new KeyValue[0];
}
public boolean containsKey(int key)
{
for(int i = 0; i < this.entries.length; i++)
{
if(this.entries[i].getKey() == key)
{
return true;
}
}
return false;
}
public KeyValue getEntry(int key)
{
for(int i = 0; i < this.entries.length; i++)
{
if(this.entries[i].getKey() == key)
{
return this.entries[i];
}
}
return null;
}
public boolean put(int key, String value)
{
if(this.containsKey(key))
{
KeyValue entry = this.getEntry(key);
entry.setValue(value);
return false;
}
else
{
KeyValue[] copy = new KeyValue[this.entries.length + 1];
for(int i = 0; i < this.entries.length; i++)
{
copy[i] = this.entries[i];
}
copy[copy.length - 1] = new KeyValue(key, value);
this.entries = copy;
return true;
}
}
public void fill(String[] values)
{
for(int i = 0; i < values.length; i++)
{
int key = i;
while(this.containsKey(key)) key++;
this.put(key, values[i]);
}
}
public int getSize()
{
return this.entries.length;
}
@Override
public String toString()
{
String s = String.format("%d Eintraege%n--------------------%n", this.getSize());
for (int i = 0; i < this.entries.length; i++)
{
s += this.entries[i] + "\n";
}
s += String.format("--------------------%n");
return s;
}
public int[] getKeys()
{
int[] keys = new int[this.getSize()];
for (int i = 0; i < keys.length; i++)
{
keys[i] = this.entries[i].getKey();
}
return keys;
}
public void printKeys()
{
int[] keys = this.getKeys();
for (int i = 0; i < keys.length; i++)
{
System.out.print(keys[i]);
if(i < keys.length - 1)
{
System.out.print(" - ");
}
else
{
System.out.println();
}
}
}
public boolean contains(String[] arr, String s)
{
for (int i = 0; i < arr.length; i++)
{
if(arr[i].equals(s)) return true;
}
return false;
}
public String[] getValues()
{
String[] values = new String[0];
for (int i = 0; i < this.entries.length; i++)
{
if(!this.contains(values, this.entries[i].getValue()))
{
String[] copy = new String[values.length + 1];
for(int j = 0; j < values.length; j++)
{
copy[j] = values[j];
}
copy[copy.length - 1] = this.entries[i].getValue();
values = copy;
}
}
return values;
}
public void printValues()
{
String[] values = this.getValues();
for (int i = 0; i < values.length; i++)
{
System.out.print(values[i]);
if(i < values.length - 1)
{
System.out.print(" - ");
}
else
{
System.out.println();
}
}
}
public void sort(boolean asc)
{
for(int bubble = 1; bubble < this.entries.length; bubble++)
{
for(int index = 0; index < this.entries.length - bubble; index++)
{
if((asc && this.entries[index].getKey() > this.entries[index+1].getKey()) ||
(!asc && this.entries[index].getKey() < this.entries[index+1].getKey()))
{
KeyValue tmp = this.entries[index];
this.entries[index] = this.entries[index+1];
this.entries[index+1] = tmp;
}
}
}
}
public boolean remove(int key)
{
if(this.containsKey(key))
{
KeyValue[] copy = new KeyValue[this.entries.length - 1];
int copyIndex = 0;
for (int i = 0; i < this.entries.length; i++)
{
if(this.entries[i].getKey() != key)
{
copy[copyIndex] = this.entries[i];
copyIndex++;
}
}
this.entries = copy;
return true;
}
else return false;
}
public boolean remove(String value)
{
int counter = 0;
for (int i = 0; i < this.entries.length; i++)
{
if(this.entries[i].getValue().equals(value))
{
counter++;
}
}
if(counter == 0) return false;
else
{
KeyValue[] copy = new KeyValue[this.entries.length - counter];
int copyIndex = 0;
for (int i = 0; i < this.entries.length; i++)
{
if(!this.entries[i].getValue().equals(value))
{
copy[copyIndex] = this.entries[i];
copyIndex++;
}
}
this.entries = copy;
return true;
}
}
}
package klausurvorbereitung.table;
public class Programmklasse
{
public static void main(String[] args)
{
String[] staedte = { "Berlin", "Potsdam", "Hamburg", "Magdeburg", "Bremen", "Dresden", "Leipzig", "Halle", "Dortmund", "Stuttgart", "Mainz", "Frankfurt" };
System.out.printf("%n%n---------------- Teil 1 -------------------%n%n");
for(int i = 0; i < staedte.length; i++)
{
KeyValue kv = new KeyValue(i, staedte[i]);
System.out.println(kv.toString());
}
System.out.printf("%n%n---------------- Teil 2 -------------------%n%n");
Table t = new Table();
t.fill(staedte);
System.out.println(t.toString());
t.fill(staedte);
System.out.println(t.toString());
System.out.println(t.put(0, "Potsdam"));
System.out.println(t.put(24, "Potsdam"));
System.out.println(t.toString());
KeyValue kv1 = t.getEntry(1);
System.out.println(kv1.toString());
System.out.printf("%n%n---------------- Teil 3 -------------------%n%n");
t.printKeys();
t.printValues();
System.out.println();
t.sort(false);
System.out.println(t.toString());
t.sort(true);
System.out.println(t.toString());
System.out.println("remove(9) = " + t.remove(9));
System.out.println("remove(25) = " + t.remove(25));
System.out.println();
System.out.println(t.toString());
System.out.println("remove(Potsdam) = " + t.remove("Potsdam"));
System.out.println("remove(Brandenburg) = " + t.remove("Brandenburg"));
System.out.println();
System.out.println(t.toString());
}
}
Studentin (pdf)
- Erstellen Sie ein package
klausurvorbereitung.studentin. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
Namemit-
der privaten Objektvariablen
namevom Typchar[].
-
Erstellen Sie für die Klasse
Nameeinen parametrisierten Konstruktor, dem als Parameter einString nameübergeben wird. Verwenden Sie die Objektmethodenlength()undcharAt()aus der KlasseStringwie folgt:- das
char[]-Arraynamebekommt dieselbe Länge wie derString name, - das
char[] namewird sukzessive mit allencharaus demString namebefüllt
Beispiel:

- das
-
Überschreiben Sie die Objektmethode
toString(). Diese Methode gibt allecharaus dem Arraynamezusammengesetzt alsStringzurück. (Also für obiges Beispiel denString "Hallo!") -
Überschreiben Sie die Objektmethode
equals(Object o). Diese Methode gibt eintruezurück, wenn alle Zeichen innamebeim aufrufenden und beim als Parameter übergebenen Objekt paarweise gleich sind (undfalsesonst).Beispiele:

-
Erstellen Sie eine Objektmethode
isBigger(Name n), die eintruezurückgibt, wenn das aufrufende Objekt lexikografisch „größer“ ist, als das als Parameter übergebene, d.h. die Buchstaben werden beginnend von links paarweise miteinander verglichen (fürcharkönnen>,<und==verwendet werden). Bei Gleichheit bis zum letzten Zeichen des kleineren Arrays, ist das längere Array größer als das kürzere.Beispiele:

-
Erstellen Sie eine
Programmklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode dreiName-Objekten1,n2undn3mit den Parameterwerten"FIW","AI"und"IMI". Erzeugen Sie mithilfe dertoString()-Methode vonNamefolgende Konsolenausgaben: -
Wenden Sie die
isBigger(Name)- Methode jeweils für (n1,n2) und (n1, n3) (zuerst immer das aufrufende Objekt) an und erzeugen Sie folgende Konsolenausgaben:
-
-
(Teil 2) Erstellen Sie eine Klasse
Studentinmit-
den privaten Objektvariablen
matrNrvom TypString, //Matrikel-Nummerjahrvom Typint, // Jahr der Immatrikulationnotevom Typdouble, // aktueller Notendurchschnittlpvom Typint, // aktuelle Leistungspunktesgvom TypName, // Name des Studiengangs
-
Erstellen Sie für die Klasse
Studentineinen parametrisierten Konstruktor mit dem ParameterString sg. Der Parameter wird verwendet, um für die Objektvariablesgein Name-Objekt zu erzeugen.Die anderen Objektvariablen erhalten zufällige Werte, die mithilfe der Klasse
Randomerzeugt werden:- Für den Wert von
matrNrwird zunächst eine Zufallszahl aus dem Bereich[0 … 9999](alles inklusive – potenziell10000verschiedene Zahlen) erzeugt. - Der Wert von
matrNrergibt sich aus demString "s095"gefolgt von der erzeugten Zufallszahl. - Achtung! Der
matrNr-String muss die Länge8haben. War die Zufallszahl nicht groß genug, hängen Sie entsprechend viele"0"an! - Der Wert von
jahrergibt sich aus einer Zufallszahl aus dem Bereich[2009 … 2024](alles inklusive – potenziell16verschiedene Zahlen). - Der Wert von
lpist abhängig vom Wert vonjahr. Ist das Jahr der Immatrikulation (jahr) vor 2019, bekommtlpden Wert180. - Ab dem Wert 2019 für
jahrwird der Wert fürlpzufällig aus dem Bereich[0, 5, 10, 15, … 170, 175](alles inklusive – potenziell36verschiedene Zahlen) ermittelt. - Der Wert von
noteergibt sich aus dem Bereich[1.0, 1.1, 1.2 … 3.8, 3.9](alles inklusive – potenziell30verschiedene Zahlen).
- Für den Wert von
-
Erstellen Sie für die Objektvariablen
matrNr,note,lpundsgjeweils einen getter (getMatrNr(),getNote(),getLp()undgetSg()). -
Erstellen Sie eine Objektmethode
getSemester(). Diese Methode gibt das aktuelle Semester (derzeit stets ungerade) in Abhängigkeit vonjahrzurück, d.h.jahr Aktuelles Semester 2024 1 2023 3 2022 5 2021 7 2020 9 2019 11 2018 13 ... ... -
Überschreiben Sie die Methode
toString()so, dass ein formatierterStringin der folgenden Form zurückgegeben wird (Beispielwerte):- die Matrikelnummer hat eh immer
8Stellen, - für das Semester reservieren Sie
2Stellen, - das Jahr hat immer
4Stellen, - für den Studiengang reservieren Sie
3Stellen, - für die Leistungspunkte reservieren Sie
3Stellen, - für die Note geben Sie
2Nachkommastellen an.
Hat die Studentin jedoch bereits
180Leistungspunkte, geben Sie stattdessen folgenden String zurück (Beispielwerte): - die Matrikelnummer hat eh immer
-
Erzeugen Sie in der
main()-Methode derProgrammklasseeinStudentin[] studis-Array der Länge40.Befüllen Sie das Array in einer Schleife und zwar wie folgt. Erzeugen Sie Zufallszahlen aus dem Bereich
[0 … 4](alles inklusive - potenziell5verschiedene Zahlen). Für- die Zufallszahl
0übergeben Sie demStudentin-Konstruktor den String"FIW", - die Zufallszahlen
1und2übergeben Sie demStudentin-Konstruktor den String"AI", - die Zufallszahlen
3und4übergeben Sie demStudentin-Konstruktor den String"IMI".
Geben Sie alle erzeugten
Studentin-Objekte auf die Konsole aus. Es entsteht (Beispielwerte und gekürzt!):----------------- Studentin ---------------------- s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 … - die Zufallszahl
-
-
(Teil 3) Erstellen Sie eine Klasse
SG(Studiengang) mit-
den privaten Objektvariablen
studisvom TypStudentin[], // alle Studentinnen im Studiengangsgvom TypName// Name des Studiengangs
-
Erstellen Sie in der Klasse
SGeinen parametrisierten Konstruktor mit den ParameternStudentin[] studisundString sg
Der Parameter
sgwird verwendet, um für die ObjektvariablesgeinName-Objekt zu erzeugen.Das
studis-Array des Parameters enthältStudentin-Objekte aus verschiedenen Studiengängen. Ermitteln Sie, wie vieleStudentin-Objekte es für den Studiengangsgenthält und erzeugen Sie dasstudis-Array der Objektvariablen entsprechend.Befüllen Sie das
studis-Array der Objektvariablen mit allenStudentin-Objekten aus demstudis-Array des Parameters, die zum Studiengangsggehören. -
Erstellen Sie eine Objektmethode
anzahlStudis(), die die Anzahl der imstudis-Array gespeicherten Objekte zurückgibt. -
Erstellen Sie eine Objektmethode
sort(boolean note), die dasstudis-Array sortiert.- Ist der Parameterwert
true, wird das Array nach dem Notendurchschnitt sortiert (beste Note zuerst). - Ist der Parameterwert
false, wird das Array nach der Anzahl der Semester sortiert (wenigsten Semester zuerst).
- Ist der Parameterwert
-
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte):FIW mit 12 Studis : s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80- zuerst den Namen des Studiengangs, dann die Anzahl der Studierenden
- dann alle
Studentin-Objekte ausstudis
-
Erzeugen Sie in der
main()-Methode derProgrammklassedreiSG-Objekte. Übergeben Sie dem Konstruktor jeweils dasstudis-Array aus Teil 2 sowie einmal"FIW", einmal"AI"und einmal"IMI"als Name für den Studiengang.- Geben Sie die Studiengänge auf die Konsole aus.
- Rufen Sie für einen der Studiengänge die
sort()-Methode mit dem Parameterwerttrueauf und geben Sie danach den Studiengang auf die Konsole aus. - Rufen Sie für einen der Studiengänge die
sort()-Methode mit dem Parameterwertfalseauf und geben Sie danach den Studiengang auf die Konsole aus.
Es entstehen folgende Ausgaben (Beispielwerte und gekürzt):
------------ Studiengaenge --------------- FIW mit 12 Studis : s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 FIW mit 12 Studis : s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 FIW mit 12 Studis : s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 AI mit 15 Studis : s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 … -
Erstellen Sie eine Objektmethode
besterAbschluss(), die dieStudentinzurückgibt, die den besten Notendurchschnitt von allen Absolventinnen (mit180Leistungspunkten) des Studiengangs hat. -
Erstellen Sie eine Objektmethode
durchschnittlicheAbschlussnote(), die den durchschnittlichen Notenwert (alsdouble) aller Absolventinnen (mit180Leistungspunkten) des Studiengangs zurückgibt. -
Erstellen Sie eine Objektmethode
nochStudierend(), die einStudentin[]zurückgibt, das alle Studentinnen aus dem Studiengang enthält, die noch keine180Leistungspunkte haben. -
Testen Sie alle drei letztgenannten Objektmethoden für eines der obigen
SG-Objekte und geben Sie jeweils die Rückgabe auf die Konsole aus, z.B. (Beispielwerte):------------ Studiengaenge (FIW) --------------- s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 durchschnittliche Abschlussnote : 2,6500 Folgende Studentinnen studieren noch in FIW : s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30
-
-
(Teil 4) Erstellen Sie eine Klasse
HTWmit-
der privaten Objektvariablen
htwvom TypSG[]// Studiengänge der HTW
-
Erstellen Sie eine Objektmethode
contains(Name[] arr, Name s). Diese Methode gibt eintruezurück, wennsinarrenthalten ist undfalsesonst. -
Erstellen Sie eine Objektmethode
speichereSGs(Name[] arr, Name sg). Diese Methode gibt einName[]zurück.- Wenn
sgbereits inarrenthalten ist, wirdarrzurückgegeben. - Wenn
sgnicht inarrenthalten ist, wird ein Array erzeugt, das um1länger ist alsarr. Dieses neue Array enthält alle Werte ausarrund auchsg. Dieses neue Array wird dann zurückgegeben.
- Wenn
-
Erstellen Sie eine Objektmethode
createSGArray(Studentin[] studis). Diese Methode gibt einName[]zurück.Innerhalb dieser Methode wird ein
Name[]erzeugt und zurückgegeben. DasName[]enthält alle Studiengänge (jeweils genau einmal), in denen Studentinnen aus demstudis-Array, das als Parameter übergeben wird, studieren.Tipp: Durchlaufen Sie das
studis-Array und rufen Sie passend diespeichereSGs()-Methode auf.Sollten Sie die Methode nicht implementieren können, geben Sie
return new Name[]{new Name("FIW"), new Name("AI"), new Name("IMI")};zurück. -
Erstellen Sie eine Objektmethode
anzahlSGs(Studentin[] studis). Diese Methode gibt die Anzahl der verschiedenen Studiengänge zurück, in denen Studentinnen aus demstudis-Array studieren.Tipp: verwenden Sie die Methode
createSGArray(Studentin[] studis).Sollten Sie die Methode nicht implementieren können, geben Sie
return 3;zurück. -
Erzeugen Sie für die Klasse
HTWeinen parametrisierten Konstruktor, dem als ParameterStudentin[] studisübergeben wird. Dashtw-Array wird mit der Anzahl der Studiengänge instudiserzeugt (sieheanzahlSGs()).Erzeugen Sie mithilfe der Methode
createSGArray()einString[], das alle Studiengänge ausstudisals Strings enthält. Befüllen Sie unter Verwendung diesesString[]dashtw-Array (das dieselbe Länge hat) mitSG-Objekten. -
Erstellen Sie eine Objektmethode
anzahlStudis(). Diese Methode gibt die Gesamtanzahl aller Studentinnen aus demhtw-Array zurück (die Gesamtanzahl aller Studentinnen aus allen Studiengängen aus demhtw-Array). -
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte):------------------- HTW ------------------ HTW mit 40 Studierenden in 3 Studiengaengen : AI mit 15 Studis : s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0597878 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0597418 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0598491 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 3,60 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 FIW mit 12 Studis : s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 IMI mit 13 Studis : s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0592869 Absolventin (2012) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0597983 Absolventin (2011) aus IMI mit 180 LPs. Notendurchschnitt: 2,30 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0593825 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80- zuerst die Gesamtanzahl aller Studierenden, dann die Anzahl der Studiengänge
- dann alle
SG-Objekte aushtw
-
Erstellen Sie eine Objektmethode
nochStudierend(). Diese Methode gibt einStudentin[]zurück. Dieses Array enthält alle Studentinnen aus demhtw-Array, die noch studieren (siehenochStudierend()inSG). -
Erzeugen Sie in der
main()-Methode derProgrammklasseeinHTW-Objekt, dem Sie dasstudis-Array aus Teil 2 übergeben. Geben Sie dieses Objekt auf der Konsole aus. Wenden Sie dafür dienochStudierend()-Methode an und geben Sie das zurückgegebene Array aus (Beispielwerte):------------------- HTW ------------------ HTW mit 40 Studierenden in 3 Studiengaengen : AI mit 15 Studis : s0594962 3. Semester (2023) aus AI mit 135 LPs. Notendurchschnitt: 3,60 s0597340 5. Semester (2022) aus AI mit 70 LPs. Notendurchschnitt: 1,30 s0596084 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 3,00 s0599446 7. Semester (2021) aus AI mit 70 LPs. Notendurchschnitt: 2,90 s0594979 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 1,60 s0594072 Absolventin (2013) aus AI mit 180 LPs. Notendurchschnitt: 1,60 s0594835 Absolventin (2015) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0598456 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0594426 Absolventin (2009) aus AI mit 180 LPs. Notendurchschnitt: 2,50 s0598951 11. Semester (2019) aus AI mit 150 LPs. Notendurchschnitt: 1,80 s0598150 Absolventin (2015) aus AI mit 180 LPs. Notendurchschnitt: 2,30 s0592765 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 2,90 s0595290 Absolventin (2018) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0598327 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 2,80 s0597348 Absolventin (2017) aus AI mit 180 LPs. Notendurchschnitt: 2,90 IMI mit 19 Studis : s0593809 Absolventin (2015) aus IMI mit 180 LPs. Notendurchschnitt: 2,50 s0593014 Absolventin (2014) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0599194 Absolventin (2015) aus IMI mit 180 LPs. Notendurchschnitt: 3,50 s0596549 Absolventin (2018) aus IMI mit 180 LPs. Notendurchschnitt: 3,40 s0595089 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 s0593502 11. Semester (2019) aus IMI mit 145 LPs. Notendurchschnitt: 2,10 s0594294 Absolventin (2013) aus IMI mit 180 LPs. Notendurchschnitt: 3,10 s0595131 1. Semester (2024) aus IMI mit 30 LPs. Notendurchschnitt: 1,20 s0592045 Absolventin (2009) aus IMI mit 180 LPs. Notendurchschnitt: 3,90 s0591602 Absolventin (2013) aus IMI mit 180 LPs. Notendurchschnitt: 2,20 s0593840 Absolventin (2013) aus IMI mit 180 LPs. Notendurchschnitt: 1,60 s0591077 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 3,90 s0591899 7. Semester (2021) aus IMI mit 110 LPs. Notendurchschnitt: 2,40 s0598919 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,60 s0592720 Absolventin (2018) aus IMI mit 180 LPs. Notendurchschnitt: 3,20 s0591531 Absolventin (2013) aus IMI mit 180 LPs. Notendurchschnitt: 3,00 s0597511 Absolventin (2013) aus IMI mit 180 LPs. Notendurchschnitt: 3,40 s0595499 Absolventin (2009) aus IMI mit 180 LPs. Notendurchschnitt: 3,80 s0599211 7. Semester (2021) aus IMI mit 80 LPs. Notendurchschnitt: 1,90 FIW mit 6 Studis : s0596205 Absolventin (2011) aus FIW mit 180 LPs. Notendurchschnitt: 3,30 s0591590 7. Semester (2021) aus FIW mit 80 LPs. Notendurchschnitt: 3,70 s0591311 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,00 s0592854 1. Semester (2024) aus FIW mit 100 LPs. Notendurchschnitt: 3,50 s0592369 11. Semester (2019) aus FIW mit 65 LPs. Notendurchschnitt: 3,90 s0595018 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,20 aktuell studieren 21 Studierende an der HTW : s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80Zur Kontrolle. Die möglichen Ausgaben (Zufallswerte) könnten sein:
------------ Name --------------- FIW AI IMI FIW > AI ? true FIW > IMI ? false ------------ Studentin --------------- s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0597878 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0597418 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0592869 Absolventin (2012) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0598491 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 3,60 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0597983 Absolventin (2011) aus IMI mit 180 LPs. Notendurchschnitt: 2,30 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0593825 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80 ------------ Studiengaenge --------------- FIW mit 12 Studis : s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 FIW mit 12 Studis : s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 FIW mit 12 Studis : s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 AI mit 15 Studis : s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0597878 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0597418 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0598491 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 3,60 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 AI mit 15 Studis : s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0597878 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0598491 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 3,60 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0597418 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 AI mit 15 Studis : s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 s0597878 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0597418 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0598491 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 3,60 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 IMI mit 13 Studis : s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0592869 Absolventin (2012) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0597983 Absolventin (2011) aus IMI mit 180 LPs. Notendurchschnitt: 2,30 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0593825 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80 IMI mit 13 Studis : s0592869 Absolventin (2012) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0597983 Absolventin (2011) aus IMI mit 180 LPs. Notendurchschnitt: 2,30 s0593825 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80 IMI mit 13 Studis : s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80 s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0592869 Absolventin (2012) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0597983 Absolventin (2011) aus IMI mit 180 LPs. Notendurchschnitt: 2,30 s0593825 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 ------------ Studiengaenge (FIW) --------------- s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 durchschnittliche Abschlussnote : 2,6500 Folgende Studentinnen studieren noch in FIW : s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 ------------------- HTW ------------------ HTW mit 40 Studierenden in 3 Studiengaengen : AI mit 15 Studis : s0597165 Absolventin (2014) aus AI mit 180 LPs. Notendurchschnitt: 1,10 s0591180 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 1,80 s0596754 Absolventin (2011) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0597878 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 1,20 s0597418 Absolventin (2016) aus AI mit 180 LPs. Notendurchschnitt: 3,70 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0598491 Absolventin (2012) aus AI mit 180 LPs. Notendurchschnitt: 3,60 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 FIW mit 12 Studis : s0599148 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0599118 Absolventin (2014) aus FIW mit 180 LPs. Notendurchschnitt: 2,70 s0591420 Absolventin (2009) aus FIW mit 180 LPs. Notendurchschnitt: 3,80 s0595330 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,70 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0597033 Absolventin (2012) aus FIW mit 180 LPs. Notendurchschnitt: 3,70 s0595398 Absolventin (2018) aus FIW mit 180 LPs. Notendurchschnitt: 1,10 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0596894 Absolventin (2015) aus FIW mit 180 LPs. Notendurchschnitt: 1,60 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596897 Absolventin (2016) aus FIW mit 180 LPs. Notendurchschnitt: 2,80 IMI mit 13 Studis : s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0596420 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,80 s0595218 Absolventin (2017) aus IMI mit 180 LPs. Notendurchschnitt: 1,70 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0592869 Absolventin (2012) aus IMI mit 180 LPs. Notendurchschnitt: 1,00 s0597983 Absolventin (2011) aus IMI mit 180 LPs. Notendurchschnitt: 2,30 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0593825 Absolventin (2010) aus IMI mit 180 LPs. Notendurchschnitt: 2,40 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80 aktuell studieren 21 Studierende an der HTW : s0595093 9. Semester (2020) aus AI mit 165 LPs. Notendurchschnitt: 3,80 s0591031 1. Semester (2024) aus AI mit 135 LPs. Notendurchschnitt: 2,80 s0596744 3. Semester (2023) aus AI mit 25 LPs. Notendurchschnitt: 1,60 s0596300 11. Semester (2019) aus AI mit 60 LPs. Notendurchschnitt: 1,70 s0595309 5. Semester (2022) aus AI mit 60 LPs. Notendurchschnitt: 2,30 s0591420 1. Semester (2024) aus AI mit 160 LPs. Notendurchschnitt: 2,90 s0593950 5. Semester (2022) aus AI mit 10 LPs. Notendurchschnitt: 2,00 s0598635 9. Semester (2020) aus AI mit 135 LPs. Notendurchschnitt: 3,30 s0594270 11. Semester (2019) aus AI mit 120 LPs. Notendurchschnitt: 3,20 s0594066 3. Semester (2023) aus FIW mit 175 LPs. Notendurchschnitt: 3,50 s0599339 9. Semester (2020) aus FIW mit 10 LPs. Notendurchschnitt: 1,30 s0598543 5. Semester (2022) aus FIW mit 45 LPs. Notendurchschnitt: 1,10 s0599833 5. Semester (2022) aus FIW mit 95 LPs. Notendurchschnitt: 1,50 s0596981 9. Semester (2020) aus IMI mit 65 LPs. Notendurchschnitt: 2,70 s0595128 7. Semester (2021) aus IMI mit 85 LPs. Notendurchschnitt: 3,10 s0598670 1. Semester (2024) aus IMI mit 100 LPs. Notendurchschnitt: 3,60 s0593073 3. Semester (2023) aus IMI mit 0 LPs. Notendurchschnitt: 1,10 s0593906 3. Semester (2023) aus IMI mit 55 LPs. Notendurchschnitt: 1,90 s0592491 3. Semester (2023) aus IMI mit 80 LPs. Notendurchschnitt: 3,00 s0593605 11. Semester (2019) aus IMI mit 135 LPs. Notendurchschnitt: 1,90 s0595682 7. Semester (2021) aus IMI mit 120 LPs. Notendurchschnitt: 3,80
-
Eine mögliche Lösung für Studentin
package klausurvorbereitung.studentin;
public class Name
{
char[] name;
public Name(String name)
{
this.name = new char[name.length()];
for (int index = 0; index < this.name.length; index++)
{
this.name[index] = name.charAt(index);
}
}
@Override
public String toString()
{
String s = "";
for (int index = 0; index < this.name.length; index++)
{
s += this.name[index];
}
return s;
}
@Override
public boolean equals(Object o)
{
if(o == null) return false;
if(this==o) return true;
if(this.getClass() != o.getClass()) return false;
Name other = (Name)o;
if(other.name.length != this.name.length)
{
return false;
}
for (int index = 0; index < this.name.length; index++)
{
if(other.name[index] != this.name[index])
{
return false;
}
}
return true;
}
public boolean isBigger(Name other)
{
int length = this.name.length < other.name.length
? this.name.length
: other.name.length;
for(int index = 0; index < length; index++)
{
if(this.name[index] > other.name[index])
{
return true;
}
if(this.name[index] < other.name[index])
{
return false;
}
}
if(this.name.length > other.name.length)
{
return true;
}
return false;
}
}
package klausurvorbereitung.studentin;
import java.util.Random;
public class Studentin {
private String matrNr;
private int jahr;
private double note;
private int lp;
private Name sg;
public Studentin(String sg)
{
Random r = new Random();
int mat = r.nextInt(10000);
this.matrNr = "s059"+mat;
while(this.matrNr.length() < 8)
{
this.matrNr += "0";
}
this.jahr = r.nextInt(16) + 2009;
if(this.jahr<2019) this.lp = 180;
else this.lp = r.nextInt(36) * 5;
this.note = (r.nextInt(30) + 10) / 10.0;
this.sg = new Name(sg);
}
public String getMatrNr() {
return matrNr;
}
public double getNote() {
return note;
}
public int getLp() {
return lp;
}
public Name getSg() {
return sg;
}
public int getSemester()
{
return (2025 - this.jahr) * 2 - 1;
}
@Override
public String toString()
{
if(this.lp == 180)
{
return String.format("%s %-12s (%d) aus %3s mit %3d LPs. Notendurchschnitt: %.2f",
this.matrNr, "Absolventin", this.jahr, this.sg.toString(), this.lp, this.note);
}
else
{
return String.format("%s %2d. Semester (%d) aus %3s mit %3d LPs. Notendurchschnitt: %.2f",
this.matrNr, this.getSemester(), this.jahr, this.sg.toString(), this.lp, this.note);
}
}
}
package klausurvorbereitung.studentin;
public class SG
{
Studentin[] studis;
Name sg;
public SG(Studentin[] studis, String sg)
{
this.sg = new Name(sg);
int counter = 0;
for(int index = 0; index < studis.length; index++)
{
if(studis[index].getSg().equals(this.sg))
{
counter++;
}
}
this.studis = new Studentin[counter];
int indexAI = 0;
for(int index = 0; index < studis.length; index++)
{
if(studis[index].getSg().equals(this.sg))
{
this.studis[indexAI] = studis[index];
indexAI++;
}
}
}
public int anzahlStudis()
{
return this.studis.length;
}
public void sort(boolean note)
{
for(int bubble = 1; bubble < this.studis.length; bubble++)
{
for(int index = 0; index < this.studis.length - bubble; index++)
{
if((note && this.studis[index].getNote() > this.studis[index+1].getNote())
|| (!note && this.studis[index].getSemester() > this.studis[index+1].getSemester()))
{
Studentin tmp = this.studis[index];
this.studis[index] = this.studis[index+1];
this.studis[index+1] = tmp;
}
}
}
}
@Override
public String toString()
{
String s = String.format("%s mit %d Studis : %n", this.sg, this.studis.length);
for(int index = 0; index < this.studis.length; index++)
{
s += String.format(" %s %n", this.studis[index].toString());
}
s += "\n";
return s;
}
public Studentin besterAbschluss()
{
Studentin beste = null;
for (int index = 0; index < this.studis.length; index++)
{
if(this.studis[index].getLp()==180 &&
(beste != null && this.studis[index].getNote() < beste.getNote() || beste == null))
{
beste = this.studis[index];
}
}
return beste;
}
public double durchschnittlicheAbschlussnote()
{
double note = 0.0;
int counter = 0;
for (int index = 0; index < this.studis.length; index++)
{
if(this.studis[index].getLp()==180)
{
note += this.studis[index].getNote();
counter++;
}
}
return note/counter;
}
public Studentin[] nochStudierend()
{
int counter = 0;
for (int index = 0; index < this.studis.length; index++)
{
if(this.studis[index].getLp() < 180)
{
counter++;
}
}
Studentin[] noch = new Studentin[counter];
int indexNoch = 0;
for (int index = 0; index < this.studis.length; index++)
{
if(this.studis[index].getLp() < 180)
{
noch[indexNoch] = this.studis[index];
indexNoch++;
}
}
return noch;
}
}
package klausurvorbereitung.studentin;
public class HTW
{
SG[] htw;
public HTW(Studentin[] studis)
{
int length = anzahlSGs(studis);
this.htw = new SG[length];
Name[] sGs = createSGArray(studis);
for (int index = 0; index < this.htw.length; index++)
{
this.htw[index] = new SG(studis, sGs[index].toString());
}
}
private boolean contains(Name[] arr, Name s)
{
for (int index = 0; index < arr.length; index++)
{
if(arr[index].equals(s))
{
return true;
}
}
return false;
}
private Name[] speichereSGs(Name[] arr, Name sg)
{
if(this.contains(arr, sg)) return arr;
else
{
Name[] copy = new Name[arr.length + 1];
for (int index = 0; index < arr.length; index++)
{
copy[index] = arr[index];
}
copy[copy.length - 1] = sg;
return copy;
}
}
private Name[] createSGArray(Studentin[] studis)
{
Name[] sGs= new Name[0];
for (int index = 0; index < studis.length; index++)
{
sGs = speichereSGs(sGs, studis[index].getSg());
}
return sGs;
// return new Name[]{new Name("FIW"), new Name("AI"), new Name("IMI")};
}
private int anzahlSGs(Studentin[] studis)
{
Name[] sGs = createSGArray(studis);
return sGs.length;
}
public int anzahlStudis()
{
int anzahlStudis = 0;
for (int index = 0; index < this.htw.length; index++)
{
anzahlStudis += this.htw[index].anzahlStudis();
}
return anzahlStudis;
}
public String toString()
{
String s = String.format("HTW mit %d Studierenden in %d Studiengaengen : %n%n",
this.anzahlStudis(), this.htw.length);
for (int index = 0; index < this.htw.length; index++)
{
s += this.htw[index].toString();
}
s += "\n";
return s;
}
public Studentin[] nochStudierend()
{
int counter = 0;
for(int index = 0; index < this.htw.length; index++)
{
counter += this.htw[index].nochStudierend().length;
}
Studentin[] alleNoch = new Studentin[counter];
int indexAlleNoch = 0;
for(int indexHTW = 0; indexHTW < this.htw.length; indexHTW++)
{
Studentin[] sgNoch = this.htw[indexHTW].nochStudierend();
for(int indexSgNoch = 0; indexSgNoch < sgNoch.length; indexSgNoch++)
{
alleNoch[indexAlleNoch] = sgNoch[indexSgNoch];
indexAlleNoch++;
}
}
return alleNoch;
}
}
package klausurvorbereitung.studentin;
import java.util.Random;
public class Programmklasse
{
public static void main(String[] args)
{
System.out.printf("%n------------ Name ---------------%n%n");
Name n1 = new Name("FIW");
Name n2 = new Name("AI");
Name n3 = new Name("IMI");
System.out.println(n1);
System.out.println(n2);
System.out.println(n3);
System.out.println("FIW > AI ? " + n1.isBigger(n2));
System.out.println("FIW > IMI ? " + n1.isBigger(n3));
System.out.printf("%n------------ Studentin ---------------%n%n");
Studentin[] studis = new Studentin[40];
for (int index = 0; index < studis.length; index++)
{
Random r = new Random();
int auswahl = r.nextInt(5);
if(auswahl==0)
{
studis[index] = new Studentin("FIW");
}
else if(auswahl == 1 || auswahl == 2)
{
studis[index] = new Studentin("AI");
}
else
{
studis[index] = new Studentin("IMI");
}
System.out.println(studis[index].toString());
}
System.out.printf("%n------------ Studiengaenge ---------------%n%n");
SG fiw = new SG(studis, "FIW");
System.out.println(fiw.toString());
fiw.sort(true);
System.out.println(fiw.toString());
fiw.sort(false);
System.out.println(fiw.toString());
SG ai = new SG(studis, "AI");
System.out.println(ai.toString());
ai.sort(true);
System.out.println(ai.toString());
ai.sort(false);
System.out.println(ai.toString());
SG imi = new SG(studis, "IMI");
System.out.println(imi.toString());
imi.sort(true);
System.out.println(imi.toString());
imi.sort(false);
System.out.println(imi.toString());
System.out.printf("%n------------ Studiengaenge (FIW) ---------------%n%n");
Studentin fiwBesterAbschluss = fiw.besterAbschluss();
System.out.println(fiwBesterAbschluss.toString());
System.out.printf("durchschnittliche Abschlussnote : %.4f", fiw.durchschnittlicheAbschlussnote());
Studentin[] nochStudierend = fiw.nochStudierend();
System.out.printf("%n%n");
System.out.println("Folgende Studentinnen studieren noch in FIW : ");
for(int index = 0; index < nochStudierend.length; index++)
{
System.out.println(" " + nochStudierend[index].toString());
}
System.out.printf("%n------------------- HTW ------------------%n%n");
HTW htw = new HTW(studis);
System.out.println(htw.toString());
Studentin[] nochHTW = htw.nochStudierend();
System.out.println("aktuell studieren " + nochHTW.length + " Studierende an der HTW : ");
for (int index = 0; index < nochHTW.length; index++)
{
System.out.println(nochHTW[index].toString());
}
}
}
Bit und Byte (pdf)
- Erstellen Sie ein package
klausurvorbereitung.bit. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
Bitmit-
der privaten Objektvariablen
valuevom Typboolean.
-
Erstellen Sie in der
Bit-Klasse einen parametrisierten Konstruktor, dem ein Wert fürvalueübergeben wird. Initialisieren Sie damit die Objektvariable. -
Erstellen Sie eine Objektmethode
bitToInt(). Diese Methode gibt eine1zurück, wenn die Objektvariablevalueden Werttruehat und eine0, wenn der Wert der Objektvariablefalseist. -
Erstellen Sie eine Objektmethode
and(Bit b), die einBit-Objekt zurückgibt. Der Wert der Objektvariablenvaluedes zurückzugebenden Objektes ergibt sich aus der&&-Verknüpfung (Java-UND-Operator) der beidenvalue-Werte des aufrufenden Objektes undb.
-
Erstellen Sie eine Objektmethode
or(Bit b), die einBit-Objekt zurückgibt. Der Wert der Objektvariablenvaluedes zurückzugebenden Objektes ergibt sich aus der||-Verknüpfung (Java-OR-Operator) der beidenvalue-Werte des aufrufenden Objektes undb.
-
Erstellen Sie eine Objektmethode
isBigger(Bit b), die genau dann eintruezurückgibt, wennvaluedes aufrufenden Objektestrueund der Wert vonbfalseist. Ansonsten wirdfalsezurückgegeben. -
Erstellen Sie eine Objektmethode
isEqual(Bit b), die genau dann eintruezurückgibt, wennvaluedes aufrufenden Objektes gleich dem Wert vonbist (also entwedertrueundtrueoderfalseundfalse). Ansonsten wirdfalsezurückgegeben. -
Überschreiben Sie die Methode
toString()so, dass eine"1"zurückgegeben wird, wennvalueden Werttruehat und eine"0", wennfalse. -
Erstellen Sie eine
Programmklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode vierBit-Objekteb1,b2,b3undb4mit den Wertentrue(b1),true(b2),false(b3),false(b4). Erzeugen Sie mithilfe dertoString()-Methode vonBitfolgende Konsolenausgaben: -
Wenden Sie die
and(Bit)- undor(Bit)-Methode jeweils für (b1,b2), (b1, b3) und (b3, b4) (zuerst immer das aufrufende Objekt) an und erzeugen Sie mithilfe dertoString()-Methode vonBitfolgende Konsolenausgaben: -
Wenden Sie die
isBigger(Bit)- undisEqual(Bit)-Methode jeweils für (b1,b2), (b1, b3) und (b3, b4) (>steht fürisBigger()und==steht fürisEqual()) an und erzeugen Sie mithilfe dertoString()-Methode vonBitfolgende Konsolenausgaben:
-
-
(Teil 2) Erstellen Sie eine Klasse
Bytemit-
der privaten Objektvariablen
bitsvom TypBit[].
-
Erstellen Sie für die Klasse
Byteeinen parameterlosen Konstruktor. Innerhalb des Konstruktors wird dasbits-Array der Länge8erzeugt. -
Erstellen Sie eine Objektmethode
createByte(). Diese Methode gibt nichts zurück.- In der Methode wird das
bits-Array vollständig mitBit-Objekten befüllt. - Die
value-Werte der einzelnenBit-Objekte werden jeweils zufällig mithilfe dernextBoolean()-Methode der KlasseRandomerzeugt. (nextBoolean()gibt zufällig eintrueoder einfalsezurück). - Erzeugen Sie sich dazu in der
createByte()-Methode einRandom-Objekt, für das Sie jeweilsnextBoolean()aufrufen. Die KlasseRandommuss aus demjava.util-Paket importiert werden.
- In der Methode wird das
-
Erstellen Sie eine Objektmethode
createByte(String nr). Diese Methode gibt nichts zurück. Für den übergebenen String können Sie folgende Annahmen treffen:- Der String hat die Länge
8. - Der String enthält nur die Zeichen
0und1. -
Beispiele:
"10010010","10010001","01110001","01110011" -
In der Methode wird das
bits-Array vollständig mitBit-Objekten befüllt. -
Die
value-Werte der einzelnenBit-Objekte entsprechen dem Zeichen im übergebenen String ('1'true,'0'false).
- Der String hat die Länge
-
Überschreiben Sie die Methode
toString()so, dass ein String in der folgenden Form zurückgegeben wird (Beispielwerte):- Nach 4
Bitserfolgt ein Leerzeichen
- Nach 4
-
Erzeugen Sie in der
main()-Methode derProgrammklasseein Objektby1vonByteund befüllen Sie dasbits-Array mithilfe dercreateByte()-Methode (also zufällig).
Erzeugen Sie 5 weiteByte-Objekteby2,by3,by4,by5undby6und befüllen Sie das jeweiligebits-Array mithilfe dercreateByte(String)-Methode unter Verwendung folgender Strings:by2"10010010"by3"10010001"by4"10010010"by5"01110001"by6"01110011"
Erzeugen Sie mithilfe der
toString()-Methode fürBytefolgende Konsolenausgaben (fürby1Beispielwerte – zufällig erzeugt): -
Erstellen Sie in der Klasse
Byteeine ObjektmethodeisBigger(Byte b). Diese Methode gibt eintruezurück, wenn das aufrufendeByte-Objekt einem höherenByte-Wert entspricht alsb, also z.B."1001 0010"isBigger als"1001 0001"oder"0111 0011"isBigger als"0111 0001". Für gleich oder kleiner wirdfalsezurückgegeben. -
Erstellen Sie in der Klasse
Byteeine Objektmethodeand(Byte b). Diese Methode gibt einByte-Objekt zurück. Die Werte desbits-Array des zurückzugebenden Objektes ergeben sich durch bitweise&&-Verknüpfung (and(Bit)-Methode), z.B.:
-
Erstellen Sie in der Klasse
Byteeine Objektmethodeadd(Byte b). Diese Methode gibt einByte-Objekt zurück. Die Werte desbits-Array des zurückzugebenden Objektes ergeben sich durch bitweise Addition:
Beispiel:

-
Verwenden Sie in der
main()-Methode-
die Methode
isBigger(Byte)für den Vergleich der Objekte (by2, by3), (by2, by4) und (by3, by4) und erzeugen Sie unter Verwendung dertoString()-Methode vonBytefolgende Konsolenausgaben: -
die Methode
and(Byte)für die Operation der Objekte (by2, by3) und (by2, by4) und erzeugen Sie unter Verwendung dertoString()-Methode vonBytefolgende Konsolenausgaben: -
die Methode
add(Byte)für die Operation der Objekte (by2, by3) und (by5, by6) und erzeugen Sie unter Verwendung dertoString()-Methode vonBytefolgende Konsolenausgaben:
-
-
-
(Teil - Programmklasse)
-
Erzeugen Sie in der
main()-Methode derProgrammklassezweiByte-Arraysbya1undbya2.- Das
Byte-Arraybya1hat die Länge10. Befüllen Sie es vollständig mitByte-Objekten. Wenden Sie auf dieByte-Objekte jeweils diecreateByte()-Methode an (zufällige Werte). - Das
Byte-Arraybya2hat die Länge20. Befüllen Sie es vollständig mitByte-Objekten. Wenden Sie auf dieByte-Objekte jeweils diecreateByte()-Methode an (zufällige Werte).
- Das
-
Erstellen Sie in der
Programmklasseeine statische MethodeprintByteArray(Byte[] bya). Diese Methode gibt das übergebeneByte-Arraybyaauf der Konsole in der folgenden Form aus (Beispielbya1– Zufallswerte):------ Byte-Array der Laenge 10 -------- 0 : 0001 1110 1 : 1000 0000 2 : 0010 1000 3 : 1110 1010 4 : 0100 0111 5 : 0010 0101 6 : 1100 0001 7 : 1010 0111 8 : 1100 1100 9 : 0100 0001- In der obersten Zeile wird also auch immer zunächst die Länge des Arrays mitausgegeben!
- Die einzelnen
Byte-Objekte werden nummeriert (ganz linker Wert in jeder Zeile) beginnend mit0(gefolgt von Doppelpunkt).
-
Rufen Sie in der
main()-Methode dieprintByteArray()-Methode für dieByte-Arraysbya1undbya2auf. Es entstehen folgende Ausgaben (Zufallswerte!):------ Byte-Array der Laenge 10 -------- 0 : 0001 1110 1 : 1000 0000 2 : 0010 1000 3 : 1110 1010 4 : 0100 0111 5 : 0010 0101 6 : 1100 0001 7 : 1010 0111 8 : 1100 1100 9 : 0100 0001 ------ Byte-Array der Laenge 20 -------- 0 : 1101 0111 1 : 0110 1000 2 : 0011 0101 3 : 1100 0000 4 : 1001 0010 5 : 0101 0010 6 : 1110 1101 7 : 0110 1100 8 : 1100 1010 9 : 1111 1110 10 : 0101 0101 11 : 0101 1100 12 : 1011 1101 13 : 1011 0101 14 : 0110 1000 15 : 1011 0100 16 : 1001 1000 17 : 0011 0001 18 : 1000 1101 19 : 0011 0100 -
Erstellen Sie in der
Programmklasseeine statische MethodesortByteArray(Byte[] bya). Diese Methode gibt einByte-Array zurück. Das zurückgegebeneByte-Array enthält alleByte-Objekte ausbyaund ist aufsteigend sortiert. Das übergebenebyawird nicht sortiert! -
Rufen Sie in der
main()-Methode diesortByteArray()-Methode für dieByte-Arraysbya1undbya2auf. Geben Sie das jeweils zurückgegebeneByte-Array mithilfe derprintByteArray()-Methode auf die Konsole aus. Es entstehen folgende Ausgaben (Beispielwerte - zufällig):------ Byte-Array der Laenge 10 -------- 0 : 0001 1110 1 : 0010 0101 2 : 0010 1000 3 : 0100 0001 4 : 0100 0111 5 : 1000 0000 6 : 1010 0111 7 : 1100 0001 8 : 1100 1100 9 : 1110 1010 ------ Byte-Array der Laenge 20 -------- 0 : 0011 0001 1 : 0011 0100 2 : 0011 0101 3 : 0101 0010 4 : 0101 0101 5 : 0101 1100 6 : 0110 1000 7 : 0110 1000 8 : 0110 1100 9 : 1000 1101 10 : 1001 0010 11 : 1001 1000 12 : 1011 0100 13 : 1011 0101 14 : 1011 1101 15 : 1100 0000 16 : 1100 1010 17 : 1101 0111 18 : 1110 1101 19 : 1111 1110Zur Kontrolle. Die möglichen Ausgaben (Zufallswerte) könnten sein:
------------------ Bit-Objekte ---------------------- b1 = 1 b2 = 1 b3 = 0 b4 = 0 ---------------- Bit and und or --------------------- b1 and b2 = 1 b1 or b2 = 1 b1 and b3 = 0 b1 or b3 = 1 b3 and b4 = 0 b3 or b4 = 0 ---------------- Bit Vergleiche --------------------- b1 > b2 ? false b1 > b3 ? true b3 > b4 ? false b1 == b2 ? true b1 == b3 ? false b3 == b4 ? true ----------------- Byte-Objekte ---------------------- by1 = 1111 0101 by2 = 1001 0010 by3 = 1001 0001 by4 = 1001 0010 by5 = 0111 0001 by6 = 0111 0011 --------------- Byte Vergleiche --------------------- 1001 0010 > 1001 0001 ? true 1001 0010 > 1001 0010 ? false 1001 0001 > 1001 0010 ? false ------------------- Byte and ------------------------ 1001 0010 and 1001 0001 = 1001 0000 1001 0010 and 1001 0010 = 1001 0010 ------------------- Byte add ------------------------ 1001 0010 + 1001 0001 = 0010 0011 0111 0001 + 0111 0011 = 1110 0100 ------------------- Byte-Array unsortiert ------------------------ ------ Byte-Array der Laenge 10 -------- 0 : 0001 1110 1 : 1000 0000 2 : 0010 1000 3 : 1110 1010 4 : 0100 0111 5 : 0010 0101 6 : 1100 0001 7 : 1010 0111 8 : 1100 1100 9 : 0100 0001 ------ Byte-Array der Laenge 20 -------- 0 : 1101 0111 1 : 0110 1000 2 : 0011 0101 3 : 1100 0000 4 : 1001 0010 5 : 0101 0010 6 : 1110 1101 7 : 0110 1100 8 : 1100 1010 9 : 1111 1110 10 : 0101 0101 11 : 0101 1100 12 : 1011 1101 13 : 1011 0101 14 : 0110 1000 15 : 1011 0100 16 : 1001 1000 17 : 0011 0001 18 : 1000 1101 19 : 0011 0100 --------------------- Byte-Array sortiert ------------------------ ------ Byte-Array der Laenge 10 -------- 0 : 0001 1110 1 : 0010 0101 2 : 0010 1000 3 : 0100 0001 4 : 0100 0111 5 : 1000 0000 6 : 1010 0111 7 : 1100 0001 8 : 1100 1100 9 : 1110 1010 ------ Byte-Array der Laenge 20 -------- 0 : 0011 0001 1 : 0011 0100 2 : 0011 0101 3 : 0101 0010 4 : 0101 0101 5 : 0101 1100 6 : 0110 1000 7 : 0110 1000 8 : 0110 1100 9 : 1000 1101 10 : 1001 0010 11 : 1001 1000 12 : 1011 0100 13 : 1011 0101 14 : 1011 1101 15 : 1100 0000 16 : 1100 1010 17 : 1101 0111 18 : 1110 1101 19 : 1111 1110
-
Eine mögliche Lösung für Bit und Byte
package klausurvorbereitung.bit;
public class Bit
{
private boolean value;
public Bit(boolean value)
{
this.value = value;
}
public int bitToInt()
{
if(this.value) return 1;
else return 0;
}
public Bit and(Bit b)
{
return new Bit(this.value && b.value);
}
public Bit or(Bit b)
{
return new Bit(this.value || b.value);
}
public boolean isBigger(Bit b)
{
return (this.value && !b.value);
}
public boolean isEqual(Bit b)
{
return (this.value && b.value) || (!this.value && !b.value);
}
@Override
public String toString()
{
return this.bitToInt()+"";
}
}
package klausurvorbereitung.bit;
import java.util.Random;
public class Byte
{
private Bit[] bits;
public Byte()
{
this.bits = new Bit[8];
}
public void createByte()
{
Random r = new Random();
for(int i=0; i < this.bits.length; i++)
{
this.bits[i] = new Bit(r.nextBoolean());
}
}
public void createByte(String nr)
{
for(int i=this.bits.length-1; i >= 0; i--)
{
if(nr.charAt(i) == '1')
{
this.bits[i] = new Bit(true);
}
else
{
this.bits[i] = new Bit(false);
}
}
}
public String toString()
{
String s = "";
for (int i = 0; i < this.bits.length; i++)
{
if(i==4) s+= " ";
s += this.bits[i].bitToInt();
}
return s;
}
public boolean isBigger(Byte b)
{
for (int i = 0; i < this.bits.length; i++)
{
if(this.bits[i].isBigger(b.bits[i])) return true;
else if(b.bits[i].isBigger(this.bits[i])) return false;
}
return false;
}
public Byte and(Byte b)
{
String s = "";
for (int i = 0; i < this.bits.length; i++)
{
Bit result = this.bits[i].and(b.bits[i]);
s = s + result.bitToInt();
}
Byte by = new Byte();
by.createByte(s);
return by;
}
public Byte add(Byte b)
{
int uebertrag = 0;
String result = "";
for (int i = bits.length-1; i >= 0; i--)
{
if(this.bits[i].and(b.bits[i]).bitToInt()==1)
{
result = (0 + uebertrag) + result;
uebertrag = 1;
}
else if(this.bits[i].or(b.bits[i]).bitToInt()==1)
{
if(uebertrag == 0)
{
result = "1" + result;
uebertrag = 0;
}
else if(uebertrag == 1)
{
result = "0" + result;
uebertrag = 1;
}
}
else
{
result = (0 + uebertrag) + result;
uebertrag = 0;
}
}
Byte resultByte = new Byte();
resultByte.createByte(result);
return resultByte;
}
}
package klausurvorbereitung.bit;
public class Programmklasse
{
public static void printByteArray(Byte[] bya)
{
String s = String.format("%n%n------ Byte-Array der Laenge %d --------%n%n", bya.length);
for (int i = 0; i < bya.length; i++)
{
s += String.format("%2d : %10s %n", i, bya[i].toString());
}
System.out.println(s);
}
public static Byte[] sortByteArray(Byte[] unsorted)
{
Byte[] sorted = new Byte[unsorted.length];
for (int i = 0; i < sorted.length; i++)
{
sorted[i] = unsorted[i];
}
for (int bubble = 1; bubble < sorted.length; bubble++)
{
for (int index = 0; index < sorted.length - bubble; index++)
{
if(sorted[index].isBigger(sorted[index+1]))
{
Byte tmp = sorted[index];
sorted[index] = sorted[index+1];
sorted[index+1] = tmp;
}
}
}
return sorted;
}
public static void main(String[] args)
{
System.out.printf("%n%n------------------ Bit-Objekte ----------------------%n%n");
Bit b1 = new Bit(true);
Bit b2 = new Bit(true);
Bit b3 = new Bit(false);
Bit b4 = new Bit(false);
System.out.println("b1 = " + b1.toString());
System.out.println("b2 = " + b2.toString());
System.out.println("b3 = " + b3.toString());
System.out.println("b4 = " + b4.toString());
System.out.printf("%n%n---------------- Bit and und or ---------------------%n%n");
Bit b = b1.and(b2);
System.out.println("b1 and b2 = " + b.toString());
b = b1.or(b2);
System.out.println("b1 or b2 = " + b.toString());
b = b1.and(b3);
System.out.println("b1 and b3 = " + b.toString());
b = b1.or(b3);
System.out.println("b1 or b3 = " + b.toString());
b = b3.and(b4);
System.out.println("b3 and b4 = " + b.toString());
b = b3.or(b4);
System.out.println("b3 or b4 = " + b.toString());
System.out.printf("%n%n---------------- Bit Vergleiche ---------------------%n%n");
System.out.println("b1 > b2 ? " + b1.isBigger(b2));
System.out.println("b1 > b3 ? " + b1.isBigger(b3));
System.out.println("b3 > b4 ? " + b3.isBigger(b4));
System.out.println("b1 == b2 ? " + b1.isEqual(b2));
System.out.println("b1 == b3 ? " + b1.isEqual(b3));
System.out.println("b3 == b4 ? " + b3.isEqual(b4));
System.out.printf("%n%n----------------- Byte-Objekte ----------------------%n%n");
Byte by1 = new Byte();
by1.createByte();
System.out.println("by1 = " + by1.toString());
Byte by2 = new Byte();
by2.createByte("10010010");
System.out.println("by2 = " + by2.toString());
Byte by3 = new Byte();
by3.createByte("10010001");
System.out.println("by3 = " + by3.toString());
Byte by4 = new Byte();
by4.createByte("10010010");
System.out.println("by4 = " + by4.toString());
Byte by5 = new Byte();
by5.createByte("01110001");
System.out.println("by5 = " + by5.toString());
Byte by6 = new Byte();
by6.createByte("01110011");
System.out.println("by6 = " + by6.toString());
System.out.printf("%n%n--------------- Byte Vergleiche ---------------------%n%n");
System.out.println(by2.toString() + " > " + by3.toString() + " ? " + by2.isBigger(by3));
System.out.println(by2.toString() + " > " + by4.toString() + " ? " + by2.isBigger(by4));
System.out.println(by3.toString() + " > " + by4.toString() + " ? " + by3.isBigger(by4));
System.out.printf("%n%n------------------- Byte and ------------------------%n%n");
Byte by10 = by2.and(by3);
System.out.println(by2.toString() + " and " + by3.toString() + " = " + by10.toString());
Byte by11 = by2.and(by4);
System.out.println(by2.toString() + " and " + by4.toString() + " = " + by11.toString());
System.out.printf("%n%n------------------- Byte add ------------------------%n%n");
Byte by12 = by2.add(by3);
System.out.println(by2.toString() + " + " + by3.toString() + " = " + by12.toString());
Byte by13 = by5.add(by6);
System.out.println(by5.toString() + " + " + by6.toString() + " = " + by13.toString());
System.out.printf("%n%n------------------- Byte-Array unsortiert ------------------------%n%n");
Byte[] bya1 = new Byte[10];
for (int i = 0; i < bya1.length; i++)
{
bya1[i] = new Byte();
bya1[i].createByte();
}
printByteArray(bya1);
Byte[] bya2 = new Byte[20];
for (int i = 0; i < bya2.length; i++)
{
bya2[i] = new Byte();
bya2[i].createByte();
}
printByteArray(bya2);
System.out.printf("%n%n--------------------- Byte-Array sortiert ------------------------%n%n");
Byte[] bya3 = sortByteArray(bya1);
printByteArray(bya3);
Byte[] bya4 = sortByteArray(bya2);
printByteArray(bya4);
}
}
Clothes (pdf)
- Erstellen Sie ein package
klausurvorbereitung.clothes. -
(Teil 1 - Clothes)
-
Erstellen Sie in diesem package eine Klasse
Clothesmit den Objektvariablencolorvom TypString, // Farbe des Kleidungsstückestypevom Typint, // Typ des Kleidungsstückessizevom Typint. // Größe des Kleidungsstückes
Die Objektvariablen sind nur innerhalb der Klasse sichtbar!
-
Erstellen Sie für die Klasse
Clotheseinen parameterlosen Konstruktor. Darin werden die drei Objektvariablen wie folgt initialisiert:colorerhält zufällig einen der Werte"Rot","Gelb","Blau","Schwarz".typeerhält zufällig einen der Werte1, 2, 3, 4, 5.sizeerhält zufällig einen der Werte30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52.
Verwenden Sie dazu die Klasse
Randomaus dem Paketjava.util. -
Erstellen Sie eine Objektmethode
getType(). Diese Methode gibt einenStringzurück. Ist der Wert der Objektvariablentypeeine1, wird"Hose"zurückgeben, ist er2,"Jacke", ist3,"Kleid", ist er4,"Rock"und ist er5, wird"Pullover"zurückgegeben. Für alle anderen Werte vontypewird ein leerer String zurückgegeben. -
Erstellen Sie die Objektmethoden
getColor()undgetSize(), die den Wert der jeweiligen Objektvariablen zurückgeben. -
Überschreiben Sie die Methode
toString()so, dass ein formatierter String in folgender Form zurückgegeben wird (zufällige Beispielwerte):Der String soll so formatiert sein, dass bei Ausgabe mehrerer
Clothes-Objekte die jeweiligen Werte untereinander stehen, also z.B. (zufällige Beispielwerte): -
Erstellen Sie eine Objektmethode
isEqual(Clothes c), die genau dann eintruezurückgibt, wenn das aufrufende Objekt undcin ihren jeweiligen drei Objektvariablen paarweise dieselben Werte haben. Sonstfalse. -
Erstellen Sie eine Objektmethode
isBigger(Clothes c), die genau dann eintruezurückgibt, wenn der Wert vonsizedes aufrufenden Objektes größer ist, als der Wert vonsizevonc. Sonstfalse. -
Erzeugen Sie eine
Programmklassemitmain()-Methode.
Erzeugen Sie in dermain()-Methode derProgrammklasseeinClothes[] cader Länge10. Befüllen Sie in einer Schleife dasClothes-Array mitClothes-Objekten und geben Sie diese auf die Konsole aus. Es entsteht folgende Ausgabe (zufällige Beispielwerte):---------------- Teil 1 -------------------- Pullover Farbe Rot in Groesse 36 Rock Farbe Blau in Groesse 32 Pullover Farbe Blau in Groesse 38 Hose Farbe Schwarz in Groesse 48 Jacke Farbe Gelb in Groesse 38 Kleid Farbe Blau in Groesse 40 Hose Farbe Schwarz in Groesse 48 Hose Farbe Gelb in Groesse 34 Kleid Farbe Blau in Groesse 32 Hose Farbe Rot in Groesse 52
-
-
(Teil 2 - Item)
-
Erstellen Sie eine Klasse
Item. Objektvariablen sindprizevom Typdouble, // Preis des Kleidungsstückesamountvom Typint, // Anzahl der Kleidungsstückeclothesvom TypClothes. // das jeweilige Kleidungsstück
Die Objektvariablen sind nur innerhalb der Klasse sichtbar!
-
Erstellen Sie für die Klasse
Itemeinen parameterlosen Konstruktor. Innerhalb des Konstruktors werden die drei Objektvariablen wie folgt initialisiert:prizeerhält zufällig einen Wert zwischen50,00und99,99(jeweils inklusive),amounterhält den Wert5.clotheszeigt auf ein neu erstelltesClothes-Objekt.
Tipp: Erzeugen Sie für
prizeeinen passendenint-Wert und teilen diesen durch100. -
Erstellen Sie für die Klasse
Itemeinen Konstruktor, dem einClothes cals Parameter übergeben wird. Initialisieren Sie die Objektvariablenprizeundamountwie im parameterlosen Konstruktor. Die Objektvariableclotheswird mitcinitialisiert. -
Erstellen Sie eine Objektmethode
getClothes(), die den Wert der Objektvariablenclotheszurückgibt. -
Erstellen Sie eine Objektmethode
available(), die genau dann eintruezurückgibt, wenn der Wert vonamountgrößer als0ist. Sonstfalse. -
Erstellen Sie eine Objektmethode
reduce(), die den Wert vonamountum1reduziert. -
Erstellen Sie eine Objektmethode
increase(), die den Wert vonamountum5erhöht. -
Erstellen Sie eine Objektmethode
getPrize(), die den Wert der Objektvariablenprizezurückgibt. -
Überschreiben Sie die Methode
toString()so, dass ein formatierter String in der folgenden Form zurückgegeben wird (zufällige Beispielwerte): -
Erzeugen Sie in der
main()-Methode derProgrammklasseeinItem[] iader Länge20.-
Befüllen Sie in einer Schleife die ersten
10Elemente desItem-Arrays mitItem-Objekten unter Verwendung des parameterlosen Konstruktors vonItem. -
Befüllen Sie in einer Schleife die letzten
10Elemente desItem-Arrays unter Verwendung des parametrisierten Konstruktors vonItem. Übergeben Sie diesem Konstruktor sukzessive dieClothes-Objekte aus demClothes-Arraycaaus Teil 1. Es entsteht folgende Ausgabe (zufällige Beispielwerte):---------------- Teil 2 -------------------- Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro Rock Farbe Schwarz in Groesse 42 5 Stueck fuer je 59,62 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Rock Farbe Schwarz in Groesse 42 5 Stueck fuer je 71,11 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Pullover Farbe Rot in Groesse 36 5 Stueck fuer je 91,53 Euro Rock Farbe Blau in Groesse 32 5 Stueck fuer je 69,84 Euro Pullover Farbe Blau in Groesse 38 5 Stueck fuer je 53,19 Euro Hose Farbe Schwarz in Groesse 48 5 Stueck fuer je 61,06 Euro Jacke Farbe Gelb in Groesse 38 5 Stueck fuer je 69,07 Euro Kleid Farbe Blau in Groesse 40 5 Stueck fuer je 58,04 Euro Hose Farbe Schwarz in Groesse 48 5 Stueck fuer je 78,22 Euro Hose Farbe Gelb in Groesse 34 5 Stueck fuer je 64,14 Euro Kleid Farbe Blau in Groesse 32 5 Stueck fuer je 50,53 Euro Hose Farbe Rot in Groesse 52 5 Stueck fuer je 64,61 Euro
-
-
-
(Teil 3 - Shop)
-
Erstellen Sie eine Klasse
Shop. Objektvariable iststockvom TypItem[].
Die Objektvariable ist nur innerhalb der Klasse sichtbar!
-
Erstellen Sie für die Klasse
Shopeinen parameterlosen Konstruktor. Innerhalb des Konstruktors wird die Objektvariable mit einem leerenItem-Array initialisiert. -
Erstellen Sie eine Objektmethode
delivery(Item i). Das als Parameter übergebeneItemwird demstock-Array hinzugefügt. Die Länge desstock-Arrays muss sich dazu um1erhöhen.
Beachten Sie: Ist das in
Item ienthaltene Kleidungsstückclothes(mit gleicher Größe, Typ und Farbe – sieheisEquals(Clothes)) bereits instockenthalten, erhöht sich nur deramountdesItems instock(sieheincrease()). Die Länge desstock-Arrays ändert sich dann nicht.Tipp: Es kann hier ratsam sein, eine
contains(Item i)-Methode zu schreiben, die prüft, obItem ibereits instockenthalten ist. Diese Methode kann man auch im Folgenden gebrauchen. -
Erstellen Sie eine Objektmethode
delivery(int quantity). Dasstock-Array wird um die Längequantityerhöht. Die neuen Elemente werden mithilfe des parameterlosenItem-Konstruktors mitItem-Objekten befüllt.Beachten Sie: Es sollen keine „doppelten“
Item-Objekte instockeingefügt werden, d.h. keineclothesmit gleicher Größe, Typ und Farbe – sieheisEquals(Clothes)(oder siehecontains(Item i)). -
Erstellen Sie eine Objektmethode
sell(Clothes c).-
Ist das passende
Itemimstock-Array und verfügbar (sieheavailable()), wird dessenamountum1reduziert und es erfolgt die Ausgabe auf die Konsole (Beispielwert): -
Ist das passende
Itemnicht imstock-Array, erfolgt die Ausgabe auf die Konsole (Beispielwert): -
Ist das passende
Itemnicht verfügbar (sieheavailable()), erfolgt die Ausgabe auf die Konsole (Beispielwert):
-
-
Überschreiben Sie die Methode
toString()so, dass ein formatierter String in der folgenden Form zurückgegeben wird (zufällige Beispielwerte):9 items in stock ---------- Hose Farbe Schwarz in Groesse 32 5 Stueck fuer je 84,69 Euro Pullover Farbe Schwarz in Groesse 30 5 Stueck fuer je 66,70 Euro Hose Farbe Rot in Groesse 48 10 Stueck fuer je 87,67 Euro Pullover Farbe Schwarz in Groesse 50 5 Stueck fuer je 53,60 Euro Kleid Farbe Rot in Groesse 42 5 Stueck fuer je 71,00 Euro Hose Farbe Blau in Groesse 46 5 Stueck fuer je 77,10 Euro Kleid Farbe Schwarz in Groesse 30 5 Stueck fuer je 55,47 Euro Kleid Farbe Rot in Groesse 36 5 Stueck fuer je 65,42 Euro Rock Farbe Rot in Groesse 46 5 Stueck fuer je 80,64 Euro- Zunächst die Anzahl der
Items instock - Dann alle
Items instock
- Zunächst die Anzahl der
-
Erstellen Sie eine Objektmethode
sort(). Diese sortiert dasstock-Array den Preisen nach aufsteigend. -
Erstellen Sie eine Objektmethode
filter(int size). Diese gibt einItem-Array mit allen Items aus demstock-Array zurück, die die übergebene Kleidergrößesizehaben. -
Erzeugen Sie in der
main()-Methode derProgrammklasseeinShop-Objekts1.- Liefern Sie mithilfe der
delivery(int)-Methode20Items. - Geben Sie
s1auf die Konsole aus. - „Verkaufen“ Sie (
sell(Clothes)) ins1alleClothesausca(Teil 1). (die „verkauften“Clothessind eventuell gar nicht imstock).
Es entsteht folgende Ausgabe (zufällige Beispielwerte):
20 items in stock ---------- Hose Farbe Schwarz in Groesse 42 5 Stueck fuer je 95,50 Euro Pullover Farbe Rot in Groesse 32 5 Stueck fuer je 83,17 Euro Hose Farbe Gelb in Groesse 38 5 Stueck fuer je 54,02 Euro Rock Farbe Gelb in Groesse 44 5 Stueck fuer je 97,98 Euro Jacke Farbe Blau in Groesse 40 5 Stueck fuer je 76,35 Euro Kleid Farbe Gelb in Groesse 46 5 Stueck fuer je 94,77 Euro Hose Farbe Blau in Groesse 40 5 Stueck fuer je 89,68 Euro Hose Farbe Schwarz in Groesse 46 5 Stueck fuer je 77,56 Euro Pullover Farbe Rot in Groesse 38 5 Stueck fuer je 58,85 Euro Rock Farbe Gelb in Groesse 38 5 Stueck fuer je 83,63 Euro Rock Farbe Blau in Groesse 30 5 Stueck fuer je 85,67 Euro Pullover Farbe Gelb in Groesse 48 5 Stueck fuer je 66,45 Euro Hose Farbe Gelb in Groesse 48 5 Stueck fuer je 60,87 Euro Hose Farbe Gelb in Groesse 32 5 Stueck fuer je 71,71 Euro Kleid Farbe Gelb in Groesse 46 5 Stueck fuer je 91,35 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 74,04 Euro Rock Farbe Rot in Groesse 50 5 Stueck fuer je 88,73 Euro Kleid Farbe Schwarz in Groesse 38 5 Stueck fuer je 96,23 Euro Pullover Farbe Gelb in Groesse 32 5 Stueck fuer je 62,45 Euro Rock Farbe Gelb in Groesse 30 5 Stueck fuer je 64,27 Euro Pullover Farbe Rot in Groesse 36 nicht erhaeltlich. Rock Farbe Blau in Groesse 32 nicht erhaeltlich. Pullover Farbe Blau in Groesse 38 nicht erhaeltlich. Hose Farbe Schwarz in Groesse 48 nicht erhaeltlich. Jacke Farbe Gelb in Groesse 38 nicht erhaeltlich. Kleid Farbe Blau in Groesse 40 nicht erhaeltlich. Hose Farbe Schwarz in Groesse 48 nicht erhaeltlich. Hose Farbe Gelb in Groesse 34 nicht erhaeltlich. Kleid Farbe Blau in Groesse 32 nicht erhaeltlich. Hose Farbe Rot in Groesse 52 nicht erhaeltlich. - Liefern Sie mithilfe der
-
Erzeugen Sie in der
main()-Methode derProgrammklasseeinShop-Objekts2.- Liefern Sie mithilfe der
delivery(Item)-Methode alle Items ausia(Teil 2). - Geben Sie
s2auf die Konsole aus. - Verkaufen Sie (
sell(Clothes)) ins1alleClothesausca(Teil 1).
Es entsteht folgende Ausgabe (zufällige Beispielwerte):
18 items in stock ---------- Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro Rock Farbe Schwarz in Groesse 42 10 Stueck fuer je 59,62 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Pullover Farbe Rot in Groesse 36 5 Stueck fuer je 91,53 Euro Rock Farbe Blau in Groesse 32 5 Stueck fuer je 69,84 Euro Pullover Farbe Blau in Groesse 38 5 Stueck fuer je 53,19 Euro Hose Farbe Schwarz in Groesse 48 10 Stueck fuer je 61,06 Euro Jacke Farbe Gelb in Groesse 38 5 Stueck fuer je 69,07 Euro Kleid Farbe Blau in Groesse 40 5 Stueck fuer je 58,04 Euro Hose Farbe Gelb in Groesse 34 5 Stueck fuer je 64,14 Euro Kleid Farbe Blau in Groesse 32 5 Stueck fuer je 50,53 Euro Hose Farbe Rot in Groesse 52 5 Stueck fuer je 64,61 Euro Pullover Farbe Rot in Groesse 36 fuer 91,53 Euro verkauft. Rock Farbe Blau in Groesse 32 fuer 69,84 Euro verkauft. Pullover Farbe Blau in Groesse 38 fuer 53,19 Euro verkauft. Hose Farbe Schwarz in Groesse 48 fuer 61,06 Euro verkauft. Jacke Farbe Gelb in Groesse 38 fuer 69,07 Euro verkauft. Kleid Farbe Blau in Groesse 40 fuer 58,04 Euro verkauft. Hose Farbe Schwarz in Groesse 48 fuer 61,06 Euro verkauft. Hose Farbe Gelb in Groesse 34 fuer 64,14 Euro verkauft. Kleid Farbe Blau in Groesse 32 fuer 50,53 Euro verkauft. Hose Farbe Rot in Groesse 52 fuer 64,61 Euro verkauft. - Liefern Sie mithilfe der
-
Rufen Sie in der
main()-Methode fürs2diesort()-Methode auf und geben Sies2auf die Konsole aus.Es entsteht folgende Ausgabe (zufällige Beispielwerte):
---------------- sort() -------------------- 18 items in stock ---------- Kleid Farbe Blau in Groesse 32 4 Stueck fuer je 50,53 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Pullover Farbe Blau in Groesse 38 4 Stueck fuer je 53,19 Euro Kleid Farbe Blau in Groesse 40 4 Stueck fuer je 58,04 Euro Rock Farbe Schwarz in Groesse 42 10 Stueck fuer je 59,62 Euro Hose Farbe Schwarz in Groesse 48 8 Stueck fuer je 61,06 Euro Hose Farbe Gelb in Groesse 34 4 Stueck fuer je 64,14 Euro Hose Farbe Rot in Groesse 52 4 Stueck fuer je 64,61 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Jacke Farbe Gelb in Groesse 38 4 Stueck fuer je 69,07 Euro Rock Farbe Blau in Groesse 32 4 Stueck fuer je 69,84 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Pullover Farbe Rot in Groesse 36 4 Stueck fuer je 91,53 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro -
Rufen Sie in der
main()-Methode fürs2diefilter()-Methode für eine bestimmte Größe auf. Geben Sie alle zurückgegebenen Items auf die Konsole aus.Es entsteht folgende Ausgabe (zufällige Beispielwerte – hier nach Größe 32 gefiltert):
----------- filter(int size) --------------- Kleid Farbe Blau in Groesse 32 4 Stueck fuer je 50,53 Euro Rock Farbe Blau in Groesse 32 4 Stueck fuer je 69,84 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 EuroZur Kontrolle. Die möglichen Ausgaben (Zufallswerte) könnten sein:
---------------- Teil 1 -------------------- Pullover Farbe Rot in Groesse 36 Rock Farbe Blau in Groesse 32 Pullover Farbe Blau in Groesse 38 Hose Farbe Schwarz in Groesse 48 Jacke Farbe Gelb in Groesse 38 Kleid Farbe Blau in Groesse 40 Hose Farbe Schwarz in Groesse 48 Hose Farbe Gelb in Groesse 34 Kleid Farbe Blau in Groesse 32 Hose Farbe Rot in Groesse 52 ---------------- Teil 2 -------------------- Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro Rock Farbe Schwarz in Groesse 42 5 Stueck fuer je 59,62 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Rock Farbe Schwarz in Groesse 42 5 Stueck fuer je 71,11 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Pullover Farbe Rot in Groesse 36 5 Stueck fuer je 91,53 Euro Rock Farbe Blau in Groesse 32 5 Stueck fuer je 69,84 Euro Pullover Farbe Blau in Groesse 38 5 Stueck fuer je 53,19 Euro Hose Farbe Schwarz in Groesse 48 5 Stueck fuer je 61,06 Euro Jacke Farbe Gelb in Groesse 38 5 Stueck fuer je 69,07 Euro Kleid Farbe Blau in Groesse 40 5 Stueck fuer je 58,04 Euro Hose Farbe Schwarz in Groesse 48 5 Stueck fuer je 78,22 Euro Hose Farbe Gelb in Groesse 34 5 Stueck fuer je 64,14 Euro Kleid Farbe Blau in Groesse 32 5 Stueck fuer je 50,53 Euro Hose Farbe Rot in Groesse 52 5 Stueck fuer je 64,61 Euro ---------------- Teil 3 -------------------- 20 items in stock ---------- Hose Farbe Schwarz in Groesse 42 5 Stueck fuer je 95,50 Euro Pullover Farbe Rot in Groesse 32 5 Stueck fuer je 83,17 Euro Hose Farbe Gelb in Groesse 38 5 Stueck fuer je 54,02 Euro Rock Farbe Gelb in Groesse 44 5 Stueck fuer je 97,98 Euro Jacke Farbe Blau in Groesse 40 5 Stueck fuer je 76,35 Euro Kleid Farbe Gelb in Groesse 46 5 Stueck fuer je 94,77 Euro Hose Farbe Blau in Groesse 40 5 Stueck fuer je 89,68 Euro Hose Farbe Schwarz in Groesse 46 5 Stueck fuer je 77,56 Euro Pullover Farbe Rot in Groesse 38 5 Stueck fuer je 58,85 Euro Rock Farbe Gelb in Groesse 38 5 Stueck fuer je 83,63 Euro Rock Farbe Blau in Groesse 30 5 Stueck fuer je 85,67 Euro Pullover Farbe Gelb in Groesse 48 5 Stueck fuer je 66,45 Euro Hose Farbe Gelb in Groesse 48 5 Stueck fuer je 60,87 Euro Hose Farbe Gelb in Groesse 32 5 Stueck fuer je 71,71 Euro Kleid Farbe Gelb in Groesse 46 5 Stueck fuer je 91,35 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 74,04 Euro Rock Farbe Rot in Groesse 50 5 Stueck fuer je 88,73 Euro Kleid Farbe Schwarz in Groesse 38 5 Stueck fuer je 96,23 Euro Pullover Farbe Gelb in Groesse 32 5 Stueck fuer je 62,45 Euro Rock Farbe Gelb in Groesse 30 5 Stueck fuer je 64,27 Euro Pullover Farbe Rot in Groesse 36 nicht erhaeltlich. Rock Farbe Blau in Groesse 32 nicht erhaeltlich. Pullover Farbe Blau in Groesse 38 nicht erhaeltlich. Hose Farbe Schwarz in Groesse 48 nicht erhaeltlich. Jacke Farbe Gelb in Groesse 38 nicht erhaeltlich. Kleid Farbe Blau in Groesse 40 nicht erhaeltlich. Hose Farbe Schwarz in Groesse 48 nicht erhaeltlich. Hose Farbe Gelb in Groesse 34 nicht erhaeltlich. Kleid Farbe Blau in Groesse 32 nicht erhaeltlich. Hose Farbe Rot in Groesse 52 nicht erhaeltlich. 18 items in stock ---------- Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro Rock Farbe Schwarz in Groesse 42 10 Stueck fuer je 59,62 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Pullover Farbe Rot in Groesse 36 5 Stueck fuer je 91,53 Euro Rock Farbe Blau in Groesse 32 5 Stueck fuer je 69,84 Euro Pullover Farbe Blau in Groesse 38 5 Stueck fuer je 53,19 Euro Hose Farbe Schwarz in Groesse 48 10 Stueck fuer je 61,06 Euro Jacke Farbe Gelb in Groesse 38 5 Stueck fuer je 69,07 Euro Kleid Farbe Blau in Groesse 40 5 Stueck fuer je 58,04 Euro Hose Farbe Gelb in Groesse 34 5 Stueck fuer je 64,14 Euro Kleid Farbe Blau in Groesse 32 5 Stueck fuer je 50,53 Euro Hose Farbe Rot in Groesse 52 5 Stueck fuer je 64,61 Euro Pullover Farbe Rot in Groesse 36 fuer 91,53 Euro verkauft. Rock Farbe Blau in Groesse 32 fuer 69,84 Euro verkauft. Pullover Farbe Blau in Groesse 38 fuer 53,19 Euro verkauft. Hose Farbe Schwarz in Groesse 48 fuer 61,06 Euro verkauft. Jacke Farbe Gelb in Groesse 38 fuer 69,07 Euro verkauft. Kleid Farbe Blau in Groesse 40 fuer 58,04 Euro verkauft. Hose Farbe Schwarz in Groesse 48 fuer 61,06 Euro verkauft. Hose Farbe Gelb in Groesse 34 fuer 64,14 Euro verkauft. Kleid Farbe Blau in Groesse 32 fuer 50,53 Euro verkauft. Hose Farbe Rot in Groesse 52 fuer 64,61 Euro verkauft. 18 items in stock ---------- Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro Rock Farbe Schwarz in Groesse 42 10 Stueck fuer je 59,62 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Pullover Farbe Rot in Groesse 36 4 Stueck fuer je 91,53 Euro Rock Farbe Blau in Groesse 32 4 Stueck fuer je 69,84 Euro Pullover Farbe Blau in Groesse 38 4 Stueck fuer je 53,19 Euro Hose Farbe Schwarz in Groesse 48 8 Stueck fuer je 61,06 Euro Jacke Farbe Gelb in Groesse 38 4 Stueck fuer je 69,07 Euro Kleid Farbe Blau in Groesse 40 4 Stueck fuer je 58,04 Euro Hose Farbe Gelb in Groesse 34 4 Stueck fuer je 64,14 Euro Kleid Farbe Blau in Groesse 32 4 Stueck fuer je 50,53 Euro Hose Farbe Rot in Groesse 52 4 Stueck fuer je 64,61 Euro ---------------- sort() -------------------- 18 items in stock ---------- Kleid Farbe Blau in Groesse 32 4 Stueck fuer je 50,53 Euro Jacke Farbe Rot in Groesse 42 5 Stueck fuer je 51,61 Euro Pullover Farbe Blau in Groesse 38 4 Stueck fuer je 53,19 Euro Kleid Farbe Blau in Groesse 40 4 Stueck fuer je 58,04 Euro Rock Farbe Schwarz in Groesse 42 10 Stueck fuer je 59,62 Euro Hose Farbe Schwarz in Groesse 48 8 Stueck fuer je 61,06 Euro Hose Farbe Gelb in Groesse 34 4 Stueck fuer je 64,14 Euro Hose Farbe Rot in Groesse 52 4 Stueck fuer je 64,61 Euro Rock Farbe Blau in Groesse 48 5 Stueck fuer je 65,93 Euro Kleid Farbe Gelb in Groesse 44 5 Stueck fuer je 66,49 Euro Kleid Farbe Blau in Groesse 34 5 Stueck fuer je 67,01 Euro Jacke Farbe Gelb in Groesse 38 4 Stueck fuer je 69,07 Euro Rock Farbe Blau in Groesse 32 4 Stueck fuer je 69,84 Euro Pullover Farbe Rot in Groesse 52 5 Stueck fuer je 75,88 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Kleid Farbe Rot in Groesse 50 5 Stueck fuer je 89,76 Euro Pullover Farbe Rot in Groesse 36 4 Stueck fuer je 91,53 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro ----------- filter(int size) --------------- Kleid Farbe Blau in Groesse 32 4 Stueck fuer je 50,53 Euro Rock Farbe Blau in Groesse 32 4 Stueck fuer je 69,84 Euro Jacke Farbe Schwarz in Groesse 32 5 Stueck fuer je 88,81 Euro Kleid Farbe Gelb in Groesse 32 5 Stueck fuer je 96,25 Euro
-
Eine mögliche Lösung für Clothes
package klausurvorbereitung.clothes;
import java.util.Random;
public class Clothes
{
private String color;
private int type;
private int size;
public Clothes()
{
Random r = new Random();
int color = r.nextInt(4);
this.color = switch(color) {
case 0 -> "Rot";
case 1 -> "Gelb";
case 2 -> "Blau";
case 3 -> "Schwarz";
default -> "";
};
this.type = r.nextInt(5) + 1;
this.size = r.nextInt(12)*2 + 30;
}
public String getType()
{
String type = switch(this.type) {
case 1 -> "Hose";
case 2 -> "Jacke";
case 3 -> "Kleid";
case 4 -> "Rock";
case 5 -> "Pullover";
default -> "";
};
return type;
}
public String getColor()
{
return this.color;
}
public int getSize()
{
return this.size;
}
@Override
public String toString()
{
String output = String.format("%-8s Farbe %-7s in Groesse %2d", this.getType(), this.color, this.size);
return output;
}
public boolean isEqual(Clothes c)
{
return this.color.equals(c.color) && this.size == c.size && this.type == c.type;
}
public boolean isBigger(Clothes c)
{
return this.size > c.size;
}
}
package klausurvorbereitung.clothes;
import java.util.Random;
public class Item
{
private double prize;
private int amount;
private Clothes clothes;
public Item()
{
Random r = new Random();
int intPrize = r.nextInt(5000) + 5000;
this.prize = intPrize/100.0;
this.amount = 5;
this.clothes = new Clothes();
}
public Item(Clothes c)
{
this(); // oder aus dem oberen Konstruktor erneut die ersten 4 Zeilen
this.clothes = c;
}
public Clothes getClothes()
{
return this.clothes;
}
public boolean available()
{
return this.amount > 0;
}
public void reduce()
{
this.amount--;
}
public void increase()
{
this.amount += 5;
}
public double getPrize()
{
return this.prize;
}
@Override
public String toString()
{
return String.format("%-30s %2d Stueck fuer je %.2f Euro", this.clothes.toString(), this.amount, this.prize);
}
}
package klausurvorbereitung.clothes;
public class Shop
{
private Item[] stock;
public Shop()
{
this.stock = new Item[0];
}
public void delivery(Item i)
{
if(this.contains(i.getClothes()))
{
for (int index = 0; index < this.stock.length; index++)
{
if(this.stock[index].getClothes().isEqual(i.getClothes()))
{
if(this.stock[index].available())
{
this.stock[index].increase();
}
}
}
}
else
{
Item[] copy = new Item[this.stock.length + 1];
for (int index = 0; index < this.stock.length; index++)
{
copy[index] = this.stock[index];
}
copy[this.stock.length] = i;
this.stock = copy;
}
}
public void delivery(int quantity)
{
Item[] copy = new Item[this.stock.length + quantity];
for (int i = 0; i < this.stock.length; i++)
{
copy[i] = this.stock[i];
}
for (int i = this.stock.length; i < copy.length; i++)
{
Item newItem = new Item();
while(this.contains(newItem.getClothes()))
{
newItem = new Item();
}
copy[i] = newItem;
}
this.stock = copy;
}
private boolean contains(Clothes c)
{
for (int i = 0; i < this.stock.length; i++)
{
if(this.stock[i].getClothes().isEqual(c))
{
return true;
}
}
return false;
}
public void sell(Clothes c)
{
if(this.contains(c))
{
for (int i = 0; i < this.stock.length; i++)
{
if(this.stock[i].getClothes().isEqual(c))
{
if(this.stock[i].available())
{
this.stock[i].reduce();
System.out.printf("%s fuer %.2f Euro verkauft.%n", c.toString(), this.stock[i].getPrize());
}
else
{
System.out.println(c.toString() + " nicht verfuegbar.");
}
}
}
}
else
{
System.out.println(c.toString() + " nicht erhaeltlich.");
}
}
@Override
public String toString()
{
String output = String.format("%n%d items in stock ---------- %n%n", this.stock.length);
for (int i = 0; i < this.stock.length; i++)
{
output += String.format("%s %n", this.stock[i].toString());
}
output += String.format("%n");
return output;
}
public void sort()
{
for (int bubble = 1; bubble < this.stock.length; bubble++)
{
for (int index = 0; index < this.stock.length - bubble; index++)
{
if(this.stock[index].getPrize() > this.stock[index+1].getPrize())
{
Item i = this.stock[index];
this.stock[index] = this.stock[index+1];
this.stock[index+1] = i;
}
}
}
}
public Item[] filter(int size)
{
int counter = 0;
for (int index = 0; index < this.stock.length; index++)
{
if(this.stock[index].getClothes().getSize() == size)
{
counter++;
}
}
Item[] filter = new Item[counter];
int indexFilter = 0;
for (int index = 0; index < this.stock.length; index++)
{
if(this.stock[index].getClothes().getSize() == size)
{
filter[indexFilter++] = this.stock[index];
}
}
return filter;
}
}
package klausurvorbereitung.clothes;
public class Programmklasse
{
public static void main(String[] args)
{
System.out.printf("%n---------------- Teil 1 --------------------%n%n");
Clothes[] ca = new Clothes[10];
for(int i = 0; i < 10; i++)
{
ca[i] = new Clothes();
System.out.println(ca[i].toString());
}
System.out.printf("%n---------------- Teil 2 --------------------%n%n");
Item[] ia = new Item[20];
for(int i = 0; i < 10; i++)
{
ia[i] = new Item();
System.out.println(ia[i].toString());
}
for(int i = 10; i < 20; i++)
{
ia[i] = new Item(ca[i-10]);
System.out.println(ia[i].toString());
}
System.out.printf("%n---------------- Teil 3 --------------------%n%n");
Shop s1 = new Shop();
s1.delivery(20);
System.out.println(s1.toString());
for(int i = 0; i < ca.length; i++)
{
s1.sell(ca[i]);
}
Shop s2 = new Shop();
for(int i = 0; i < 20; i++)
{
s2.delivery(ia[i]);
}
System.out.println(s2.toString());
for(int i = 0; i < ca.length; i++)
{
s2.sell(ca[i]);
}
System.out.println(s2.toString());
System.out.printf("%n---------------- sort() --------------------%n%n");
s2.sort();
System.out.println(s2.toString());
System.out.printf("%n----------- filter(int size) ---------------%n%n");
Item[] filter = s2.filter(32);
for(int i = 0; i < filter.length; i++)
{
System.out.println(filter[i]);
}
}
}
Produkt (pdf)
- Erstellen Sie ein package
klausurvorbereitung.produkt. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
Produktmit-
den privaten Objektvariablen
nummervom Typint(8stellige Produktnummer),preisvom Typdoubleundcodevom TypString(4stelliger Namenscode) .
-
einer Objektmethode
erzeuge8stelligeNummer(), welche einintzurückgibt. Zurückgegeben wird eine zufällig erzeugte 8-stellige Zahl, also im Wertebereich[10 000 000 , … , 99 999 999]. Es werden also potenziell90 000 000verschiedene Zufallszahlen erzeugt. -
einer Objektmethode
erzeugePreis(int nummer), welche eindoublezurückgibt. Die übergebenenummerist 8-stellig (müssen Sie nicht prüfen, Sie können davon ausgehen). Zurückgegeben wird einedouble-Zahl, die sich aus den ersten 4 Ziffern vonnummerergibt und die zwei Nachkommastellen hat.
Beispiel:nummer = 1234 5678→ zurückgegeben wird12,34
Tipp: die letzten vier Ziffern der nummer werden einfach „abgeschnitten“. -
einer Objektmethode
erzeugeCode(), welche einenStringzurückgibt. Zurückgegeben wird eine 4-stellige Zeichenkette aus Kombinationen der GroßbuchstabenA, B, C, D, E, F, G, H, I, J. Die Buchstaben werden jeweils zufällig erzeugt.
Tipp: Der GroßbuchstabeAhat den ASCII-Code65,Bden ASCII-Code66... bisJASCII-Code74. Es werden also potenziell10verschiedene Buchstaben erzeugt.
Beachten Sie: Der zurückgegebene Code muss stets 4-stellig sein. -
Erstellen Sie eine
Programmklassemitmain()-Methode. Rufen Sie in dermain()-Methode in einer Schleife alle drei Methoden 5 Mal auf, so dass folgende Ausgabe entsteht (Beispielwerte zufällig):12181268 12,18 Euro BCGI 24708077 24,70 Euro IAHH 60117886 60,11 Euro HIIG 80346223 80,34 Euro GCCD 27118770 27,11 Euro IHHABeachten Sie, dass die Ausgabe formatiert ist, d.h. ein Preis von z.B.
12.3wird als12,30dargestellt. -
Erstellen Sie in der
Produkt-Klasse einen parameterlosen Konstruktor. Initialisieren Sie darin die drei Objektvariablennummer,preisundcodemithilfe der Objektmethodenerzeuge8stelligeNummer(),erzeugePreis(int)underzeugeCode(). -
Überschreiben Sie die Methode
toString()so, dass einProdukt-Objekt in der folgenden Form als String zurückgegeben wird (zufällige Beispielwerte): -
Erstellen Sie eine Objektmethode
print(), die den vontoString()erzeugtenStringauf die Konsole ausgibt. -
Erstellen Sie eine Objektmethode
istTeurer(Produkt p), die eintruezurückgibt, wenn das aufrufendeProdukt-Objekt einen höheren Preis hat alspundfalsesonst. -
Erstellen Sie für die Objektvariable
codeeinen GettergetCode().
-
-
(Teil 2) Erstellen Sie eine Klasse
Produktgruppemit-
den privaten Objektvariablen
gruppevom TypProdukt[]undkennzeichenvom Typchar(Buchstabe mit dem jeder Produktcode beginnt).
-
Erstellen Sie für die Klasse
Produktgruppeeinen parametrisierten KonstruktorProduktgruppe(char kennzeichen). Der Parameterwert wird verwendet, um der Objektvariablenkennzeicheneinen Wert zuzuweisen. Außerdem wird dasgruppe-Array mit der Länge 0 erzeugt. -
Erstellen Sie für Klasse
Produktgruppeeine Objektmethodeenthalten(Produkt p). Diese gibt eintruezurück, wenn ingruppebereits ein Produkt enthalten ist, das denselbencodewiephat undfalsesonst. -
Erstellen Sie für Klasse
Produktgruppeeine Objektmethodeeinfuegen(Produkt p). Diese Methode fügtpin dasgruppe-Array ein, aber nur, wenn- der
codevonpmit demselben Buchstaben beginnt, wiekennzeichenund pnoch nicht ingruppeenthalten ist.
Wird
ptatsächlich ingruppeeingefügt, gibt die Methode eintruezurück undfalsesonst.
Beachten Sie, dass sich die Länge vongruppeum 1 erhöht, wennpeingefügt wird (sonst nicht). - der
-
Erstellen Sie eine Objektmethode
getAnzahl(). Diese Methode gibt die Anzahl der ingruppebefindlichen Produkte zurück. -
Erstellen Sie eine Objektmethode
getProdukt(int index). Diese Methode gibt das Produkt zurück, das sich unterindexingruppebefindet. Ist der Wert vonindexkein korrekter Index aus demgruppe-Array, wirdnullzurückgegeben. -
Erstellen Sie eine Objektmethode
print(), so dass alle Produkte aus demgruppe-Array in der folgenden Form auf der Konsole ausgegeben werden (zufällige Beispielwerte):----------------- Produktgruppe B Anzahl: 5 73541548 73,54 Euro BFEI 64251775 64,25 Euro BHHF 76401485 76,40 Euro BEIF 37121451 37,12 Euro BEFB 32961676 32,96 Euro BGHG ------------------ Es erscheint also zunächst eine Linie, Länge egal,
- dann
Produktgruppe B Anzahl: 5, wobeiBdem Wert vonkennzeichenentspricht und5der aktuellen Anzahl von Produkten in der Produktgruppe, - dann kommen alle Produkte aus dem
gruppe-Array, - dann wieder eine Linie, Länge egal.
-
Erzeugen Sie in der
main()-Methode der Programmklasse zwei Objekte vonProduktgruppe. Übergeben Sie dem einen Objekt den BuchstabenAund dem anderen Objekt dem BuchstabenB.- Erstellen Sie in einer Schleife so lange
Produkt-Objekte und fügen Sie diese in die ProduktgruppenAundBein, bis beide Produktgruppen jeweils genau10Produkte enthalten. - Beachten Sie, dass die meisten Produkt-Objekte, die erzeugt werden, gar nicht eingefügt werden. Entweder, weil deren
codeweder mitAnoch mitBbeginnt oder weil sie bereits in der ProduktgruppeAoderBenthalten sind oder weil die entsprechende Produktgruppe bereits „voll“ ist. - Die Schleife wird beendet, sobald beide Produktgruppen „voll“ sind (jeweils
10Produkte enthalten). -
Geben Sie danach beide Produktgruppen aus (zufällige Beispielwerte):
----------------- Produktgruppe A Anzahl: 10 65300097 65,30 Euro AAJH 47910971 47,91 Euro AJHB 54670624 54,67 Euro AGCE 24670796 24,67 Euro AHJG 88720102 88,72 Euro ABAC 65710294 65,71 Euro ACJE 62720994 62,72 Euro AJJE 85260450 85,26 Euro AEFA 58780851 58,78 Euro AIFB 77570265 77,57 Euro ACGF ----------------- ----------------- Produktgruppe B Anzahl: 10 73541548 73,54 Euro BFEI 64251775 64,25 Euro BHHF 76401485 76,40 Euro BEIF 37121451 37,12 Euro BEFB 32961676 32,96 Euro BGHG 89731572 89,73 Euro BFHC 70431224 70,43 Euro BCCE 52921559 52,92 Euro BFFJ 58991433 58,99 Euro BEDD 42611284 42,61 Euro BCIE -----------------
- Erstellen Sie in einer Schleife so lange
-
-
(Teil 3) Erstellen Sie eine Klasse
Lagermit-
den privaten Objektvariablen
lagervom TypProduktgruppe[]undkapazitaetvom Typint(größtmögliche Anzahl von Produkten im Lager).
-
Erstellen Sie für die Klasse Lager einen parametrisierten Konstruktor Lager(int kapazitaet). Der Parameterwert wird verwendet, um der Objektvariablen kapazitaet einen Wert zuzuweisen. Außerdem wird das lager-Array mit der Länge 10 erzeugt. Befüllen Sie das lager-Array mit den Produktgruppen-Objekten A bis J, d.h. das erste Element im lager-Array zeigt auf das Produktgruppe-Objekt A, das zweite auf das Produktgruppe-Objekt B usw.
-
Erstellen Sie eine Objektmethode fuellen(). Diese Methode gibt nichts zurück. In dieser Methode werden kapazitaet viele Produkt-Objekte erzeugt und diese Produkt-Objekte in die Produktgruppen in lager eingefügt. Verwenden Sie zum Einfügen die Objektmethode einfuegen(Produkt) aus der Klasse Produktgruppe.
Beachten Sie: am Ende sollen kapazität viele Produkte im Lager sein. Wenn Sie ein Produkt erzeugen, können Sie es prinzipiell allen Produktgruppen hinzufügen, denn das Hinzufügen ist ja nur bei der Produktgruppe erfolgreich, die das passende kennzeichen hat. -
Erstellen Sie eine Objektmethode print(), die alle Produktgruppen aus dem lager-Array auf die Konsole ausgibt.
-
Erstellen Sie eine Objektmethode produktgruppeMitDenMeistenProdukten(). Diese Methode gibt die Produktgruppe aus dem lager-Array zurück, welche die meisten Produkte enthält.
-
Erstellen Sie eine Objektmethode billigstesProdukt(). Diese Methode gibt das Produkt aus dem gesamten lager-Array zurück, das den geringsten Preis von allen hat.
-
Erzeugen Sie in der main()-Methode der Programmklasse ein Lager-Objekt mit dem Parameterwert 50.
-
Befüllen Sie das Lager-Objekt mithilfe der Methode fuellen() und geben Sie es mithilfe von print() aus (zufällige Beispielwerte):
----------------- Produktgruppe A Anzahl: 5 81530793 81,53 Euro AHJD 47370387 47,37 Euro ADIH 67750984 67,75 Euro AJIE 82940201 82,94 Euro ACAB 88270574 88,27 Euro AFHE ----------------- ----------------- Produktgruppe B Anzahl: 5 13051709 13,05 Euro BHAJ 72061661 72,06 Euro BGGB 60111349 60,11 Euro BDEJ 51931137 51,93 Euro BBDH 90881647 90,88 Euro BGEH ----------------- ----------------- Produktgruppe C Anzahl: 3 71872170 71,87 Euro CBHA 26982074 26,98 Euro CAHE 79032470 79,03 Euro CEHA ----------------- ----------------- Produktgruppe D Anzahl: 7 77193585 77,19 Euro DFIF 35983109 35,98 Euro DBAJ 20313080 20,31 Euro DAIA 86093082 86,09 Euro DAIC 41883886 41,88 Euro DIIG 51103455 51,10 Euro DEFF 71353002 71,35 Euro DAAC ----------------- ----------------- Produktgruppe E Anzahl: 6 62374914 62,37 Euro EJBE 95954960 95,95 Euro EJGA 11804488 11,80 Euro EEII 79574003 79,57 Euro EAAD 87084361 87,08 Euro EDGB 37804191 37,80 Euro EBJB ----------------- ----------------- Produktgruppe F Anzahl: 4 41795426 41,79 Euro FECG 94345512 94,34 Euro FFBC 16055839 16,05 Euro FIDJ 96565390 96,56 Euro FDJA ----------------- ----------------- Produktgruppe G Anzahl: 3 94946327 94,94 Euro GDCH 65536904 65,53 Euro GJAE 31006786 31,00 Euro GHIG ----------------- ----------------- Produktgruppe H Anzahl: 4 64707668 64,70 Euro HGGI 11957550 11,95 Euro HFFA 79047293 79,04 Euro HCJD 85057454 85,05 Euro HEFE ----------------- ----------------- Produktgruppe I Anzahl: 8 57408724 57,40 Euro IHCE 26408714 26,40 Euro IHBE 11118773 11,11 Euro IHHD 64038221 64,03 Euro ICCB 20578532 20,57 Euro IFDC 82238986 82,23 Euro IJIG 35148126 35,14 Euro IBCG 73748018 73,74 Euro IABI ----------------- ----------------- Produktgruppe J Anzahl: 5 52249267 52,24 Euro JCGH 15129449 15,12 Euro JEEJ 21219816 21,21 Euro JIBG 96469515 96,46 Euro JFBF 56669411 56,66 Euro JEBB ----------------- -
Rufen Sie die produktgruppeMitDenMeistenProdukten()-Methode auf und geben Sie die zurückgegebene Produktgruppe aus (Beispielwerte):
-
Rufen Sie die billigstesProdukt ()-Methode auf und geben Sie das zurückgegebene Produkt aus (Beispielwerte):
-
-
-
Zur Kontrolle: Die möglichen Ausgaben (Beispielwerte) könnten sein:
------------------------- Teil 1 Produkt -------------------------- 12181268 12,18 Euro BCGI 24708077 24,70 Euro IAHH 60117886 60,11 Euro HIIG 80346223 80,34 Euro GCCD 27118770 27,11 Euro IHHA -------------------- Teil 2 Produktgruppe ------------------------ ----------------- Produktgruppe A Anzahl: 10 65300097 65,30 Euro AAJH 47910971 47,91 Euro AJHB 54670624 54,67 Euro AGCE 24670796 24,67 Euro AHJG 88720102 88,72 Euro ABAC 65710294 65,71 Euro ACJE 62720994 62,72 Euro AJJE 85260450 85,26 Euro AEFA 58780851 58,78 Euro AIFB 77570265 77,57 Euro ACGF ----------------- ----------------- Produktgruppe B Anzahl: 10 73541548 73,54 Euro BFEI 64251775 64,25 Euro BHHF 76401485 76,40 Euro BEIF 37121451 37,12 Euro BEFB 32961676 32,96 Euro BGHG 89731572 89,73 Euro BFHC 70431224 70,43 Euro BCCE 52921559 52,92 Euro BFFJ 58991433 58,99 Euro BEDD 42611284 42,61 Euro BCIE ----------------------- Teil 3 Lager ------------------------ ----------------- Produktgruppe A Anzahl: 5 81530793 81,53 Euro AHJD 47370387 47,37 Euro ADIH 67750984 67,75 Euro AJIE 82940201 82,94 Euro ACAB 88270574 88,27 Euro AFHE ----------------- ----------------- Produktgruppe B Anzahl: 5 13051709 13,05 Euro BHAJ 72061661 72,06 Euro BGGB 60111349 60,11 Euro BDEJ 51931137 51,93 Euro BBDH 90881647 90,88 Euro BGEH ----------------- ----------------- Produktgruppe C Anzahl: 3 71872170 71,87 Euro CBHA 26982074 26,98 Euro CAHE 79032470 79,03 Euro CEHA ----------------- ----------------- Produktgruppe D Anzahl: 7 77193585 77,19 Euro DFIF 35983109 35,98 Euro DBAJ 20313080 20,31 Euro DAIA 86093082 86,09 Euro DAIC 41883886 41,88 Euro DIIG 51103455 51,10 Euro DEFF 71353002 71,35 Euro DAAC ----------------- ----------------- Produktgruppe E Anzahl: 6 62374914 62,37 Euro EJBE 95954960 95,95 Euro EJGA 11804488 11,80 Euro EEII 79574003 79,57 Euro EAAD 87084361 87,08 Euro EDGB 37804191 37,80 Euro EBJB ----------------- ----------------- Produktgruppe F Anzahl: 4 41795426 41,79 Euro FECG 94345512 94,34 Euro FFBC 16055839 16,05 Euro FIDJ 96565390 96,56 Euro FDJA ----------------- ----------------- Produktgruppe G Anzahl: 3 94946327 94,94 Euro GDCH 65536904 65,53 Euro GJAE 31006786 31,00 Euro GHIG ----------------- ----------------- Produktgruppe H Anzahl: 4 64707668 64,70 Euro HGGI 11957550 11,95 Euro HFFA 79047293 79,04 Euro HCJD 85057454 85,05 Euro HEFE ----------------- ----------------- Produktgruppe I Anzahl: 8 57408724 57,40 Euro IHCE 26408714 26,40 Euro IHBE 11118773 11,11 Euro IHHD 64038221 64,03 Euro ICCB 20578532 20,57 Euro IFDC 82238986 82,23 Euro IJIG 35148126 35,14 Euro IBCG 73748018 73,74 Euro IABI ----------------- ----------------- Produktgruppe J Anzahl: 5 52249267 52,24 Euro JCGH 15129449 15,12 Euro JEEJ 21219816 21,21 Euro JIBG 96469515 96,46 Euro JFBF 56669411 56,66 Euro JEBB ----------------- ----------------------- Teil 3 Lager – Produktgruppe mit den meisten Produkten ------------------------ ----------------- Produktgruppe I Anzahl: 8 57408724 57,40 Euro IHCE 26408714 26,40 Euro IHBE 11118773 11,11 Euro IHHD 64038221 64,03 Euro ICCB 20578532 20,57 Euro IFDC 82238986 82,23 Euro IJIG 35148126 35,14 Euro IBCG 73748018 73,74 Euro IABI ----------------- ----------------------- Teil 3 Lager – billigstes Produkt ------------------------ 11118773 11,11 Euro IHHD
Eine mögliche Lösung für Produkt
package klausurvorbereitung.produkt;
public class Programmklasse
{
public static void main(String[] args)
{
System.out.printf("%n%n---------------------------- Testen von Produkt --------------------------------%n%n");
Produkt p1 = new Produkt();
for(int i = 0; i < 20; i++) {
int nummer = p1.erzeuge8stelligeNummer();
double preis = p1.erzeugePreis(nummer);
String code = p1.erzeugeCode(nummer);
System.out.printf("%8d %.2f Euro %s %n", nummer, preis, code);
}
System.out.printf("%n%n------------------------- Testen von Produktgruppe -----------------------------%n%n");
Produktgruppe pgA = new Produktgruppe('A');
Produktgruppe pgB = new Produktgruppe('B');
final int LIMIT = 10;
boolean pgAVoll = pgA.getAnzahl() == LIMIT;
boolean pgBVoll = pgB.getAnzahl() == LIMIT;
boolean beideVoll = pgAVoll && pgBVoll;
while(!beideVoll) {
Produkt p = new Produkt();
// p.print();
if(!pgAVoll) {
// if(pgA.einfuegen(p)) pgA.print(); // variante mit ausdrucken
pgA.einfuegen(p); // ohne ausdrucken
}
if(!pgBVoll) {
// if(pgB.einfuegen(p)) pgB.print(); // mit ausdruck zum testen
pgB.einfuegen(p); // ohne ausdruck
}
pgAVoll = pgA.getAnzahl() == LIMIT;
pgBVoll = pgB.getAnzahl() == LIMIT;
beideVoll = pgAVoll && pgBVoll;
}
pgA.print();
pgB.print();
/*
* nicht in der Klausur verlangt
*/
Produktgruppe pgC = new Produktgruppe('C', 10);
//pgC.print();
System.out.printf("%n%n---------------------------- Testen von Lager --------------------------------%n%n");
Lager l1 = new Lager(50);
l1.fuellen();
l1.print();
System.out.printf("%n%n---------- Produktgruppe mit den meisten Produkten in Lager ------------------%n%n");
Produktgruppe pg = l1.produktgruppeMitDenMeistenProdukten();
pg.print();
System.out.printf("%n%n------------------------ billigstes Produkt in Lager -------------------------%n%n");
Produkt p = l1.billigstesProdukt();
p.print();
}
}
package klausurvorbereitung.produkt;
import java.util.Random;
public class Produkt
{
private int nummer;
private double preis;
private String code;
public int erzeuge8stelligeNummer() {
Random r = new Random();
int number = r.nextInt(90000000) + 10000000;
return number;
}
public double erzeugePreis(int nummer) {
double ersten4Ziffern = nummer / 10000;
double preis = ersten4Ziffern / 100.0;
return preis;
}
public String erzeugeCode(int nummer) {
int letzten4Ziffern = nummer % 10000;
int nr = letzten4Ziffern;
String code = "";
final int ASCII_A = 65;
while(nr > 0) {
int rest = nr % 10;
int asciiCode = ASCII_A + rest;
char buchstabe = (char)asciiCode;
code = buchstabe + code;
nr = nr / 10;
}
while(code.length() < 4) {
code = "A" + code;
}
return code;
}
public Produkt() {
this.nummer = this.erzeuge8stelligeNummer();
this.code = this.erzeugeCode(this.nummer);
this.preis = this.erzeugePreis(this.nummer);
}
public String toString() {
String s = String.format("%8d %.2f Euro %s ", this.nummer, this.preis, this.code);
return s;
}
public void print() {
System.out.println(this.toString());
}
public boolean istTeurer(Produkt p) {
return this.preis > p.preis;
}
public String getCode() {
return this.code;
}
}
package klausurvorbereitung.produkt;
public class Produktgruppe
{
Produkt[] gruppe;
char kennzeichen;
Produktgruppe(char kennzeichen) {
this.gruppe = new Produkt[0];
this.kennzeichen = kennzeichen;
}
Produktgruppe(char kennzeichen, int anzahl) {
this.gruppe = new Produkt[0];
this.kennzeichen = kennzeichen;
while(this.gruppe.length < anzahl) {
this.einfuegen(new Produkt());
}
}
public boolean enthalten(Produkt p) {
for(int index = 0; index < this.gruppe.length; index++) {
if(this.gruppe[index].getCode().equals(p.getCode())) return true;
}
return false;
}
public boolean einfuegen(Produkt p) {
String code = p.getCode();
char pKennzeichen = code.charAt(0);
if(pKennzeichen == this.kennzeichen && !this.enthalten(p)) {
Produkt[] neueGruppe = new Produkt[this.gruppe.length + 1];
for(int index = 0; index < this.gruppe.length; index++) {
neueGruppe[index] = this.gruppe[index];
}
neueGruppe[this.gruppe.length] = p;
this.gruppe = neueGruppe;
return true;
} else {
return false;
}
}
public int getAnzahl() {
return this.gruppe.length;
}
public Produkt getProdukt(int index) {
if(index < 0 || index >= this.getAnzahl()) {
return null;
} else {
return this.gruppe[index];
}
}
public void print() {
System.out.printf("%n-----------------%nProduktgruppe %c Anzahl: %d %n%n", this.kennzeichen, this.getAnzahl());
for(int index = 0; index < this.gruppe.length; index++) {
this.gruppe[index].print();
}
System.out.printf("%n-----------------%n");
}
}
package klausurvorbereitung.produkt;
public class Lager
{
int kapazitaet;
Produktgruppe[] lager;
Lager(int kapazitaet) {
this.kapazitaet = kapazitaet;
this.lager = new Produktgruppe[10];
char kennzeichen = 'A';
for(int index = 0; index < 10; index++) {
this.lager[index] = new Produktgruppe(kennzeichen);
kennzeichen++;
}
}
public void fuellen() {
for(int anzahl = 0; anzahl < this.kapazitaet; anzahl++) {
Produkt p = new Produkt();
for(int index = 0; index < 10; index++) {
this.lager[index].einfuegen(p);
}
}
}
public void print() {
for(int index = 0; index < 10; index++) {
this.lager[index].print();
}
}
public Produktgruppe produktgruppeMitDenMeistenProdukten() {
Produktgruppe pg = this.lager[0];
for(int index = 1; index < 10; index++) {
if(this.lager[index].getAnzahl() > pg.getAnzahl()) {
pg = this.lager[index];
}
}
return pg;
}
public Produkt billigstesProdukt() {
Produkt p = this.lager[0].getProdukt(0);
for(int indexPG = 0; indexPG < 10; indexPG++) {
for(int indexP = 0; indexP < this.lager[indexPG].getAnzahl(); indexP++) {
if(p.istTeurer(this.lager[indexPG].getProdukt(indexP))) {
p = this.lager[indexPG].getProdukt(indexP);
}
}
}
return p;
}
}
Fahrzeug (pdf)
- Erstellen Sie ein package
klausurvorbereitung.fahrzeug. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
Fahrzeugmit-
den privaten Objektvariablen
markevom TypString,kmStandvom Typint(AKilometerstand des Fahrzeugs),maxVvom Typint(Höchstgeschwindigkeit des Fahrzeugs) undverbrauchvom Typdouble(AVerbrauch in Litern pro 100km). -
Erstellen Sie für die Klasse
Fahrzeugeinen parametrisierten Konstruktor, dem die Parametermarke,maxVundverbrauchübergeben werden. Mit den Parameterwerten werden die entsprechenden Objektvariablen initialisiert. Die ObjektvariablekmStandwird mit dem Wert0initialisiert. -
Erstellen Sie eine Methode
fahren(). Diese Methode gibt nichts zurück. In dieser Methode wird eine Zufallszahl aus dem Wertebereich0…999erzeugt, also potenziell1000verschiedene Zahlen. Diese Zufallszahl entspricht einer Reise und wird demkmStandhinzuaddiert. -
Erstellen Sie eine Objektmethode
gesamtverbrauch(), die eindoublezurückgibt. In dieser Methode wird der bisherige Gesamtverbrauch ermittelt, d.h. es soll mithilfe vonverbrauch(Liter auf 100 Kilometer) berechnet werden, wieviel für den bisherigenkmStandinsgesamt verbraucht wurde. Beachten Sie, dass Ihnen insbesondere beim Dividieren durch100keine Informationen verloren gehen. -
Erstellen Sie für alle Objektvariablen Getter, also
getMarke(),getKmStand(),getMaxV()undgetVerbrauch(). -
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte):Beachten Sie:
Bist die marke des Fahrzeugs. Reservieren Sie- für die Marke 4 Zeichen,
- für die Höchstgeschwindigkeit 3 Zeichen (dann kommt
km/h), - für den Verbrauch insgesamt 4 Zeichen, davon 1 Nachkommastelle (dann kommt
l/100km), - für den Kilometerstand 7 Zeichen (dann kommt
km) und - für den Gesamtverbrauch insgesamt 8 Zeichen, davon 2 Nachkommastellen (dann kommt
l).
-
Erstellen Sie eine Objektmethode
print(), die den vontoString()erzeugtenStringauf die Konsole ausgibt. -
Überschreiben Sie die Methode
equals(Object o)so, dass zwei Fahrzeuge gleich sind, wenn sie dieselbemarkeund denselbenkmStandhaben. -
Erstellen Sie eine
Programmklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode einArray, in dem alle Elemente vom TypFahrzeugsind. DasArraysoll die Länge 4 haben. Befüllen Sie diesesArraymit vier Fahrzeug-Objekten mit den folgenden Werten für die Objektvariablen (marke,maxV,verbrauch):Geben Sie in einer Schleife alle vier Fahrzeug-Objekte auf die Konsole unter Verwendung der
print()-Methode aus. Es entsteht folgende Ausgabe: -
Erweitern Sie die
main()-Methode wie folgt: In einer Schleife sollen insgesamt100Fahrten durchgeführt werden. Es wird zufällig ausgewählt, für welches der Fahrzeuge aus dem obigen Array jeweils die Methodefahren()aufgerufen wird.Rufen Sie danach erneut die
print()-Methode in einer Schleife für alle Fahrzeuge aus dem Array auf. Es entsteht folgende Ausgabe (Beispielwerte – zufällig!):
-
-
(Teil 2)
-
Erstellen Sie eine Klasse
Auto. Diese Klasse erbt vonFahrzeug. Dem Konstruktor werden die ParameterString marke, int maxV, double verbrauchübergeben. -
Erstellen Sie eine Klasse
LKW. Diese Klasse erbt vonFahrzeug. Dem Konstruktor wird nur der Parameterdouble verbrauchübergeben. Diemarkeist bei einemLKWstets"LKW"und die Höchstgeschwindigkeit (maxV) ist stets100. -
Erstellen Sie eine Klasse
Fuhrpark. Objektvariablen sindfuhrparkvom TypFahrzeug[],anzahlvom Typint(Anzahl der Fahrzeuge im Fuhrpark ).
Die Objektvariablen sind nur innerhalb der Klasse sichtbar!
-
Erstellen Sie für die Klasse
Fuhrparkeinen parametrisierten Konstruktor, dem einint-Wertgroesseübergeben wird. Dieser Wert entspricht der Länge des zu erzeugenden Arraysfuhrpark. Der Wert fürgroessesteht also für die maximal mögliche Anzahl von Fahrzeugen im Fuhrpark, während der Wertanzahlfür die tatsächliche Anzahl von Fahrzeugen im Fuhrpark steht. Das Array wird innerhalb des Konstruktors erzeugt. Der Wert füranzahlist bei Objekterzeugung stets 0. -
Erstellen Sie eine Objektmethode
fahrzeugKaufen(). Diese Methode gibt nichts zurück.- In der Methode wird eine Zufallszahl aus dem Wertebereich
50…449erzeugt (also potenziell400verschiedene Zufallszahlen). -
Ist die erzeugte Zufallszahl kleiner oder gleich
250, dann wirdfuhrparkeinAuto-Objekt hinzugefügt.- Die
markedesAuto-Objektes ergibt sich aus dem BuchstabenAgefolgt vom aktuellen Wert vonanzahl, also z.B.A1,A2,A3, … - Der Wert für
maxVentspricht dem Wert der Zufallszahl, - Der Wert für
verbrauchentspricht der Zufallszahl geteilt durch10(achten Sie aber darauf, einedouble-Divsion durchzuführen!)
- Die
-
Ist die erzeugte Zufallszahl größer als
250, dann wirdfuhrparkeinLKW-Objekt hinzugefügt.- Der Wert für
verbrauchentspricht der Zufallszahl geteilt durch10(achten Sie aber darauf, einedouble-Divsion durchzuführen!)
- Der Wert für
-
Durch das Hinzufügen eines Fahrzeugs (
AutooderLKW) erhöht sich der Wert vonanzahlimmer um1.
- In der Methode wird eine Zufallszahl aus dem Wertebereich
-
Erstellen Sie eine Objektmethode
fahrzeugKaufen(Fahrzeug fahrzeug). Diese Methode gibt nichts zurück. In dieser Methode wird dasfahrzeugdemfuhrparkhinzugefügt. Achten Sie darauf, auchanzahlenstprechend zu erhöhen. -
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte – nach dem Hinzufügen von 15 Fahrzeugen):Im Fuhrpark sind 15 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 0km 0,00l LKW 100km/h 32,9l/100km 0km 0,00l A2 201km/h 20,1l/100km 0km 0,00l LKW 100km/h 43,6l/100km 0km 0,00l LKW 100km/h 39,8l/100km 0km 0,00l A5 195km/h 19,5l/100km 0km 0,00l LKW 100km/h 39,2l/100km 0km 0,00l LKW 100km/h 31,3l/100km 0km 0,00l A8 214km/h 21,4l/100km 0km 0,00l A9 155km/h 15,5l/100km 0km 0,00l A10 241km/h 24,1l/100km 0km 0,00l LKW 100km/h 40,2l/100km 0km 0,00l LKW 100km/h 28,5l/100km 0km 0,00l A13 73km/h 7,3l/100km 0km 0,00l LKW 100km/h 35,3l/100km 0km 0,00l ------------------------------ Es erscheint also zunächst
Im Fuhrpark sind 15 Fahrzeuge :, wobei15dem aktuellen Wert vonanzahlentspricht, - dann eine Linie, Länge egal,
- dann kommen alle Fahrzeuge aus dem
fuhrpark-Array, - dann wieder eine Linie, Länge egal.
- Es erscheint also zunächst
-
Erzeugen Sie in der
main()-Methode der Programmklasse ein Objekt von Fuhrpark. Übergeben Sie als Parameterwert die20.- Geben Sie das Fuhrpark-Objekt unter Verwendung der
toString()-Methode auf die Konsole aus. - Rufen Sie für das Fuhrpark-Objekt die Methode
fahrzeugKaufen()in einer Schleife15Mal auf. - Fügen Sie mithilfe der
fahrzeugKaufen(Fahrzeug)-Methode einAutound einenLKWdem Fuhrpark-Objekt hinzu. - Geben Sie danach das Fuhrpark-Objekt erneut auf die Konsole aus.
-
Es entstehen folgende Ausgaben (Beispielwerte):
Im Fuhrpark sind 0 Fahrzeuge : ----------------------------- ----------------------------- Im Fuhrpark sind 17 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 0km 0,00l LKW 100km/h 32,9l/100km 0km 0,00l A2 201km/h 20,1l/100km 0km 0,00l LKW 100km/h 43,6l/100km 0km 0,00l LKW 100km/h 39,8l/100km 0km 0,00l A5 195km/h 19,5l/100km 0km 0,00l LKW 100km/h 39,2l/100km 0km 0,00l LKW 100km/h 31,3l/100km 0km 0,00l A8 214km/h 21,4l/100km 0km 0,00l A9 155km/h 15,5l/100km 0km 0,00l A10 241km/h 24,1l/100km 0km 0,00l LKW 100km/h 40,2l/100km 0km 0,00l LKW 100km/h 28,5l/100km 0km 0,00l A13 73km/h 7,3l/100km 0km 0,00l LKW 100km/h 35,3l/100km 0km 0,00l B 200km/h 8,5l/100km 0km 0,00l LKW 100km/h 35,5l/100km 0km 0,00l -----------------------------
- Geben Sie das Fuhrpark-Objekt unter Verwendung der
-
Erstellen Sie in der Klasse
Fuhrparkeine ObjektmethodereisenImMonat(int anzahlReisen). Diese Methode gibt nichts zurück. Der Wert des ParametersanzahlReisengibt an, wieviele Fahrten im Fuhrpark durchgeführt werden, d.h. wie oft die Methodefahren()insgesamt aufgerufen wird.Für welches Fahrzeug aus dem Fuhrpark die Methode
fahren()jeweils aufgerufen wird, wird zufällig erzeugt! Achten Sie darauf, die Zufallszahl so zu erzeugen, dass Sie den Wert vonanzahlberücksichtigen! -
Rufen Sie in der
main()-Methode die MethodereisenImMonat(75)für dasFuhrpark-Objekt auf und geben Sie danach dasFuhrpark-Objekt erneut auf die Konsole aus. Es entstehen folgende Ausgaben (Beispielwerte):Im Fuhrpark sind 17 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 1002km 260,52l LKW 100km/h 32,9l/100km 3964km 1304,16l A2 201km/h 20,1l/100km 4792km 963,19l LKW 100km/h 43,6l/100km 1540km 671,44l LKW 100km/h 39,8l/100km 2720km 1082,56l A5 195km/h 19,5l/100km 1647km 321,17l LKW 100km/h 39,2l/100km 1496km 586,43l LKW 100km/h 31,3l/100km 5086km 1591,92l A8 214km/h 21,4l/100km 1649km 352,89l A9 155km/h 15,5l/100km 1863km 288,77l A10 241km/h 24,1l/100km 2723km 656,24l LKW 100km/h 40,2l/100km 2303km 925,81l LKW 100km/h 28,5l/100km 1031km 293,84l A13 73km/h 7,3l/100km 1455km 106,22l LKW 100km/h 35,3l/100km 2902km 1024,41l B 200km/h 8,5l/100km 2121km 180,29l LKW 100km/h 35,5l/100km 912km 323,76l ----------------------------- -
Erstellen Sie in der Klasse
Fuhrparkeine ObjektmethodealleLKWs(). Diese Methode gibt ein neuesFuhrpark-Objekt zurück. In dem neuenFuhrpark-Objekt werden alle Fahrzeuge aus dem aufrufendenFuhrpark-Objekt übernommen, die vom (Laufzeit-)TypLKWsind. Verwenden Sie dazu die ObjektmethodefahrzeugKaufen(Fahrzeug). -
Rufen Sie in der
main()-Methode die MethodealleLKWs()auf und lassen Sie sich zurückgegebeneFuhrpark-Objekt auf die Konsole ausgeben. Beispielwerte (zufällig):Im Fuhrpark sind 10 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 1002km 260,52l LKW 100km/h 32,9l/100km 3964km 1304,16l LKW 100km/h 43,6l/100km 1540km 671,44l LKW 100km/h 39,8l/100km 2720km 1082,56l LKW 100km/h 39,2l/100km 1496km 586,43l LKW 100km/h 31,3l/100km 5086km 1591,92l LKW 100km/h 40,2l/100km 2303km 925,81l LKW 100km/h 28,5l/100km 1031km 293,84l LKW 100km/h 35,3l/100km 2902km 1024,41l LKW 100km/h 35,5l/100km 912km 323,76l ----------------------------- -
Erstellen Sie in
Fuhrparkeine ObjektmethodemeistenKm(), die dasFahrzeugaus demfuhrparkzurückgibt, das den höchstenkmStandhat. Sie können davon ausgehen, dass mindestens einFahrzeugimfuhrparkist.Rufen Sie diese Methode in der
main()-Methode auf und geben Sie das Fahrzeug auf der Konsole aus. Beispielwerte: -
Erstellen Sie in Fuhrpark eine Objektmethode
hoechsterGesamtverbrauchAuto(), die dasFahrzeugaus demfuhrparkzurückgibt, das bisher den höchsten Gesamtverbrauch hat. Es sollen nur die Objekte vom (Laufzeit-)TypAutobewertet werden! Sie können davon ausgehen, dass mindestens einAutoimfuhrparkist.Rufen Sie diese Methode in der main()-Methode auf und geben Sie das Fahrzeug auf der Konsole aus. Beispielwerte:
-
Erstellen Sie in
Fuhrparkeine ObjektmethodefahrzeugLoeschen(Fahrzeug fahrzeug). Die Methode gibttruezurück, wennfahrzeugaus demfuhrparkgelöscht wurde undfalsesonst.Beachten Sie für den Fall des Löschens, dass alle nachfolgenden Fahrzeuge in
fuhrparkum eine Stelle im Array nach links rücken! Vergessen Sie auch nicht, den Wert vonanzahlfür den Löschfall zu verringern.Rufen Sie diese Methode in der
main()-Methode auf und übergeben Sie einFahrzeug-Objekt, das infuhrparkvorkommt (siehe z.B. oben die beiden Objekte, die mithilfe derfahrzeugKaufen(Fahrzeug)-Methode hinzugefügt wurden). Geben Sie dasFuhrpark-Objekt erneut aus:Im Fuhrpark sind 16 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 1002km 260,52l LKW 100km/h 32,9l/100km 3964km 1304,16l A2 201km/h 20,1l/100km 4792km 963,19l LKW 100km/h 43,6l/100km 1540km 671,44l LKW 100km/h 39,8l/100km 2720km 1082,56l A5 195km/h 19,5l/100km 1647km 321,17l LKW 100km/h 39,2l/100km 1496km 586,43l LKW 100km/h 31,3l/100km 5086km 1591,92l A8 214km/h 21,4l/100km 1649km 352,89l A9 155km/h 15,5l/100km 1863km 288,77l A10 241km/h 24,1l/100km 2723km 656,24l LKW 100km/h 40,2l/100km 2303km 925,81l LKW 100km/h 28,5l/100km 1031km 293,84l A13 73km/h 7,3l/100km 1455km 106,22l LKW 100km/h 35,3l/100km 2902km 1024,41l LKW 100km/h 35,5l/100km 912km 323,76l -----------------------------
-
-
Zur Kontrolle: Die möglichen Ausgaben (Beispielwerte) könnten sein:
-------------------- Teil 1 ------------------------- A 250km/h 10,0l/100km 0km 0,00l B 200km/h 8,5l/100km 0km 0,00l C 160km/h 6,5l/100km 0km 0,00l D 180km/h 7,0l/100km 0km 0,00l ---- fahren ---- A 250km/h 10,0l/100km 11323km 1132,30l B 200km/h 8,5l/100km 10202km 867,17l C 160km/h 6,5l/100km 10079km 655,14l D 180km/h 7,0l/100km 15939km 1115,73l -------------------- Teil 2 ------------------------- Im Fuhrpark sind 0 Fahrzeuge : ----------------------------- ----------------------------- ---- 15 fahrzeuge kaufen ---- Im Fuhrpark sind 15 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 0km 0,00l LKW 100km/h 32,9l/100km 0km 0,00l A2 201km/h 20,1l/100km 0km 0,00l LKW 100km/h 43,6l/100km 0km 0,00l LKW 100km/h 39,8l/100km 0km 0,00l A5 195km/h 19,5l/100km 0km 0,00l LKW 100km/h 39,2l/100km 0km 0,00l LKW 100km/h 31,3l/100km 0km 0,00l A8 214km/h 21,4l/100km 0km 0,00l A9 155km/h 15,5l/100km 0km 0,00l A10 241km/h 24,1l/100km 0km 0,00l LKW 100km/h 40,2l/100km 0km 0,00l LKW 100km/h 28,5l/100km 0km 0,00l A13 73km/h 7,3l/100km 0km 0,00l LKW 100km/h 35,3l/100km 0km 0,00l ----------------------------- ---- 2 weitere fahrzeuge kaufen ---- Im Fuhrpark sind 17 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 0km 0,00l LKW 100km/h 32,9l/100km 0km 0,00l A2 201km/h 20,1l/100km 0km 0,00l LKW 100km/h 43,6l/100km 0km 0,00l LKW 100km/h 39,8l/100km 0km 0,00l A5 195km/h 19,5l/100km 0km 0,00l LKW 100km/h 39,2l/100km 0km 0,00l LKW 100km/h 31,3l/100km 0km 0,00l A8 214km/h 21,4l/100km 0km 0,00l A9 155km/h 15,5l/100km 0km 0,00l A10 241km/h 24,1l/100km 0km 0,00l LKW 100km/h 40,2l/100km 0km 0,00l LKW 100km/h 28,5l/100km 0km 0,00l A13 73km/h 7,3l/100km 0km 0,00l LKW 100km/h 35,3l/100km 0km 0,00l B 200km/h 8,5l/100km 0km 0,00l LKW 100km/h 35,5l/100km 0km 0,00l ----------------------------- ---- reisenImMonat(75) ---- Im Fuhrpark sind 17 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 1002km 260,52l LKW 100km/h 32,9l/100km 3964km 1304,16l A2 201km/h 20,1l/100km 4792km 963,19l LKW 100km/h 43,6l/100km 1540km 671,44l LKW 100km/h 39,8l/100km 2720km 1082,56l A5 195km/h 19,5l/100km 1647km 321,17l LKW 100km/h 39,2l/100km 1496km 586,43l LKW 100km/h 31,3l/100km 5086km 1591,92l A8 214km/h 21,4l/100km 1649km 352,89l A9 155km/h 15,5l/100km 1863km 288,77l A10 241km/h 24,1l/100km 2723km 656,24l LKW 100km/h 40,2l/100km 2303km 925,81l LKW 100km/h 28,5l/100km 1031km 293,84l A13 73km/h 7,3l/100km 1455km 106,22l LKW 100km/h 35,3l/100km 2902km 1024,41l B 200km/h 8,5l/100km 2121km 180,29l LKW 100km/h 35,5l/100km 912km 323,76l ----------------------------- ---- alleLKWs ---- Im Fuhrpark sind 10 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 1002km 260,52l LKW 100km/h 32,9l/100km 3964km 1304,16l LKW 100km/h 43,6l/100km 1540km 671,44l LKW 100km/h 39,8l/100km 2720km 1082,56l LKW 100km/h 39,2l/100km 1496km 586,43l LKW 100km/h 31,3l/100km 5086km 1591,92l LKW 100km/h 40,2l/100km 2303km 925,81l LKW 100km/h 28,5l/100km 1031km 293,84l LKW 100km/h 35,3l/100km 2902km 1024,41l LKW 100km/h 35,5l/100km 912km 323,76l ----------------------------- ---- meisten kilometer ---- LKW 100km/h 31,3l/100km 5086km 1591,92l ---- hoechster gesamtverbrauch auto ---- A2 201km/h 20,1l/100km 4792km 963,19l ---- fahrzeug loeschen ---- Im Fuhrpark sind 16 Fahrzeuge : ----------------------------- LKW 100km/h 26,0l/100km 1002km 260,52l LKW 100km/h 32,9l/100km 3964km 1304,16l A2 201km/h 20,1l/100km 4792km 963,19l LKW 100km/h 43,6l/100km 1540km 671,44l LKW 100km/h 39,8l/100km 2720km 1082,56l A5 195km/h 19,5l/100km 1647km 321,17l LKW 100km/h 39,2l/100km 1496km 586,43l LKW 100km/h 31,3l/100km 5086km 1591,92l A8 214km/h 21,4l/100km 1649km 352,89l A9 155km/h 15,5l/100km 1863km 288,77l A10 241km/h 24,1l/100km 2723km 656,24l LKW 100km/h 40,2l/100km 2303km 925,81l LKW 100km/h 28,5l/100km 1031km 293,84l A13 73km/h 7,3l/100km 1455km 106,22l LKW 100km/h 35,3l/100km 2902km 1024,41l LKW 100km/h 35,5l/100km 912km 323,76l -----------------------------
Eine mögliche Lösung für Fahrzeug
package klausurvorbereitung.fahrzeug;
import java.util.Random;
public class Programmklasse
{
public static void main(String[] args)
{
System.out.printf("%n%n-------------------- Teil 1 -------------------------%n%n");
Fahrzeug[] fuhrpark1 = new Fahrzeug[4];
fuhrpark1[0] = new Fahrzeug("A", 250, 10.0);
fuhrpark1[1] = new Fahrzeug("B", 200, 8.5);
fuhrpark1[2] = new Fahrzeug("C", 160, 6.5);
fuhrpark1[3] = new Fahrzeug("D", 180, 7.0);
for(int index = 0; index < fuhrpark1.length; index++) {
fuhrpark1[index].print();
}
System.out.printf("%n---- fahren ----%n%n");
for(int fahrten = 0; fahrten < 100; fahrten++) {
Random r = new Random();
int nr = r.nextInt(4);
fuhrpark1[nr].fahren();
}
for(int index = 0; index < fuhrpark1.length; index++) {
fuhrpark1[index].print();
}
System.out.printf("%n%n-------------------- Teil 2 -------------------------%n%n");
Fuhrpark fp1 = new Fuhrpark(20);
System.out.println(fp1.toString());
System.out.printf("%n---- 15 fahrzeuge kaufen ----%n%n");
for(int fahrzeuge = 0; fahrzeuge < 15; fahrzeuge++) {
fp1.fahrzeugKaufen();
}
System.out.println(fp1.toString());
System.out.printf("%n---- 2 weitere fahrzeuge kaufen ----%n%n");
Fahrzeug f1 = new Auto("B", 200, 8.5);
Fahrzeug f2 = new LKW(35.5);
fp1.fahrzeugKaufen(f1);
fp1.fahrzeugKaufen(f2);
System.out.println(fp1.toString());
System.out.printf("%n---- reisenImMonat(75) ----%n%n");
fp1.reisenImMonat(75);
System.out.println(fp1.toString());
System.out.printf("%n---- alleLKWs ----%n%n");
Fuhrpark lkws = fp1.alleLKWs();
System.out.println(lkws);
System.out.printf("%n---- meisten kilometer ----%n%n");
Fahrzeug meistenKm = fp1.meistenKilometer();
meistenKm.print();
System.out.printf("%n---- hoechster gesamtverbrauch auto ----%n%n");
Fahrzeug hoechsterVerbrauch = fp1.hoechsterGesamtverbrauchAuto();
hoechsterVerbrauch.print();
System.out.printf("%n---- fahrzeug loeschen ----%n%n");
fp1.fahrzeugLoeschen(f1);
System.out.println(fp1.toString());
}
}
package klausurvorbereitung.fahrzeug;
import java.util.Random;
public class Fahrzeug
{
private String marke;
private int kmStand;
private int maxV;
private double verbrauch;
public Fahrzeug(String marke, int maxV, double verbrauch) {
this.marke = marke;
this.maxV = maxV;
this.kmStand = 0;
this.verbrauch = verbrauch;
}
public void fahren() {
Random r = new Random();
int reise = r.nextInt(1000);
this.kmStand += reise;
}
public double gesamtverbrauch() {
return this.kmStand * this.verbrauch / 100;
}
public int getKmStand() {
return this.kmStand;
}
public String getMarke()
{
return this.marke;
}
public int getMaxV()
{
return this.maxV;
}
public double getVerbrauch()
{
return this.verbrauch;
}
@Override
public String toString() {
String s = String.format("%-4s %3dkm/h %4.1fl/100km %7dkm %8.2fl", this.marke, this.maxV, this.verbrauch, this.kmStand, this.gesamtverbrauch());
return s;
}
@Override
public boolean equals(Object o) {
if(o == null) return false;
if(this == o) return true;
if(this.getClass() != o.getClass()) return false;
Fahrzeug other = (Fahrzeug)o;
return this.marke.equals(other.marke) && this.kmStand == other.kmStand;
}
public void print() {
System.out.println(this.toString());
}
}
package klausurvorbereitung.fahrzeug;
import java.util.Random;
public class Fuhrpark
{
private Fahrzeug[] fuhrpark;
private int anzahl;
public Fuhrpark(int groesse) {
this.fuhrpark = new Fahrzeug[groesse];
this.anzahl = 0;
}
public void fahrzeugKaufen() {
Random r = new Random();
int zufzahl = r.nextInt(400) + 50;
double verbrauch = zufzahl / 10.0;
if(zufzahl <= 250) {
String marke = "A" + this.anzahl;
this.fuhrpark[this.anzahl++] = new Auto(marke, zufzahl, verbrauch);
} else {
this.fuhrpark[this.anzahl++] = new LKW(verbrauch);
}
}
public void fahrzeugKaufen(Fahrzeug fahrzeug) {
this.fuhrpark[this.anzahl++] = fahrzeug;
}
public void reisenImMonat(int anzahlReisen) {
for(int reise = 0; reise < anzahlReisen; reise++) {
Random r = new Random();
int zufIndex = r.nextInt(this.anzahl);
this.fuhrpark[zufIndex].fahren();
}
}
public Fahrzeug meistenKilometer() {
Fahrzeug meistenKm = this.fuhrpark[0];
for (int index = 1; index < this.anzahl; index++)
{
if(this.fuhrpark[index].getKmStand() > meistenKm.getKmStand()) {
meistenKm = this.fuhrpark[index];
}
}
return meistenKm;
}
public Fahrzeug hoechsterGesamtverbrauchAuto() {
double hoechsterVerbrauch = 0.0;
int indexMax = -1;
for (int index = 0; index < this.anzahl; index++)
{
if(this.fuhrpark[index] instanceof Auto) {
if(this.fuhrpark[index].gesamtverbrauch() > hoechsterVerbrauch) {
hoechsterVerbrauch = this.fuhrpark[index].gesamtverbrauch();
indexMax = index;
}
}
}
return this.fuhrpark[indexMax];
}
public boolean fahrzeugLoeschen(Fahrzeug fahrzeug) {
boolean deleted = false;
for (int index = 0; index < this.anzahl && !deleted; index++)
{
if(this.fuhrpark[index].equals(fahrzeug))
{
deleted = true;
for(int i = index; i < this.anzahl - 1; i++)
{
this.fuhrpark[index] = this.fuhrpark[index+1];
}
this.anzahl--;
}
}
return deleted;
}
public int getAnzahl() {
return this.anzahl;
}
@Override
public String toString() {
String s = String.format("Im Fuhrpark sind %d Fahrzeuge : %n", this.anzahl);
s += String.format("----------------------------- %n");
for(int index = 0; index < this.anzahl; index++) {
s += String.format("%s %n", this.fuhrpark[index].toString());
}
s += String.format("----------------------------- %n%n");
return s;
}
public Fuhrpark alleLKWs() {
int anzahlLKWs = 0;
for (int index = 0; index < this.anzahl; index++)
{
if(fuhrpark[index] instanceof LKW) anzahlLKWs++;
}
Fuhrpark fp = new Fuhrpark(anzahlLKWs);
for (int index = 0; index < this.anzahl; index++)
{
if(fuhrpark[index] instanceof LKW) {
fp.fahrzeugKaufen(fuhrpark[index]);
}
}
return fp;
}
}
Akku (pdf)
- Erstellen Sie ein package
klausurvorbereitung.akku. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
Akkumit-
den privaten Objektvariablen
typvom TypString(Typ des Akkus),kapazitaetvom Typint(Akku-Kapazität) undanzahlLadungenvom Typint(Anzahl der bisherigen Ladungen des Akkus). -
Erstellen Sie für die Klasse
Akkueinen parametrisierten Konstruktor, dem die ParameterString typundint kapazitaetübergeben werden. Mit den Parameterwerten werden die entsprechenden Objektvariablen initialisiert. Die ObjektvariableanzahlLadungenwird mit dem Wert0initialisiert. -
Erstellen Sie eine Methode
laden(), die den Wert der ObjektvariablenanzahlLadungenum1erhöht. -
Erstellen Sie eine Methode
getZustand(), die einintzurückgibt. Der Zustand berechnet sich wie folgt:- Ist der Akku neu, ist der Zustand bei 100%.
- Durch alle 100 Ladungen verringert sich der Zustand um 1%.
- Der Zustand kann nicht kleiner als 0% werden.
Sie müssen also die
anzahlLadungenbetrachten und durch alle 100 Ladungen reduziert sich der Zustands-Wert100um 1.
Beispiele:anzahlLadungen: 99 → Zustand 100anzahlLadungen: 199 → Zustand 99anzahlLadungen: 1099 → Zustand 90anzahlLadungen: 10099 → Zustand 0
Tipps:
- Nutzen Sie die Integer-Division durch 100, um zu ermitteln, welchen Wert Sie von 100 abziehen müssen.
- Prüfen Sie, ob das Ergebnis unter 0 ist, dann geben Sie 0 zurück.
-
Überschreiben Sie die Methode
toString()so, dass ein formatierter String in der folgenden Form zurückgegeben wird (Beispielwerte):Beachten Sie:
A1ist der Typ des Akkus.- reservieren Sie für den Typ 4 Zeichen (dann kommt ein Doppelpunkt
:), - reservieren Sie für die Kapazität 5 Zeichen (dann kommt
mAh), - reservieren Sie für die Anzahl der Ladungen 5 Zeichen (dann kommt
Ladungen. Zustand), - reservieren Sie für den Zustand 3 Zeichen (dann kommt
%→ siehe Tipp).
Tipp:
- das
%-Zeichen in einem formatierten String wird durch%%erzeugt.
- reservieren Sie für den Typ 4 Zeichen (dann kommt ein Doppelpunkt
-
Erstellen Sie eine
print()-Methode, die den vontoString()erzeugtenStringauf die Konsole ausgibt. -
Überschreiben Sie die Methode
equals(Object o)so, dass zwei Akkus gleich sind, wenn sie denselben Typ haben. -
Erstellen Sie eine
Testklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode vierAkku-Objekte mit den folgenden Werten für die Objektvariablen:Geben Sie alle vier
Akku-Objekte auf die Konsole unter Verwendung derprint()-Methode aus. Es entsteht folgende Ausgabe: -
Erweitern Sie die
main()-Methode derTestklasseum eine Schleife, um4000Ladungen durchzuführen. Innerhalb dieser Schleife wird eine Zufallszahl aus dem Bereich[0, …, 3](3inkl.) erzeugt. Nutzen Sie dazu die KlasseRandomaus demjava.util-Paket.- Ist die Zufallszahl
0, wird der erste Akku (A1) geladen. - Ist die Zufallszahl
1, wird der zweite Akku (A2) geladen. - Ist die Zufallszahl
2, wird der dritte Akku (A3) geladen. - Ist die Zufallszahl
3, wird der vierte Akku (A4) geladen
Rufen Sie für die vier Akkus jeweils die
print()-Methode auf. Es entsteht folgende Ausgabe (Zufallswerte): - Ist die Zufallszahl
-
-
(Teil 2) Erstellen Sie eine Klasse
AkkuBestandmit-
der privaten Objektvariable
akkusvom TypAkku[]. -
Erstellen Sie einen parameterlosen Konstruktor. In dem Konstruktor wird das
akkus-Array mit der Länge0erzeugt. -
Erstellen Sie eine Methode
akkuBereitsImBestand(Akku a). Diese Methode gibt eintruezurück, wennabereits inakkusenthalten ist undfalsesonst. -
Erstellen Sie eine Methode
akkuHinzufuegen(Akku a). Diese Methode fügt den Akkuademakkus-Array hinzu.
Die Methode gibt eintruezurück, wennademakkus-Array hinzugefügt wurde und einfalse, wenn nicht. Der Akkuawird genau dann nicht demakkus-Array hinzugefügt, wenn er bereits imakkus-Array enthalten ist!Tipps:
- Nutzen Sie die Methode
akkuBereitsImBestand(Akku a), um zu ermitteln, obabereits inakkusenthalten ist. - Wenn
ahinzugefügt wird, muss dasakkus-Array um1größer werden.
- Nutzen Sie die Methode
-
Erstellen Sie eine Methode
akkuEntfernen(Akku a). Diese Methode entfernt den Akkuaaus demakkus-Array.
Die Methode gibt eintruezurück, wennaaus demakkus-Array entfernt wurde und einfalse, wenn nicht. Der Akkuawird genau dann nicht aus demakkus-Array entfernt, wenn er gar nicht imakkus-Array enthalten ist!Tipps:
- Nutzen Sie die Methode
akkuBereitsImBestand(Akku a), um zu ermitteln, obaüberhaupt inakkusenthalten ist. - Wenn
aentfernt wurde, muss dasakkus-Array danach um1kleiner sein.
- Nutzen Sie die Methode
-
Erstellen Sie eine Methode
getLength(), die die Länge desakkus-Arrays zurückgibt. -
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte):Bestand (3): A1 : 10000mAh 984 Ladungen. Zustand 91% A2 : 20000mAh 945 Ladungen. Zustand 91% A3 : 30000mAh 1032 Ladungen. Zustand 90%Die Zahl in Klammern rechts von
Bestandgibt die Länge desakkus-Arrays an (hier(3)).Beachten Sie! Enthält das
akkus-Array keine Akkus, dann soll folgender String zurückgegeben werden: -
Erstellen Sie eine
print()-Methode, die den vontoString()erzeugtenStringauf die Konsole ausgibt. -
Erzeugen Sie in der
main()-Methode derTestklasseein Objekt vonAkkuBestand. Geben Sie dasAkkuBestand-Objekt unter Verwendung derprint()-Methode auf die Konsole aus. Es entsteht folgende Ausgabe:-
Fügen Sie den Akku
A1aus Teil 1 demAkkuBestand-Objekt hinzu. Beachten Sie dabei die Rückgabe derakkuHinzufuegen()-Methode. Wird der Akku hinzugefügt, soll die Ausgabeauf der Konsole erscheinen. Wird er nicht hinzugefügt, erscheint
-
Rufen Sie die
print()-Methode für dasAkkuBestand-Objekt auf. Es erscheint: -
Wiederholen Sie die Schritte
aundbfür- Akku
A2aus Teil 1 (wird tatsächlich hinzugefügt), - Akku
A3aus Teil 1 (wird tatsächlich hinzugefügt) und - nochmal Akku
A3aus Teil 1 (wird nicht hinzugefügt)
Insgesamt entsteht folgende Ausgabe:
Akku hinzugefuegt! Bestand (1): A1 : 10000mAh 984 Ladungen. Zustand 91% Akku hinzugefuegt! Bestand (2): A1 : 10000mAh 984 Ladungen. Zustand 91% A2 : 20000mAh 945 Ladungen. Zustand 91% Akku hinzugefuegt! Bestand (3): A1 : 10000mAh 984 Ladungen. Zustand 91% A2 : 20000mAh 945 Ladungen. Zustand 91% A3 : 30000mAh 1032 Ladungen. Zustand 90% Akku nicht hinzugefuegt! Bestand (3): A1 : 10000mAh 984 Ladungen. Zustand 91% A2 : 20000mAh 945 Ladungen. Zustand 91% A3 : 30000mAh 1032 Ladungen. Zustand 90% - Akku
-
Entfernen Sie mithilfe der
akkuEntfernen()-Methode den AkkuA2zwei Mal (einmal wird er tatsächlich entfernt und einmal nicht) und berücksichtigen Sie die Rückgabe der Methode, so dass folgende Ausgaben entstehen (jeweils auchprint()-Methode vonAkkuBestandaufrufen) :
-
-
-
(Teil 3)
AkkuBestand- Teil 2-
Erstellen Sie einen weiteren Konstruktor in der
AkkuBestand-Klasse. Diesem Konstruktor soll einAkkuBestand-Objekt als Parameter übergeben werden. Dasakkus-Array des neu zu erstellenden Objektes soll alleAkku-Objekte des als Parameter übergebenenAkkuBestand-Objektes aufnehmen. -
Testen Sie in der
main()-Methode derTestklasseden neuen Konstruktor, indem Sie ein neuesAkkuBestand-Objekt erzeugen und dem Konstruktor den altenAkkuBestandaus Teil 2 übergeben. Rufen Sie für das neueAkkuBestand-Objekt dieprint()-Methode auf. Es sollte erscheinen (Zufallswerte): -
Fügen Sie nun dem neuen
AkkuBestand-Objekt auch noch dieAkku-ObjekteA2undA4hinzu und rufen Sie dieprint()-Methode erneut auf. Es sollte erscheinen (Zufallswerte): -
Erstellen Sie in der Klasse
AkkuBestandeine MethodefehlendeAkkus(AkkuBestand ab). Diese Methode gibt einAkku-Array zurück. Das zurückgegebeneAkku-Array enthält alleAkku-Objekte, die imakkus-Array vonab, nicht aber imakkus-Array des aufrufendenAkkuBestand-Objektes enthalten sind. -
Testen Sie die
fehlendeAkkus()-Methode in dermain()-Methode derTestklasse, indem Sie sie für dasAkkuBestand-Objekt aus Teil 2 aufrufen und das neueAkkuBestand-Objekt als Parameter übergeben, welches alleAkku-Typen enthält. Geben Sie die Akkus des zurückgegebenenAkku-Arrays aus (direkt in dermain()-Methode). Es entsteht folgende Ausgabe (Zufallswerte): -
Erstellen Sie in der Klasse
AkkuBestandeine MethodeschlechtesterZustand(). Diese Methode gibt das (erste)Akku-Objekt zurück, das imakkus-Array den kleinstenZustands-Wert hat. Sie können davon ausgehen, dass mindestens ein Akku imakkus-Array ist.Testen Sie die Methode in der
main()-Methode, z.B. -
Erstellen Sie in der Klasse
AkkuBestandeine MethodegetAkkuAtIndex(int index). Diese Methode gibt denAkkuzurück, der imakkus-Array unter dem Indexindexgespeichert ist. Istindexkein gültiger Index (zu klein oder zu groß) aus demakkus-Array, dann geben Sienullzurück. -
Testen Sie die
getAkkuAtIndex(int index)wie folgt:-
Falls Sie einen ungültigen Index übergeben, dann soll die Ausgabe so sein:
-
Falls Sie einen korrekten Index übergeben, wird das zurückgegebene Akku ausgegeben, z.B.
-
-
Erstellen Sie in der Klasse
AkkuBestandeine MethodeakkusMitSchlechtemZustand(). Diese Methode gibt einAkku-Array zurück. Das zurückgegebeneAkku-Array enthält alleAkku-Objekte desakkus-Arrays, deren Zustand unter 10% ist. -
Testen Sie in der
main()-Methode derTestklassedieakkusMitSchlechtemZustand()-Methode wie folgt:-
in einer Schleife laden Sie alle Akkus aus dem
AkkuBestand-Objekt, welches alleAkku-Typen enthält (haben Sie hier in Teil 3 erstellt) -
Sie laden alle Akkus solange, bis alle Akkus in dem zurückgegebenen Array der
akkusMitSchlechtemZustand()enthalten sind (reicht zu prüfen, dass das zurückgegebene Array die Länge4hat). Geben Sie dann dieses Array aus. Es erscheint z.B. (Zufallswerte):
-
-
-
Zur Kontrolle: Die möglichen Ausgaben (Beispielwerte) könnten sein:
----------- Teil 1 - Akku: Objekte erzeugen ----------- A1 : 10000mAh 0 Ladungen. Zustand 100% A2 : 20000mAh 0 Ladungen. Zustand 100% A3 : 30000mAh 0 Ladungen. Zustand 100% A4 : 40000mAh 0 Ladungen. Zustand 100% ------------ Teil 2 - Akku: 4000 Ladungen ------------ A1 : 10000mAh 1011 Ladungen. Zustand 90% A2 : 20000mAh 995 Ladungen. Zustand 91% A3 : 30000mAh 1026 Ladungen. Zustand 90% A4 : 40000mAh 968 Ladungen. Zustand 91% ------------ Teil 3 - AkkuBestand ------------ Derzeit sind keine Akkus im Bestand. Akku hinzugefuegt! Bestand (1): A1 : 10000mAh 1011 Ladungen. Zustand 90% Akku hinzugefuegt! Bestand (2): A1 : 10000mAh 1011 Ladungen. Zustand 90% A2 : 20000mAh 995 Ladungen. Zustand 91% Akku hinzugefuegt! Bestand (3): A1 : 10000mAh 1011 Ladungen. Zustand 90% A2 : 20000mAh 995 Ladungen. Zustand 91% A3 : 30000mAh 1026 Ladungen. Zustand 90% Akku nicht hinzugefuegt! Bestand (3): A1 : 10000mAh 1011 Ladungen. Zustand 90% A2 : 20000mAh 995 Ladungen. Zustand 91% A3 : 30000mAh 1026 Ladungen. Zustand 90% Akku entfernt! Bestand (2): A1 : 10000mAh 1011 Ladungen. Zustand 90% A3 : 30000mAh 1026 Ladungen. Zustand 90% Akku nicht entfernt! Bestand (2): A1 : 10000mAh 1011 Ladungen. Zustand 90% A3 : 30000mAh 1026 Ladungen. Zustand 90% ------------ Teil 4 - AkkuBestand ------------ Bestand (2): A1 : 10000mAh 1011 Ladungen. Zustand 90% A3 : 30000mAh 1026 Ladungen. Zustand 90% Bestand (4): A1 : 10000mAh 1011 Ladungen. Zustand 90% A3 : 30000mAh 1026 Ladungen. Zustand 90% A2 : 20000mAh 995 Ladungen. Zustand 91% A4 : 40000mAh 968 Ladungen. Zustand 91% Fehlende : A2 : 20000mAh 995 Ladungen. Zustand 91% A4 : 40000mAh 968 Ladungen. Zustand 91% Kein gueltiger Index! A2 : 20000mAh 995 Ladungen. Zustand 91% Akku mit schlechtestem Zustand : A1 : 10000mAh 1011 Ladungen. Zustand 90% Bestand (4): A1 : 10000mAh 9143 Ladungen. Zustand 9% A3 : 30000mAh 9158 Ladungen. Zustand 9% A2 : 20000mAh 9127 Ladungen. Zustand 9% A4 : 40000mAh 9100 Ladungen. Zustand 9%
Eine mögliche Lösung für Akku
package klausurvorbereitung.akku;
import java.util.Random;
public class Testklasse {
public static void main(String[] args) {
System.out.printf("%n%n----------- Teil 1 - Akku: Objekte erzeugen -----------%n%n");
Akku a1 = new Akku("A1", 10000);
Akku a2 = new Akku("A2", 20000);
Akku a3 = new Akku("A3", 30000);
Akku a4 = new Akku("A4", 40000);
a1.print();
a2.print();
a3.print();
a4.print();
System.out.printf("%n%n------------ Teil 2 - Akku: 4000 Ladungen ------------%n%n");
int anzLadungen = 4000;
Random r = new Random();
for(int i=0; i<anzLadungen; i++)
{
int zufZahl = r.nextInt(4);
if(zufZahl==0)
{
a1.laden();
}
else if(zufZahl==1)
{
a2.laden();
}
else if(zufZahl==2)
{
a3.laden();
}
else if(zufZahl==3)
{
a4.laden();
}
}
a1.print();
a2.print();
a3.print();
a4.print();
System.out.printf("%n%n------------ Teil 3 - AkkuBestand ------------%n%n");
AkkuBestand ab1 = new AkkuBestand();
ab1.print();
boolean result = false;
result = ab1.akkuHinzufuegen(a1);
if(result)
{
System.out.println("Akku hinzugefuegt!");
}
else
{
System.out.println("Akku nicht hinzugefuegt!");
}
ab1.print();
result = ab1.akkuHinzufuegen(a2);
if(result)
{
System.out.println("Akku hinzugefuegt!");
}
else
{
System.out.println("Akku nicht hinzugefuegt!");
}
ab1.print();
result = ab1.akkuHinzufuegen(a3);
if(result)
{
System.out.println("Akku hinzugefuegt!");
}
else
{
System.out.println("Akku nicht hinzugefuegt!");
}
ab1.print();
result = ab1.akkuHinzufuegen(a3);
if(result)
{
System.out.println("Akku hinzugefuegt!");
}
else
{
System.out.println("Akku nicht hinzugefuegt!");
}
ab1.print();
result = ab1.akkuEntfernen(a2);
if(result)
{
System.out.println("Akku entfernt!");
}
else
{
System.out.println("Akku nicht entfernt!");
}
ab1.print();
result = ab1.akkuEntfernen(a2);
if(result)
{
System.out.println("Akku entfernt!");
}
else
{
System.out.println("Akku nicht entfernt!");
}
ab1.print();
System.out.printf("%n%n------------ Teil 4 - AkkuBestand ------------%n%n");
AkkuBestand alle = new AkkuBestand(ab1);
alle.print();
alle.akkuHinzufuegen(a2);
alle.akkuHinzufuegen(a4);
alle.print();
Akku[] fehlende = ab1.fehlendeAkkus(alle);
System.out.printf("%nFehlende : %n%n");
for (int i = 0; i < fehlende.length; i++)
{
fehlende[i].print();
}
Akku atIndex = alle.getAkkuAtIndex(-5);
if(atIndex == null)
{
System.out.println("Kein gueltiger Index!");
}
else
{
atIndex.print();
}
atIndex = alle.getAkkuAtIndex(2);
if(atIndex == null)
{
System.out.println("Kein gueltiger Index!");
}
else
{
atIndex.print();
}
Akku schlechtesteZustand = ab1.schlechtesterZustand();
System.out.println("Akku mit schlechtestem Zustand :");
schlechtesteZustand.print();
System.out.println();
Akku[] schlechte = alle.akkusMitSchlechtemZustand();
while(schlechte.length < 4)
{
for (int i = 0; i < alle.getLength(); i++)
{
alle.getAkkuAtIndex(i).laden();
}
schlechte = alle.akkusMitSchlechtemZustand();
}
alle.print();
}
}
package klausurvorbereitung.akku;
public class Akku {
private String typ;
private int kapazitaet;
private int anzahlLadungen;
public Akku(String typ, int kapazitaet)
{
this.typ = typ;
this.kapazitaet = kapazitaet;
this.anzahlLadungen = 0;
}
public void laden()
{
this.anzahlLadungen++;
}
public int getZustand()
{
int zustand = 100;
zustand = (zustand - (this.anzahlLadungen/100));
if(zustand < 0) zustand = 0;
return zustand;
}
@Override
public String toString()
{
String s = String.format("%-4s: %5dmAh %5d Ladungen. Zustand %3d%% %n", this.typ, this.kapazitaet, this.anzahlLadungen, this.getZustand());
return s;
}
@Override
public boolean equals(Object o)
{
if(o == null) return false;
if(this == o) return true;
if(o.getClass() != this.getClass()) return false;
Akku a = (Akku)o;
return a.typ.equals(this.typ);
}
public void print()
{
System.out.print(this.toString());
}
}
package klausurvorbereitung.akku;
public class AkkuBestand {
private Akku[] akkus;
public AkkuBestand()
{
this.akkus = new Akku[0];
}
public AkkuBestand(AkkuBestand ab)
{
this.akkus = new Akku[0];
for (int i = 0; i < ab.akkus.length; i++)
{
this.akkuHinzufuegen(ab.akkus[i]);
}
}
public int getLength()
{
return this.akkus.length;
}
public boolean akkuBereitsImBestand(Akku a)
{
for(int i=0; i<this.akkus.length; i++)
{
if(this.akkus[i] != null && this.akkus[i].equals(a)) return true;
}
return false;
}
public boolean akkuHinzufuegen(Akku a)
{
if(akkuBereitsImBestand(a))
{
return false;
}
else
{
Akku[] neu = new Akku[this.akkus.length+1];
for(int i=0; i < this.akkus.length; i++)
{
neu[i] = this.akkus[i];
}
neu[this.akkus.length] = a;
this.akkus = neu;
return true;
}
}
public boolean akkuEntfernen(Akku a)
{
if(!akkuBereitsImBestand(a))
{
return false;
}
else
{
Akku[] neu = new Akku[this.akkus.length-1];
int indexNeu = 0;
for(int i=0; i < this.akkus.length; i++)
{
if(!this.akkus[i].equals(a))
{
neu[indexNeu++] = this.akkus[i];
}
}
this.akkus = neu;
return true;
}
}
public Akku schlechtesterZustand()
{
Akku merke = this.akkus[0];
for (int i = 1; i < this.akkus.length; i++)
{
if(this.akkus[i].getZustand() < merke.getZustand())
{
merke = this.akkus[i];
}
}
return merke;
}
public Akku[] fehlendeAkkus(AkkuBestand ab)
{
int anzahlFehlende = 0;
for (int i = 0; i < ab.akkus.length; i++)
{
if(!this.akkuBereitsImBestand(ab.akkus[i]))
{
anzahlFehlende++;
}
}
Akku[] fehlende = new Akku[anzahlFehlende];
int indexFehlende = 0;
for (int i = 0; i < ab.akkus.length; i++)
{
if(!this.akkuBereitsImBestand(ab.akkus[i]))
{
fehlende[indexFehlende++] = ab.akkus[i];
}
}
return fehlende;
}
public Akku getAkkuAtIndex(int index)
{
if(index<0 || index >= this.akkus.length)
{
return null;
}
else
{
return this.akkus[index];
}
}
public Akku[] akkusMitSchlechtemZustand()
{
int anzahlSchlechte = 0;
for (int i = 0; i < this.akkus.length; i++)
{
if(this.akkus[i].getZustand() < 10)
{
anzahlSchlechte++;
}
}
Akku[] schlechte = new Akku[anzahlSchlechte];
int indexSchlechte = 0;
for (int i = 0; i < this.akkus.length; i++)
{
if(this.akkus[i].getZustand() < 10)
{
schlechte[indexSchlechte++] = this.akkus[i];
}
}
return schlechte;
}
@Override
public String toString()
{
if(this.akkus.length == 0)
{
String s = String.format("Derzeit sind keine Akkus im Bestand.%n%n");
return s;
}
else
{
String s = String.format("Bestand (%d): %n%n", this.getLength());
for(int i=0; i<this.akkus.length; i++)
{
s += this.akkus[i].toString();
}
return s;
}
}
public void print()
{
System.out.println(this.toString());
}
}
Buch (pdf)
- Erstellen Sie ein package
klausurvorbereitung.buch. -
(Teil 1) Erstellen Sie in diesem package eine Klasse
Buchmit-
den privaten Objektvariablen
titelvom TypString(Titel des Buches),seitenvom Typint(Anzahl der Seiten des Buches) undjahrvom Typint(Erscheinungsjahr des Buches). -
Erstellen Sie für die Klasse
Bucheinen parametrisierten Konstruktor, dem für jede der drei Objektvariablen ein Wert als Parameter übergeben wird. Mit den Parameterwerten werden die Objektvariablen initialisiert. -
Erstellen Sie eine Methode
getJahr(), die den Wert der Objektvariablenjahrzurückgibt. -
Erstellen Sie eine Methode
istDicker(Buch b), die eintruezurückgibt, wenn das aufrufendeBuch-Objekt mehrseitenhat, alsb. Ansonsten wirdfalsezurückgegeben. -
Überschreiben Sie die Objektmethode
Beachten Sie:toString(), so, dass ein String in der folgenden Form zurückgegeben wird (Beispielwerte):Titel Zist der Titel des Buches. Reservieren Sie für den Titel10Zeichen (dann kommt ein Doppelpunkt:, reservieren Sie für die Seitenzahl3Zeichen und für die Jahreszahl4Zeichen. -
Überschreiben Sie die Objektmethode
equals(Object o)so, dass zwei Bücher gleich sind, wenn sie denselben Titel haben.
-
-
Erstellen Sie im gleichen package eine Klasse
Testklassemitmain()-Methode.-
Erzeugen Sie in der
main()-Methode dreiBuch-Objekte mit den folgenden Werten für die Objektvariablen: -
Geben Sie alle drei
Buch-Objekte auf die Konsole unter Verwendung dertoString()-Methode aus. Es entsteht folgende Ausgabe:
-
-
(Teil 2) Erweitern Sie die Klasse
Buchum einen parameterlosen Konstruktor. In diesem Konstruktor werden die Werte für die Objektvariablen zufällig erzeugt. Nutzen Sie dazu die KlasseRandomaus demjava.util-Paket.
Beachten Sie:-
Nutzen Sie immer die
nextInt(bound)-Methode aus derRandom-Klasse. -
Der Wert für
jahrsoll im Bereich von1900(inkl.) bis2021(inkl.) liegen (122verschiedene Jahreszahlen möglich). -
Der Wert für
seitensoll im Bereich20(inkl.) bis199(inkl.) liegen (180verschiedene Seitenzahlen möglich). -
Der Wert für
titleergibt sich ausTitelgefolgt von einem Großbuchstaben. Der Großbuchstabe soll zufällig erzeugt werden. Tipp: Der Ascii-Wert vonAist65, der vonBist66usw. und das Alphabet hat26Buchstaben. Mögliche Titel können also z.B. sein:
-
-
Erzeugen Sie in der
main()-Methode derTestklasseein Array vonBuch-Objekten.-
Das Array hat die Länge
10. -
Befüllen Sie in einer Schleife das Array mit
Buch-Objekten unter Verwendung des parameterlosen Konstruktors. -
Berechnen Sie für alle erzeugten
Buch-Objekte das Alter (ausgehend von aktuellen Jahr2022– ein Buch von2021ist also1Jahr alt, ein Buch von1950ist72Jahre alt). -
Geben Sie alle Bücher des Arrays und deren Alter auf der Konsole aus, so dass folgende Ausgabe entsteht (Beispielwerte):
Titel E : 84 Seiten, von 1944 --> 78 Jahre alt Titel G : 55 Seiten, von 1964 --> 58 Jahre alt Titel Z : 52 Seiten, von 1975 --> 47 Jahre alt Titel T : 28 Seiten, von 1937 --> 85 Jahre alt Titel H : 190 Seiten, von 1964 --> 58 Jahre alt Titel F : 145 Seiten, von 1935 --> 87 Jahre alt Titel V : 77 Seiten, von 1989 --> 33 Jahre alt Titel O : 122 Seiten, von 2008 --> 14 Jahre alt Titel P : 143 Seiten, von 2011 --> 11 Jahre alt Titel A : 112 Seiten, von 2010 --> 12 Jahre alt
-
-
(Teil 3) Erstellen Sie eine Klasse
Bibliothek. Objektvariable istbuechervom TypBuch[]. Die Objektvariable ist nur innerhalb der Klasse sichtbar!-
Erstellen Sie einen parametrisierten Konstruktor, dem als Parameter eine
anzBuecherübergeben wird. Der Wert vonanzBuecherentspricht der Länge desbuecher-Arrays. Erzeugen Sie das Array im Konstruktor und befüllen Sie es mitBuch-Objekten unter Verwendung des parameterlosen Konstruktors vonBuch. -
Erstellen Sie eine Methode
sort(boolean vonDuennZuDick). In dieser Methode wird dasbuecher-Array sortiert.-
Ist der Parameterwert
true, dann werden die Bücher aufsteigend vom Buch mit den wenigsten Seiten bis hoch zum Buch mit den meisten Seiten sortiert. -
Ist der Parameterwert
false, dann werden die Bücher absteigend vom Buch mit den meisten Seiten bis hoch zum Buch mit den wenigsten Seiten sortiert.
-
-
Überschreiben Sie die Methode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Beispielwerte):Bibliothek mit 10 Buechern 1. Titel Q : 77 Seiten, von 1963 2. Titel N : 55 Seiten, von 1982 3. Titel W : 112 Seiten, von 2017 4. Titel R : 26 Seiten, von 1989 5. Titel W : 161 Seiten, von 2002 6. Titel N : 147 Seiten, von 1949 7. Titel U : 80 Seiten, von 1955 8. Titel S : 148 Seiten, von 1948 9. Titel A : 96 Seiten, von 1980 10. Titel S : 77 Seiten, von 1920
-
-
Erzeugen Sie in der
main()-Methode derTestklasseein Objekt vonBibliothek. Übergeben Sie als Parameterwert die10.-
Geben Sie das
Bibliothek-Objekt unter Verwendung dertoString()-Methode auf die Konsole aus. -
Rufen Sie für das
Bibliothek-Objekt die Methodesort(true)auf und geben Sie danach dasBibliothek-Objekt erneut auf die Konsole aus. -
Rufen Sie für das
Bibliothek-Objekt die Methodesort(false)auf und geben Sie danach dasBibliothek-Objekt erneut auf die Konsole aus. -
Es entstehen folgende Ausgaben (Beispielwerte):
Bibliothek mit 10 Buechern 1. Titel Q : 77 Seiten, von 1963 2. Titel N : 55 Seiten, von 1982 3. Titel W : 112 Seiten, von 2017 4. Titel R : 26 Seiten, von 1989 5. Titel W : 161 Seiten, von 2002 6. Titel N : 147 Seiten, von 1949 7. Titel U : 80 Seiten, von 1955 8. Titel S : 148 Seiten, von 1948 9. Titel A : 96 Seiten, von 1980 10. Titel S : 77 Seiten, von 1920 Bibliothek mit 10 Buechern 1. Titel R : 26 Seiten, von 1989 2. Titel N : 55 Seiten, von 1982 3. Titel Q : 77 Seiten, von 1963 4. Titel S : 77 Seiten, von 1920 5. Titel U : 80 Seiten, von 1955 6. Titel A : 96 Seiten, von 1980 7. Titel W : 112 Seiten, von 2017 8. Titel N : 147 Seiten, von 1949 9. Titel S : 148 Seiten, von 1948 10. Titel W : 161 Seiten, von 2002 Bibliothek mit 10 Buechern 1. Titel W : 161 Seiten, von 2002 2. Titel S : 148 Seiten, von 1948 3. Titel N : 147 Seiten, von 1949 4. Titel W : 112 Seiten, von 2017 5. Titel A : 96 Seiten, von 1980 6. Titel U : 80 Seiten, von 1955 7. Titel Q : 77 Seiten, von 1963 8. Titel S : 77 Seiten, von 1920 9. Titel N : 55 Seiten, von 1982 10. Titel R : 26 Seiten, von 1989
-
-
(Teil 4) Erstellen Sie in der Klasse
Bibliothekeine MethodeenthaeltDoppelungen(). Diese Methode gibt eintruezurück, wenn dasbuecher-Array Bücher mit demselben Titel enthält (also dieequals()-Methode aus Buch für zwei Büchertrueergibt). Ansonstenfalse.-
Ändern Sie die
toString()-Methode vonBibliothekso, dass mit ausgegeben wird, ob dasbuecher-Array Doppelungen enthält oder nicht. Der zurückgegebene String sieht dann so aus (Beispielwerte):Bibliothek mit 4 Buechern 1. Titel B : 151 Seiten, von 1940 2. Titel H : 126 Seiten, von 1977 3. Titel Z : 94 Seiten, von 1991 4. Titel H : 65 Seiten, von 1925 enthaelt doppelte Eintraegeoder so (Beispielwerte):
-
Erstellen Sie in der Klasse
Bibliothekeine MethodebuecherVonBis(int vonJahr, int bisJahr). Diese Methode gibt einBuch-Array zurück. Das zurückgegebeneBuch-Array enthält alle Bücher aus dembuecher-Array, die in der ZeitvonJahr(inkl.) –bisJahr(inkl.) erschienen sind.Angenommen, das
buecher-Array sieht so aus:Bibliothek mit 4 Buechern 1. Titel B : 151 Seiten, von 1940 2. Titel H : 126 Seiten, von 1977 3. Titel Z : 94 Seiten, von 1991 4. Titel H : 65 Seiten, von 1925und es werden alle Bücher aus dem Zeitraum
1950 – 1999gesucht. Dann sieht das zurückgegebeneBuch-Array so aus: -
Rufen Sie die Methode
buecherVonBis(1950,1999)in dermain()-Methode für das unter7.erstellteBibliotheksobjekt auf. Geben Sie das zurückgegebeneBuch-Array unter Verwendung dertoString()-Methode vonBuchauf die Konsole aus. -
Erstellen Sie in der Klasse
Bibliothekeine MethodeduennstesBuch(). Diese Methode gibt dasBuchmit den wenigstenseitenaus dembuecher-Array zurück. Sie können davon ausgehen, dass dasbuecher-Array mindestens ein Buch enthält.Rufen Sie die Methode in der
main()-Methode auf und geben Sie das dünnste Buch in der folgenden Form auf der Konsole aus (Beispielwerte): -
Erstellen Sie in der Klasse
Bibliothekeine MethodeaeltestesBuch(). Diese Methode gibt dasBuchmit dem frühesten Erscheinungsjahr (jahr) aus dembuecher-Array zurück. Sie können davon ausgehen, dass dasbuecher-Array mindestens ein Buch enthält.Rufen Sie die Methode in der
main()-Methode auf und geben Sie das älteste Buch in der folgenden Form auf der Konsole aus (Beispielwerte): -
Erstellen Sie in der Klasse
Bibliothekeine Methodedurchschnittsalter(). Diese Methode berechnet das Durchschnittsalter aller Bücher aus dembuecher-Array und gibt dieses alsdoublezurück. Das Alter eines Buches wird berechnet, indem Sie vom aktuellen Jahr2022das Erscheinungsjahr des Buches abziehen.Rufen Sie die Methode in der
main()-Methode auf und geben Sie das Durchschnittsalter in der folgenden Form auf der Konsole aus (Beispielwerte):
-
-
Zur Kontrolle: Die möglichen Ausgaben (Beispielwerte) könnten sein:
----------- Teil 1 ----------------- Titel A : 55 Seiten, von 1999 Titel B : 66 Seiten, von 2000 Titel C : 77 Seiten, von 2001 ----------- Teil 2 ----------------- Titel V : 29 Seiten, von 2012 --> 10 Jahre alt Titel B : 129 Seiten, von 2003 --> 19 Jahre alt Titel E : 37 Seiten, von 1940 --> 82 Jahre alt Titel F : 141 Seiten, von 1904 --> 118 Jahre alt Titel L : 118 Seiten, von 1983 --> 39 Jahre alt Titel O : 174 Seiten, von 1998 --> 24 Jahre alt Titel U : 162 Seiten, von 2001 --> 21 Jahre alt Titel I : 29 Seiten, von 1909 --> 113 Jahre alt Titel V : 141 Seiten, von 1944 --> 78 Jahre alt Titel O : 38 Seiten, von 1942 --> 80 Jahre alt ----------- Teil 3 ----------------- Bibliothek mit 10 Buechern 1. Titel P : 79 Seiten, von 1948 2. Titel U : 91 Seiten, von 1941 3. Titel J : 88 Seiten, von 1956 4. Titel H : 76 Seiten, von 1959 5. Titel Y : 35 Seiten, von 2002 6. Titel A : 83 Seiten, von 2020 7. Titel T : 29 Seiten, von 2010 8. Titel N : 150 Seiten, von 1936 9. Titel T : 56 Seiten, von 1956 10. Titel W : 70 Seiten, von 1907 Bibliothek mit 10 Buechern 1. Titel T : 29 Seiten, von 2010 2. Titel Y : 35 Seiten, von 2002 3. Titel T : 56 Seiten, von 1956 4. Titel W : 70 Seiten, von 1907 5. Titel H : 76 Seiten, von 1959 6. Titel P : 79 Seiten, von 1948 7. Titel A : 83 Seiten, von 2020 8. Titel J : 88 Seiten, von 1956 9. Titel U : 91 Seiten, von 1941 10. Titel N : 150 Seiten, von 1936 Bibliothek mit 10 Buechern 1. Titel N : 150 Seiten, von 1936 2. Titel U : 91 Seiten, von 1941 3. Titel J : 88 Seiten, von 1956 4. Titel A : 83 Seiten, von 2020 5. Titel P : 79 Seiten, von 1948 6. Titel H : 76 Seiten, von 1959 7. Titel W : 70 Seiten, von 1907 8. Titel T : 56 Seiten, von 1956 9. Titel Y : 35 Seiten, von 2002 10. Titel T : 29 Seiten, von 2010 ----------- Teil 4 ----------------- Bibliothek mit 10 Buechern 1. Titel N : 150 Seiten, von 1936 2. Titel U : 91 Seiten, von 1941 3. Titel J : 88 Seiten, von 1956 4. Titel A : 83 Seiten, von 2020 5. Titel P : 79 Seiten, von 1948 6. Titel H : 76 Seiten, von 1959 7. Titel W : 70 Seiten, von 1907 8. Titel T : 56 Seiten, von 1956 9. Titel Y : 35 Seiten, von 2002 10. Titel T : 29 Seiten, von 2010 enthaelt doppelte Eintraege Titel J : 88 Seiten, von 1956 Titel H : 76 Seiten, von 1959 Titel T : 56 Seiten, von 1956 Das duennste Buch ist [ Titel T : 29 Seiten, von 2010 ] Das aelteste Buch ist [ Titel W : 70 Seiten, von 1907 ] Das Durchschnittsalter betraegt 58.5 Jahre.
Eine mögliche Lösung für Buch
package klausurvorbereitung.buch;
public class Testklasse
{
public static void main(String[] args)
{
System.out.printf("%n----------- Teil 1 -----------------%n%n");
Buch b1 = new Buch("Titel A", 55, 1999);
Buch b2 = new Buch("Titel B", 66, 2000);
Buch b3 = new Buch("Titel C", 77, 2001);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.printf("%n----------- Teil 2 -----------------%n%n");
Buch[] buecher = new Buch[10];
for (int index = 0; index < buecher.length; index++)
{
buecher[index] = new Buch();
System.out.print(buecher[index]);
int alter = 2022 - buecher[index].getJahr();
System.out.printf(" --> %3d Jahre alt %n", alter);
}
System.out.printf("%n----------- Teil 3 -----------------%n%n");
Bibliothek bib1 = new Bibliothek(10);
System.out.println(bib1);
bib1.sort(true);
System.out.println(bib1);
bib1.sort(false);
System.out.println(bib1);
// Bibliothek bib2 = new Bibliothek(4);
// System.out.println(bib2);
System.out.printf("%n----------- Teil 4 -----------------%n%n");
System.out.println(bib1); // nicht gefordert
Buch[] bib3 = bib1.buecherVonBis(1950, 1999);
for (int index = 0; index < bib3.length; index++)
{
System.out.println(bib3[index]);
}
System.out.printf("%n----------- Teil 5 -----------------%n%n");
Buch duenn = bib1.duennstesBuch();
System.out.println("Das duennste Buch ist [ " + duenn.toString() + " ]");
Buch alt = bib1.aeltestesBuch();
System.out.println("Das aelteste Buch ist [ " + alt.toString() + " ]");
double average = bib1.durchschnittsalter();
System.out.println("Das Durchschnittsalter betraegt " + average + " Jahre.");
}
}
package klausurvorbereitung.buch;
import java.util.Random;
public class Buch
{
private String titel;
private int seiten;
private int jahr;
public Buch(String titel, int seiten, int jahr)
{
this.titel = titel;
this.seiten = seiten;
this.jahr = jahr;
}
public Buch()
{
Random r = new Random();
int seiten = r.nextInt(180) + 20;
int jahr = r.nextInt(122) + 1900;
char buchstabe = (char)(r.nextInt(26) + 65);
String titel = "Titel " + buchstabe;
this.titel = titel;
this.seiten = seiten;
this.jahr = jahr;
}
public int getJahr()
{
return this.jahr;
}
public boolean istDicker(Buch b)
{
return this.seiten > b.seiten;
}
@Override
public String toString()
{
String s = String.format("%-10s: %3d Seiten, von %4d", this.titel, this.seiten, this.jahr);
return s;
}
@Override
public boolean equals(Object o)
{
if(o == null) return false;
if(this == o) return true;
if(this.getClass() != o.getClass()) return false;
Buch b = (Buch)o;
return this.titel.equals(b.titel);
}
}
package klausurvorbereitung.buch;
public class Bibliothek
{
Buch[] buecher;
public Bibliothek(int anzBuecher)
{
this.buecher = new Buch[anzBuecher];
for (int index = 0; index < buecher.length; index++)
{
this.buecher[index] = new Buch();
}
}
public void sort(boolean vonDuennZuDick)
{
for(int bubble = 1; bubble <= this.buecher.length; bubble++)
{
for(int index = 0; index < this.buecher.length - bubble; index++)
{
if(vonDuennZuDick && this.buecher[index].istDicker(this.buecher[index+1]))
{
Buch tmp = this.buecher[index +1];
this.buecher[index +1] = this.buecher[index];
this.buecher[index] = tmp;
}
else if(!vonDuennZuDick && this.buecher[index +1].istDicker(this.buecher[index]))
{
Buch tmp = this.buecher[index +1];
this.buecher[index +1] = this.buecher[index];
this.buecher[index] = tmp;
}
}
}
}
@Override
public String toString()
{
String s = String.format("Bibliothek mit %3d Buechern %n%n", this.buecher.length);
for (int index = 0; index < this.buecher.length; index++)
{
s = s + String.format("%2d. %s %n", (index + 1), this.buecher[index].toString());
}
s = s + "\n";
if(this.enthaeltDoppelungen())
{
s = s + "enthaelt doppelte Eintraege \n";
}
else
{
s = s + "enthaelt keine doppelten Eintraege \n";
}
s = s + "\n";
return s;
}
private boolean contains(Buch b, int fromIndex)
{
for (int index = fromIndex; index < buecher.length; index++)
{
if(this.buecher[index].equals(b))
{
return true;
}
}
return false;
}
public boolean enthaeltDoppelungen()
{
for (int index = 0; index < buecher.length; index++)
{
if(this.contains(this.buecher[index], index+1))
{
return true;
}
}
return false;
}
public Buch[] buecherVonBis(int vonJahr, int bisJahr)
{
int anzahl = 0;
for (int index = 0; index < this.buecher.length; index++)
{
if(this.buecher[index].getJahr() >= vonJahr && this.buecher[index].getJahr() <= bisJahr)
{
anzahl++;
}
}
Buch[] books = new Buch[anzahl];
int indexBooks = 0;
for (int index = 0; index < this.buecher.length; index++)
{
if(this.buecher[index].getJahr() >= vonJahr && this.buecher[index].getJahr() <= bisJahr)
{
books[indexBooks++] = this.buecher[index];
}
}
return books;
}
public Buch duennstesBuch()
{
Buch duennstes = this.buecher[0];
for (int index = 1; index < this.buecher.length; index++)
{
if(duennstes.istDicker(this.buecher[index]))
{
duennstes = this.buecher[index];
}
}
return duennstes;
}
public Buch aeltestesBuch()
{
Buch aeltestes = this.buecher[0];
for (int index = 1; index < this.buecher.length; index++)
{
if(this.buecher[index].getJahr() < aeltestes.getJahr())
{
aeltestes = this.buecher[index];
}
}
return aeltestes;
}
public double durchschnittsalter()
{
final int HEUTE = 2022;
double sum = 0.0;
for (int index = 0; index < this.buecher.length; index++)
{
int alter = HEUTE - this.buecher[index].getJahr();
sum = sum + alter;
}
if(this.buecher.length > 0)
{
return (sum/this.buecher.length);
}
else
{
return 0.0;
}
}
}
Punkt2D und Punkt3D
- Erstellen Sie ein package
klausurvorbereitung.punkt. -
Erstellen Sie in diesem package eine Klasse
Punkt3Dmit- drei privaten Objektvariablen
x,yundz, jeweils vom Typint, - einem parametrisierten Konstruktor
Punkt3D(int x, int y, int z). Mit den Parameterwerten werden die Objektvariablen initialisiert. - Getter für die drei Objektvariablen (
getX(),getY()undgetZ()). - Überschreiben Sie die Methode
toString(), so dass folgende textuelle Reräsentation alsStringerzeugt wird (Beispielwerte): also in runden Klammern die Werte vonx,yundzdurch Komma getrennt. - Schreiben Sie eine Objektmethode
print(), die den durchtoString()erzeugtenStringauf die Konsole ausgibt. - Überschreiben Sie die Methode
equals(Object o)so, dass zweiPunkt3D-Objekte gleich sind, wenn ihre Objektvariablenx,yundzjeweils paarweise den gleichen Wert besitzen. - Schreiben Sie eine Objektmethode
xIsSmaller(Punkt3D p), die eintruezurückgibt, wenn das aufrufende Objekt einen kleinerenx-Wert hat alsp;falsesonst. - Schreiben Sie eine Objektmethode
yIsSmaller(Punkt3D p), die eintruezurückgibt, wenn das aufrufende Objekt einen kleinereny-Wert hat alsp;falsesonst. - Schreiben Sie eine Objektmethode
zIsSmaller(Punkt3D p), die eintruezurückgibt, wenn das aufrufende Objekt einen kleinerenz-Wert hat alsp;falsesonst.
- drei privaten Objektvariablen
-
Erstellen Sie im gleichen package eine Klasse
Punkt2D. Diese Klasse erbt vonPunkt3D. Bei einem Objekt vom TypPunkt2Dist der Wert vonzstets0!- Schreiben Sie einen parametrisierten Konstruktor
Punkt2D(int x, int y). Verwenden Sie die Parameterwerte, um den entsprechenden Objektvariablen Werte zuzuweisen und setzen Sie den Wert vonzauf0. - Überschreiben Sie die Methode
toString(), so dass folgende textuelle Reräsentation alsStringerzeugt wird (Beispielwerte): also in runden Klammern die Werte vonxundydurch Komma getrennt. ( der Wert vonzwird nicht mehr ausgewertet, er ist ja immer0).
- Schreiben Sie einen parametrisierten Konstruktor
-
Testen Sie die Klassen
Punkt3DundPunkt2Din einerTestklassemitmain()-Methode wie folgt:- Erstellen Sie ein Array vom Typ
Punkt2D. Es hat die Länge3. - Erzeugen Sie ein
Random-Objekt. Sie müssen dazu die KlasseRandomaus demjava.util-Paket importieren. -
innerhalb einer Schleife soll nun Folgendes passieren:
- Sie erzeugen sich für
x,yundzjeweils Zufallszahlen aus dem Bereich[0, ... ,9](0und9inklusive, also10mögliche Zufallszahlen). - wenn
zden Wert0hat, dann erzeugen Sie mit den zufällig erzeugten Werten vonxundyein Objekt vom TypPunkt2Dund speichern dieses im Array. Rufen Sie dafür dieprint()-Methode auf. - wenn
zeinen Wert ungleich0hat, dann erzeugen Sie mit den zufällig erzeugten Werten vonx,yundzein Objekt vom TypPunkt3Dund rufen dafür dieprint()-Methode auf. Ein solches Objekt wird nicht weiter gespeichert. - diesen Prozess wiederholen Sie so lange, bis das
Punkt2D[]-Array befüllt ist, bis Sie also dreiPunkt2D-Objekte erzeugt und im Array gespeichert haben.
- Sie erzeugen sich für
-
Eine mögliche Ausgabe könnte so sein (Zufallswerte):
das letzte Objekt ist immer ein---------------- Punkt2D und Punkt3D --------------- (3,8,9) (3,3,4) (1,2,3) (7,6,7) (0,4,7) (9,0,8) (0,3,8) (3,3,9) (7,2,1) (2,4) (1,8) (6,4,7) (2,1,2) (7,4,1) (7,1,1) (0,2,2) (6,4,9) (1,2,7) (3,9,8) (2,3)Punkt2D-Objekt, denn nach dem drittenPunkt2D-Objekt hören Sie ja auf, Objekte zu erzeugen (Schleifenende).
- Erstellen Sie ein Array vom Typ
-
Erstellen Sie im gleichen package eine Klasse
Streckemit- den privaten Objektvariablen
startundende, jeweils vom TypPunkt2D, - einem parametrisierten Konstruktor
Strecke(Punkt2D start, Punkt2D ende). Mit den Parameterwerten werden die Objektvariablen initialisiert. - einem weiteren parametrisierten Konstruktor
Strecke(int x1, int y1, int x2, int y2). Mit den Parameterwertenx1undy1erzeugen Sie sich einPunkt2D-Objekt, das denstart-Punkt bildet und mit den Parameterwertenx2undy2erzeugen Sie sich einPunkt2D-Objekt, das denende-Punkt bildet. -
Schreiben Sie eine Objektmethode
laenge(), die die Länge derStreckealsdoublezurückgibt. Sie können dazu die MethodenMath.abs(number)für den absoluten Betrag vonnumberundMath.sqrt(number)für die Quadratwurzel vonnumber(alsdouble) verwenden. Tipp:
-
Überschreiben Sie die Methode
also die Start- und Endpunkte ausgegeben werden und die Länge der Strecke in eckigen Klammern nach dem WorttoString(), so dass folgende textuelle Reräsentation derStreckealsStringerzeugt wird (Beispielwerte):Strecke. - Schreiben Sie eine Objektmethode
print(), die den durchtoString()erzeugtenStringauf die Konsole ausgibt.
- den privaten Objektvariablen
-
Testen Sie die Klasse
Streckein derTestklassemitmain()-Methode wie folgt:-
Erzeugen Sie
3Objekte der KlasseStrecke. Wählen Sie- als
start-Punkt der ersten Strecke, den ersten Punkt aus demPunkt2D-Array aus dem ersten Teil der Aufgabe, alsende-Punkt den zweiten Punkt aus demPunkt2D-Array aus dem ersten Teil, - als
start-Punkt der zweiten Strecke, den zweiten Punkt aus demPunkt2D-Array aus dem ersten Teil der Aufgabe, alsende-Punkt den dritten Punkt aus demPunkt2D-Array aus dem ersten Teil, - als
start-Punkt der dritten Strecke, den dritten Punkt aus demPunkt2D-Array aus dem ersten Teil der Aufgabe, alsende-Punkt den ersten Punkt aus demPunkt2D-Array aus dem ersten Teil.
- als
-
Wenden Sie für alle drei
Strecke-Objekte dieprint()-Methode an. Es sollte folgende Ausgabe erzeugt werden (Beispielwerte):
-
-
Erstellen Sie im gleichen package eine Klasse
PunkteArraymit- der privaten Objektvariablen
punktevom TypPunkt2D[], - dem parametrisierten Konstruktor
PunkteArray(int anzahl), dem die Anzahl der Punkte, also die Länge despunkte-Arrays übergeben wird. Erzeugen Sie unter Verwendung dieseranzahldaspunkte-Array. - Schreiben Sie eine Objektmethode
contains(Punkt2D p). Diese Methode gibt eintruezurück, wennpimpunkte-Array enthalten ist undfalsesonst. Tipp: Beachten Sie, dass es sein kann, dass nicht alle Elemente impunkte-Array tatsächlich ein Objekt enthalten. Es kann also sein, dass manche Referenzvariablenthis.punkte[index]den Wertnullhaben. Mithilfe vonthis.punkte[index] != nullkönnen Sie prüfen, obthis.punkte[index]nicht aufnullzeigt. -
Schreiben Sie eine Objektmethode
fillArray(). Diese Methode befüllt daspunkte-Array vollständig mitPunkte2D-Objekten. Beachten Sie:- die Werte für
xundyaller Objekte sollen jeweils zufällig mithilfe vonRandomerzeugt werden. Der Wertebereich ist dabei jeweils[0, ... ,9](also0und9inklusive, insgesamt10verschiedene Zufallszahlen), Punkt2D-Objekte dürfen nicht doppelt impunkte-Array vorkommen, d.h. es gibt keine zwei Punktep1undp2impunkte-Array für diep1.equals(p2)den Werttruehat.
- die Werte für
-
Überschreiben Sie die Methode
also alle Punkte in eckigen Klammern durch Komma getrennt.toString(), so dass folgende textuelle Reräsentation desPunkteArrayalsStringerzeugt wird (Beispielwerte): -
Schreiben Sie eine Objektmethode
print(), die den durchtoString()erzeugtenStringauf die Konsole ausgibt. -
Hinweis: (für die folgenden Methoden) Ein Polygon ist ein geschlossener Linienezug aus Strecken. Die folgende Abbildung zeigt ein Polygon, das aus den Strecken
(p1, p2),(p2, p3),(p3, p4),(p4, p5)und(p5, p1)besteht. Es gibt darin also5Punkte und5Strecken:
-
Schreiben Sie eine Objektmethode
createPolygon(), die einStrecke[]zurückgibt. DasStrecke[]ist genau so lang wie daspunkte-Array. DasStrecke[]wird mit Objekten vom TypStreckevollständig befüllt. Dabei sind diestart- undende-Punkte immer die Nachbarpunkte aus dempunkte-Array. Jeder Punkt aus dempunkte-Array wird also zwei Mal verwendet, einmal alsende-Punkt einer Strecke und einmal alsstart-Punkt der nächsten Strecke imStrecke[]. Beachten Sie, dass derstart-Punkt der letzten Strecke imStrecke[]der letzte Punkte impunkte-Array und derende-Punkt dieser Strecke der erste Punkt impunkte-Array ist - siehe Skizze:
-
Schreiben Sie eine Objektmethode
gesamtLaenge(), die die Gesamtlänge aller Strecken im Polygon ermittelt und diese alsdoublezurückgibt. Tipp: Sie müssen sich in der Methode erst mithilfe dercreatePolygon()-Methode das Polygon erzeugen. - Schreiben Sie eine Objektmethode
amWeitestenLinks(), die denPunkt2Daus dempunkte-Array zurückgibt, der am weitesten links von allen ist (den kleinstenx-Wert von allen hat). Geben Sie diesen Punkt zurück. - Schreiben Sie eine Objektmethode
amWeitestenOben(), die denPunkt2Daus dempunkte-Array zurückgibt, der am weitesten oben von allen ist (den kleinsteny-Wert von allen hat). Geben Sie diesen Punkt zurück. - Schreiben Sie eine Objektmethode
laengsteStrecke(), die die längsteStreckealler Strecken im Polygon ermittelt und diese zurückgibt. Tipp: Sie müssen sich in der Methode erst mithilfe dercreatePolygon()-Methode das Polygon erzeugen. - Schreiben Sie eine Objektmethode
printStrecken(). Diese Methode gibt alle Strecken aus dem Polygon auf die Konsole aus. Außerdem wird die Gesamtlänge aller Strecken aus dem Polygon, der am weitesten links stehende Punkt aus dempunkte-Array und der am weitesten oben stehende Punkt aus dempunkte-Array ausgegeben. Tipp: Sie müssen sich in der Methode erst mithilfe dercreatePolygon()-Methode das Polygon erzeugen. Es sollte folgende Ausgabe erfolgen (Beispielwerte):Strecke [start=(0,1), ende=(2,1), Laenge= 2,0000cm] Strecke [start=(2,1), ende=(5,7), Laenge= 6,7082cm] Strecke [start=(5,7), ende=(8,7), Laenge= 3,0000cm] Strecke [start=(8,7), ende=(7,4), Laenge= 3,1623cm] Strecke [start=(7,4), ende=(8,1), Laenge= 3,1623cm] Strecke [start=(8,1), ende=(1,1), Laenge= 7,0000cm] Strecke [start=(1,1), ende=(4,6), Laenge= 5,8310cm] Strecke [start=(4,6), ende=(2,9), Laenge= 3,6056cm] Strecke [start=(2,9), ende=(9,4), Laenge= 8,6023cm] Strecke [start=(9,4), ende=(6,8), Laenge= 5,0000cm] Strecke [start=(6,8), ende=(9,8), Laenge= 3,0000cm] Strecke [start=(9,8), ende=(5,6), Laenge= 4,4721cm] Strecke [start=(5,6), ende=(8,4), Laenge= 3,6056cm] Strecke [start=(8,4), ende=(6,5), Laenge= 2,2361cm] Strecke [start=(6,5), ende=(0,1), Laenge= 7,2111cm] Gesamtlaenge der Strecken : 68,5964cm am weitesten links : (0,1) am weitesten oben : (0,1) laengste : Strecke [start=(2,9), ende=(9,4), Laenge= 8,6023cm]
- der privaten Objektvariablen
-
Testen Sie die Klasse
PunkteArrayin derTestklassemitmain()-Methode wie folgt:- Erzeugen Sie ein Objekt der Klasse
PunkteArrayund übergeben Sie als Anzahl derpunkteden Wert15. - Rufen Sie für diese Objekt die Methoden
fillArray(),print()undprintStrecken()auf. - Es sollten folgende Ausgaben erzeugt werden (Beispielwerte):
------------------ PunkteArray --------------------- [ (0,1), (2,1), (5,7), (8,7), (7,4), (8,1), (1,1), (4,6), (2,9), (9,4), (6,8), (9,8), (5,6), (8,4), (6,5) ] Strecke [start=(0,1), ende=(2,1), Laenge= 2,0000cm] Strecke [start=(2,1), ende=(5,7), Laenge= 6,7082cm] Strecke [start=(5,7), ende=(8,7), Laenge= 3,0000cm] Strecke [start=(8,7), ende=(7,4), Laenge= 3,1623cm] Strecke [start=(7,4), ende=(8,1), Laenge= 3,1623cm] Strecke [start=(8,1), ende=(1,1), Laenge= 7,0000cm] Strecke [start=(1,1), ende=(4,6), Laenge= 5,8310cm] Strecke [start=(4,6), ende=(2,9), Laenge= 3,6056cm] Strecke [start=(2,9), ende=(9,4), Laenge= 8,6023cm] Strecke [start=(9,4), ende=(6,8), Laenge= 5,0000cm] Strecke [start=(6,8), ende=(9,8), Laenge= 3,0000cm] Strecke [start=(9,8), ende=(5,6), Laenge= 4,4721cm] Strecke [start=(5,6), ende=(8,4), Laenge= 3,6056cm] Strecke [start=(8,4), ende=(6,5), Laenge= 2,2361cm] Strecke [start=(6,5), ende=(0,1), Laenge= 7,2111cm] Gesamtlaenge der Strecken : 68,5964cm am weitesten links : (0,1) am weitesten oben : (0,1) laengste : Strecke [start=(2,9), ende=(9,4), Laenge= 8,6023cm]
- Erzeugen Sie ein Objekt der Klasse
Eine mögliche Lösung für Punkt2D und Punkt3D
package klausurvorbereitung.punkte;
public class Punkt3D
{
private int x;
private int y;
private int z;
public Punkt3D(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
public int getX()
{
return this.x;
}
public int getY()
{
return this.y;
}
public int getZ()
{
return this.z;
}
@Override
public String toString()
{
return String.format("(%d,%d,%d)", this.x, this.y, this.z);
}
public void print()
{
System.out.println(this.toString());
}
@Override
public boolean equals(Object o)
{
if(o == null) return false;
if(this == o) return true;
if(this.getClass() != o.getClass()) return false;
Punkt3D p = (Punkt3D)o;
return this.x == p.x && this.y == p.y && this.z == p.z;
}
public boolean xIsSmaller(Punkt3D p)
{
return this.x < p.x;
}
public boolean yIsSmaller(Punkt3D p)
{
return this.y < p.y;
}
public boolean zIsSmaller(Punkt3D p)
{
return this.z < p.z;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | |
Wohnung (pdf)
- Erstellen Sie ein package
klausurvorbereitung.wohnung. -
Erstellen Sie in diesem package eine Klasse
Wohnungmit- den privaten Objektvariablen
qmvom Typint, (entspricht der Größe der Wohnung in m^2)anzZimmervom Typint,etagevom TypintundqmMietevom Typdouble(entspricht dem Mietpreis pro m^2).
- einem parametrisierten Konstruktor Wohnung(int qm, int anzZimmer, int etage, double qmMiete). Die Werte der Parameter werden verwendet, um den Objektvariablen Werte zuzuweisen.
- Gettern für alle Objektvariablen (
getQm(),getAnzZimmer(),getEtage(),getQmMiete()) - einer Objektmethode
gesamtMiete(), die die Gesamtmiete der Wohnung berechnet (qm*qmMiete) und diesendouble-Wert zurückgibt. - einer Objektmethode
billiger(Wohnung w), die eintruezurückgibt, wenn die Gesamtmiete des aufrufenden Objektes kleiner ist als die Gesamtmiete vonw;falsesonst. - einer Objektmethode
teurer(Wohnung w), die eintruezurückgibt, wenn die Gesamtmiete des aufrufenden Objektes größer ist als die Gesamtmiete vonw;falsesonst. -
einer Objektmethode
Achtung! Sollte sich die Wohnung in der 0.Etage befinden, geben Sie die Details bitte wie folgt zurück (Beispielwerte):toString()die Details der Wohnung in folgender Form (ab inkl. 1. Etage aufwärts) alsStringzurückgibt (Beispielwerte): -
und einer Objektmethode
print(), die den vontoString()zurückgegebenenStringauf der Konsole ausgibt
- den privaten Objektvariablen
-
Erstellen Sie im gleichen package eine Klasse
Testklassemitmain()-Methode. Geben Sie in dermain()-Methode Folgendes ein:und führen Sie dieSystem.out.printf("%n%n--------------------- Test Wohnung -------------------------%n%n"); Wohnung w1 = new Wohnung(70, 3, 4, 12.50); Wohnung w2 = new Wohnung(40, 1, 0, 9.50); Wohnung w3 = new Wohnung(90, 4, 2, 11.10); Wohnung w4 = new Wohnung(60, 2, 0, 9.00); w1.print(); w2.print(); w3.print(); w4.print();Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden:--------------------- Test Wohnung ------------------------- 3-Zimmer Wohnung mit 70qm in der 4. Etage. Monatliche Miete: 875,00 Euro 1-Zimmer Wohnung mit 40qm im Erdgeschoss. Monatliche Miete: 380,00 Euro 4-Zimmer Wohnung mit 90qm in der 2. Etage. Monatliche Miete: 999,00 Euro 2-Zimmer Wohnung mit 60qm im Erdgeschoss. Monatliche Miete: 540,00 Euro -
Erstellen Sie im gleichen package eine Klasse
Dachgeschosswohnung. Diese erbt vonWohnung.- Implementieren Sie einen parametrisierten Konstruktor
Dachgeschosswohnung(int qm, int anzZimmer, double qmMiete). Bei Aufruf des Konstruktors werden die entsprechenden Objektvariablen mit den Parameterwerten initialisiert. Die Objektvariableetagebekommt stets den Wert5. - Überschreiben Sie die Methode
toString(), so dass eine Zeichenkette der Form (Beispielwerte) zurückgegeben wird.
- Implementieren Sie einen parametrisierten Konstruktor
-
Fügen Sie in der
main()-Methode derTestklassefolgende Anweisungen hinzu:und führen Sie dieSystem.out.printf("%n%n--------------- Test Dachgeschosswohnung -------------------%n%n"); Dachgeschosswohnung dg1 = new Dachgeschosswohnung(70, 3, 15.50); Dachgeschosswohnung dg2 = new Dachgeschosswohnung(100, 4, 17.25); dg1.print(); dg2.print();Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden: -
Erstellen Sie im gleichen package eine Klasse
Haus.- Objektvariable ist
wohnungenvom TypWohnung[]und nur in der Klasse sichtbar. -
Implementieren Sie eine Objektmethode
neueWohnung(). Diese Methode gibt ein Objekt vom TypWohnungzurück. In dieser Methode wird zunächst einRandom-Objekt erzeugt. Mithilfe diesesRandom-Objektes und der ObjektmethodenextInt(int bound)der KlasseRandomsollen zunächst nacheinander folgende Werte zufällig erzeugt werden:- Ein Wert für eine Quadratmeteranzahl
qmaus dem Wertebereich[20, 40, 60, 80, 100]( → also zufällig eine dieser 5 Zahlen), - Ein Wert für die Anzahl der Zimmer
anzZimmeraus dem Wertebereich[1, 2, 3, 4, 5]( → also zufällig eine dieser 5 Zahlen), - Ein Wert für die Etage
etageaus dem Wertebereich[0, 1, 2, 3, 4, 5]( → also zufällig eine dieser 6 Zahlen), - Ein Wert für den Mietpreis pro Quadratmeter
qmMieteaus dem Wertebereich[8.0, 8.5, 9.0, 9.5, 10.0, 10.5, 11.0, 11.5, 12.0, 12.5]( → also zufällig eine dieser 10 Zahlen – Achtung hierdouble, Sie können aber trotzdemnextInt(int bound)verwenden, müssen dann aber geeignet multiplizieren und addieren). Erzeugen Sie mit diesen Werten ein neuesWohnung-Objekt und geben Sie dieses Objekt zurück.
- Ein Wert für eine Quadratmeteranzahl
-
Implementieren Sie einen parametrisierten Konstruktor
Haus(int anzWohnungen). Darin wird daswohnungen-Array erzeugt. Die Länge vonwohnungenentspricht dem Wert vonanzWohnungen. Befüllen Sie daswohnungen-Array vollständig mit Objekten vom TypWohnungen. Rufen Sie dazu für jedes Element deswohnungen-Arrays die ObjektmethodeneueWohnung()auf.
Tipp : Jedes Element deswohnungen-Arrays ist nach dem Befüllen mit Objekten vom TypWohnungeine Referenzvariable auf einWohnung-Objekt, d.h. z.B. istthis.wohnungen[0]vom TypWohnungund zeigt auf einWohnung-Objekt. Die folgende Abbildung verdeutlicht das für den Fall, dass daswohnungen-Array die Länge10hat:
-
Implementieren Sie eine Objektmethode
print(). Bei Aufruf der Methode soll daswohnungen-Array wie folgt ausgegeben werden (Beispielwerte für Array-Länge5:)Das Haus besteht aus : 5-Zimmer Wohnung mit 80qm im Erdgeschoss. Monatliche Miete: 1000,00 Euro 4-Zimmer Wohnung mit 60qm in der 5. Etage. Monatliche Miete: 480,00 Euro 2-Zimmer Wohnung mit 80qm in der 5. Etage. Monatliche Miete: 880,00 Euro 5-Zimmer Wohnung mit 100qm in der 2. Etage. Monatliche Miete: 1100,00 Euro 3-Zimmer Wohnung mit 80qm im Erdgeschoss. Monatliche Miete: 920,00 Euro
- Objektvariable ist
-
Fügen Sie in der
main()-Methode derTestklassefolgende Anweisungen hinzu:und führen Sie dieSystem.out.printf("%n%n---------------------- Test Haus ---------------------------%n%n"); Haus h1 = new Haus(10); h1.print();Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden (Zufallswerte!):---------------------- Test Haus --------------------------- Das Haus besteht aus : 1-Zimmer Wohnung mit 80qm in der 4. Etage. Monatliche Miete: 840,00 Euro 3-Zimmer Wohnung mit 60qm in der 3. Etage. Monatliche Miete: 540,00 Euro 4-Zimmer Wohnung mit 80qm in der 3. Etage. Monatliche Miete: 1000,00 Euro 5-Zimmer Wohnung mit 60qm in der 3. Etage. Monatliche Miete: 540,00 Euro 2-Zimmer Wohnung mit 60qm im Erdgeschoss. Monatliche Miete: 510,00 Euro 3-Zimmer Wohnung mit 60qm in der 4. Etage. Monatliche Miete: 600,00 Euro 4-Zimmer Wohnung mit 20qm in der 3. Etage. Monatliche Miete: 250,00 Euro 4-Zimmer Wohnung mit 100qm in der 5. Etage. Monatliche Miete: 850,00 Euro 5-Zimmer Wohnung mit 20qm in der 2. Etage. Monatliche Miete: 160,00 Euro 2-Zimmer Wohnung mit 40qm in der 2. Etage. Monatliche Miete: 400,00 Euro -
Zusatz: Erweitern Sie die Klasse
Hausum folgende Objektmethoden:- eine Objektmethode
wohnungenInEtage(int etage). Diese Methode gibt einWohnung[]-Array zurück. Das zurückgegebeneWohnung[]-Array soll alle Wohnungen aus demwohnungen-Array enthalten, die in der Etage liegen, die der Methode als Parameter übergeben wird (etage). Befindet sich keine Wohnung in der als Parameter übergeben Etage, so wird einWohnung[]-Array der Länge0zurückgegeben. - eine Objektmethode
print(Wohnung[] warr). Diese Methode gibt das als Parameter übergebenewarr-Array auf der Konsole aus, in der Form (Bsp.:): -
Testen der beiden Methoden in
main():sollte folgende Ausgbabe erzeugen (Zufallswerte):System.out.printf("%n%n----- Test wohnungenInEtage() und print(Wohnung[]) ---------%n%n"); for(int etage=0; etage<6; etage++) { System.out.println("Etage " + etage + " ---------------------------------------"); h1.print(h1.wohnungenInEtage(etage)); System.out.println(); }----- Test wohnungenInEtage() und print(Wohnung[]) --------- Etage 0 --------------------------------------- 2-Zimmer Wohnung mit 60qm im Erdgeschoss. Monatliche Miete: 510,00 Euro Etage 1 --------------------------------------- Etage 2 --------------------------------------- 5-Zimmer Wohnung mit 20qm in der 2. Etage. Monatliche Miete: 160,00 Euro 2-Zimmer Wohnung mit 40qm in der 2. Etage. Monatliche Miete: 400,00 Euro Etage 3 --------------------------------------- 3-Zimmer Wohnung mit 60qm in der 3. Etage. Monatliche Miete: 540,00 Euro 4-Zimmer Wohnung mit 80qm in der 3. Etage. Monatliche Miete: 1000,00 Euro 5-Zimmer Wohnung mit 60qm in der 3. Etage. Monatliche Miete: 540,00 Euro 4-Zimmer Wohnung mit 20qm in der 3. Etage. Monatliche Miete: 250,00 Euro Etage 4 --------------------------------------- 1-Zimmer Wohnung mit 80qm in der 4. Etage. Monatliche Miete: 840,00 Euro 3-Zimmer Wohnung mit 60qm in der 4. Etage. Monatliche Miete: 600,00 Euro Etage 5 --------------------------------------- 4-Zimmer Wohnung mit 100qm in der 5. Etage. Monatliche Miete: 850,00 Euro -
eine Objektmethode
teuersteWohnung(). Diese Methode gibt die Wohnung aus demwohnungen-Array zurück, die die höchste Gesamtmiete von allen Wohnungen aus demwohnungen-Array hat. -
Testen der Methode in
sollte folgende Ausgbabe erzeugen (Zufallswerte):main(): -
eine Objektmethode
gesamtMieteHaus(). Diese Methode gibt die Summe der Mieten aller Wohnungen imwohnungen-Array alsdoublezurück. -
Testen der Methode in
sollte folgende Ausgbabe erzeugen (Zufallswerte):main(): -
eine Objektmethode
sortieren(). Diese Methode sortiert daswohnungen-Array nach Gesamtmieten aufsteigend (beginnend mit der billigsten Wohnung und endend mit der teuersten). - Testen der Methode in
main():sollte folgende Ausgbabe erzeugen (Zufallswerte):System.out.printf("%n%n------------------- Test sortieren() -----------------------%n%n"); h1.sortieren(); h1.print();------------------- Test sortieren() ----------------------- Das Haus besteht aus : 5-Zimmer Wohnung mit 20qm in der 2. Etage. Monatliche Miete: 160,00 Euro 4-Zimmer Wohnung mit 20qm in der 3. Etage. Monatliche Miete: 250,00 Euro 2-Zimmer Wohnung mit 40qm in der 2. Etage. Monatliche Miete: 400,00 Euro 2-Zimmer Wohnung mit 60qm im Erdgeschoss. Monatliche Miete: 510,00 Euro 3-Zimmer Wohnung mit 60qm in der 3. Etage. Monatliche Miete: 540,00 Euro 5-Zimmer Wohnung mit 60qm in der 3. Etage. Monatliche Miete: 540,00 Euro 3-Zimmer Wohnung mit 60qm in der 4. Etage. Monatliche Miete: 600,00 Euro 1-Zimmer Wohnung mit 80qm in der 4. Etage. Monatliche Miete: 840,00 Euro 4-Zimmer Wohnung mit 100qm in der 5. Etage. Monatliche Miete: 850,00 Euro 4-Zimmer Wohnung mit 80qm in der 3. Etage. Monatliche Miete: 1000,00 Euro
- eine Objektmethode
Eine mögliche Lösung für Wohnung
package klausurvorbereitung.wohnung;
public class Wohnung
{
private int qm;
private int anzZimmer;
private int etage;
private double qmMiete;
public Wohnung(int qm, int anzZimmer, int etage, double qmMiete)
{
this.qm = qm;
this.anzZimmer = anzZimmer;
this.etage = etage;
this.qmMiete = qmMiete;
}
public int getQm()
{
return this.qm;
}
public int getAnzZimmer()
{
return this.anzZimmer;
}
public int getEtage()
{
return this.etage;
}
public double getQmMiete()
{
return this.qmMiete;
}
public double gesamtMiete()
{
return this.qm * this.qmMiete;
}
public boolean billiger(Wohnung w)
{
return this.gesamtMiete() < w.gesamtMiete();
}
public boolean teurer(Wohnung w)
{
return this.gesamtMiete() > w.gesamtMiete();
}
public String toString()
{
String s = "";
if(this.etage == 0)
{
s = String.format("%d-Zimmer Wohnung mit %d qm im Erdgeschoss. Monatliche Miete: %.2f Euro",
this.anzZimmer, this.qm, this.gesamtMiete() );
}
else
{
s = String.format("%d-Zimmer Wohnung mit %d qm in der %d. Etage. Monatliche Miete: %.2f Euro",
this.anzZimmer, this.qm, this.etage, this.gesamtMiete() );
}
return s;
}
public void print()
{
System.out.println(this.toString());
}
}
package klausurvorbereitung.wohnung;
public class Dachgeschosswohnung extends Wohnung
{
// alle Objektvariablen von Wohnung geerbt
// qm, anzZimmer, etage, qmMiete
// alle Objektmethoden von Wohnung geerbt
public Dachgeschosswohnung(int qm, int anzZimmer, double qmMiete)
{
super(qm, anzZimmer, 5, qmMiete); // Konstruktor Wohnung
}
@Override
public String toString()
{
String s= "";
s = String.format("%d-Zimmer Wohnung mit %d qm in der %d. Etage. Monatliche Miete: %.2f Euro",
this.getAnzZimmer(), this.getQm(), this.getEtage(), this.gesamtMiete() );
return s;
}
}
package klausurvorbereitung.wohnung;
import java.util.Random;
public class Haus
{
private Wohnung[] wohnungen;
public Wohnung neueWohnung()
{
Random r = new Random();
int qm = r.nextInt(5) * 20 + 20;
int anzZimmer = r.nextInt(5) + 1;
int etage = r.nextInt(6);
double qmMiete = r.nextInt(10) * 0.5 + 8.0;
return new Wohnung(qm, anzZimmer, etage, qmMiete);
}
public Haus(int anzWohnungen)
{
this.wohnungen = new Wohnung[anzWohnungen];
for (int index = 0; index < this.wohnungen.length; index++)
{
this.wohnungen[index] = this.neueWohnung();
}
}
public void print()
{
System.out.println("Das Haus besteht aus :");
for (int index = 0; index < this.wohnungen.length; index++)
{
this.wohnungen[index].print(); // print()-Methode von Wohnung
}
}
public Wohnung[] wohnungenInEtage(int etage)
{
int anzWohnungenInEtage = 0;
for (int index = 0; index < this.wohnungen.length; index++)
{
if(this.wohnungen[index].getEtage()==etage)
{
anzWohnungenInEtage++;
}
}
Wohnung[] wohnungenInEtage = new Wohnung[anzWohnungenInEtage];
int indexWIE = 0;
for (int index = 0; index < this.wohnungen.length; index++)
{
if(this.wohnungen[index].getEtage()==etage)
{
wohnungenInEtage[indexWIE] = this.wohnungen[index];
indexWIE++;
}
}
return wohnungenInEtage;
}
public void print(Wohnung[] warr)
{
for (int index = 0; index < warr.length; index++)
{
warr[index].print(); // print()-Methode von Wohnung
}
}
public Wohnung teuersteWohnung()
{
int indexMax = 0;
for (int index = 0; index < this.wohnungen.length; index++)
{
if(this.wohnungen[index].teurer(this.wohnungen[indexMax]))
{
indexMax = index;
}
}
return this.wohnungen[indexMax];
}
public double gesamtMieteHaus()
{
double gesamtMieteHaus = 0.0;
for (int index = 0; index < this.wohnungen.length; index++)
{
gesamtMieteHaus = gesamtMieteHaus + this.wohnungen[index].gesamtMiete();
}
return gesamtMieteHaus;
}
public void sortieren()
{
for(int bubble = 1; bubble < this.wohnungen.length; bubble++)
{
for(int index = 0; index < this.wohnungen.length - bubble; index++)
{
if(this.wohnungen[index].teurer(this.wohnungen[index + 1]))
{
Wohnung tmp = this.wohnungen[index];
this.wohnungen[index] = this.wohnungen[index + 1];
this.wohnungen[index + 1] = tmp;
}
}
}
}
}
package klausurvorbereitung.wohnung;
public class Testklasse
{
public static void main(String[] args)
{
System.out.printf("%n%n--------------------- Test Wohnung -------------------------%n%n");
Wohnung w1 = new Wohnung(70, 3, 4, 12.50);
Wohnung w2 = new Wohnung(40, 1, 0, 9.50);
Wohnung w3 = new Wohnung(90, 4, 2, 11.10);
Wohnung w4 = new Wohnung(60, 2, 0, 9.00);
w1.print();
w2.print();
w3.print();
w4.print();
System.out.printf("%n%n--------------- Test Dachgeschosswohnung -------------------%n%n");
Dachgeschosswohnung dg1 = new Dachgeschosswohnung(70, 3, 15.50);
Dachgeschosswohnung dg2 = new Dachgeschosswohnung(100, 4, 17.25);
dg1.print();
dg2.print();
System.out.printf("%n%n---------------------- Test Haus ---------------------------%n%n");
Haus h1 = new Haus(10);
h1.print();
System.out.printf("%n%n----- Test wohnungenInEtage() und print(Wohnung[]) ---------%n%n");
for(int etage=0; etage<6; etage++)
{
System.out.println("Etage " + etage + " ---------------------------------------");
h1.print(h1.wohnungenInEtage(etage));
System.out.println();
}
System.out.printf("%n%n--------------- Test teuersteWohnung() ---------------------%n%n");
Wohnung teuerste = h1.teuersteWohnung();
teuerste.print();
System.out.printf("%n%n---------------- Test gesamtMieteHaus() --------------------%n%n");
System.out.printf("Die Gesamtmiete fuer das Haus betraegt %.2f Euro.%n", h1.gesamtMieteHaus());
System.out.printf("%n%n------------------- Test sortieren() -----------------------%n%n");
h1.sortieren();
h1.print();
}
}
Video zu Wohnung
Pizza (pdf)
- Erstellen Sie ein package
klausurvorbereitung.pizza. -
Erstellen Sie in diesem package eine Klasse
Pizzamit- den privaten Objektvariablen
namevom TypStringundpreisvom Typfloat.
- einem parametrisierten Konstruktor
Pizza(String name, float preis). Die Werte der Parameter werden verwendet, um den Objektvariablen Werte zuzuweisen. - Gettern für die Objektvariablen (
getName(),getPreis()) - Überschreiben Sie die Objektmethode
toString(), die Details der Pizza in folgender Form alsStringzurückgibt (Beispielwerte): - und einer Objektmethode
print(), die den vontoString()zurückgegebenenStringauf der Konsole ausgibt. - Überschreiben Sie die Objektmethode
equals(Object o). Diese Methode gibttruezurück, wenn der Namenamedes aufrufenden Objektes gleich dem Namennamedes als Parameter übergebenen Objektes ist;falsesonst. Tipp : Die Gleichheit von zwei Stringss1unds2können Sie mithilfe vons1.equals(s2)ermitteln. (hashCode()muss nicht überschrieben werden).
- den privaten Objektvariablen
-
Erstellen Sie im gleichen package eine Klasse
Testklassemitmain()-Methode. Geben Sie in dermain()-Methode Folgendes ein:und führen Sie dieSystem.out.printf("%n%n------------------------- Test Pizza ---------------------------%n%n"); Pizza p1 = new Pizza("Salami", 6.9f); Pizza p2 = new Pizza("Margheritha", 5.9f); Pizza p3 = new Pizza("Tonno", 6.9f); Pizza p4 = new Pizza("Hawaii", 6.9f); Pizza p5 = new Pizza("Calzone", 7.9f); Pizza p6 = new Pizza("Salami", 6.9f); p1.print(); p2.print(); p3.print(); p4.print(); p5.print(); System.out.println("p1 gleich p2 ? : " + p1.equals(p2)); System.out.println("p1 gleich p1 ? : " + p1.equals(p1)); System.out.println("p1 gleich p6 ? : " + p1.equals(p6));Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden:------------------------- Test Pizza --------------------------- Die Pizza Salami kostet 6,90 Euro. Die Pizza Margheritha kostet 5,90 Euro. Die Pizza Tonno kostet 6,90 Euro. Die Pizza Hawaii kostet 6,90 Euro. Die Pizza Calzone kostet 7,90 Euro. p1 gleich p2 ? : false p1 gleich p1 ? : true p1 gleich p6 ? : true -
Erstellen Sie im gleichen package eine Klasse
Pizzaverkaufmit- den privaten Objektvariablen
pizzavom TypPizzaundanzVerkaeufevom Typint.
- einem parametrisierten Konstruktor
Pizzaverkauf(Pizza pizza). Mit dem Parameterwertpizzawird die Objektvariablepizzainitialisiert. Der Wert der ObjektvariablenanzVerkaeufewird auf0gesetzt. - einer Objektmethode
verkaufen(). Darin wird der Wert der ObjektvariablenanzVerkaeufeum1erhöht. - Gettern für die Objektvariablen, also
getAnzVerkaeufe()undgetPizza(). - einer Objektmethode
umsatz(). Diese Methode gibt eindoublezurück. Der Wert berechnet sich aus der Anzahl der Verkäufe der Pizza (anzVerkaeufe) mal dem Preis der Pizza. -
einer Objektmethode
toString()die Details der Pizzaverkaeufe in folgender Form alsStringzurückgibt (Beispielwerte): -
und einer Objektmethode
print(), die den vontoString()zurückgegebenenStringauf der Konsole ausgibt
- den privaten Objektvariablen
-
Fügen Sie in der
main()-Methode derTestklassefolgende Anweisungen hinzu:und führen Sie dieSystem.out.printf("%n%n--------------------- Test Pizzaverkauf ------------------------%n%n"); Pizzaverkauf pv1 = new Pizzaverkauf(p1); pv1.print(); pv1.verkaufen(); pv1.print();Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden: -
Erstellen Sie im gleichen package eine Klasse
Speisekartemit-
der privaten Objektvariablen
angebotvom TypPizza[]
-
einem parameterlosen Konstruktor
Speisekarte(). In diesem Konstruktor wird fürangeboteinPizza-Array der Länge0erzeugt. -
einer Objektmethode
pizzaHinzufuegen(Pizza pizza). Diese Methode fügt die als Parameter übergebenepizzadem angebot-Array hinzu.
Beachten Sie:- Um dem
angebot-Array eine neue Pizza hinzuzufügen, muss die Länge des Arrays um 1 erhöht werden. - Kopieren Sie sich dazu das alte
angebot-Array. - Erzeugen Sie dann ein neues
angebot-Array, das um 1 länger ist als das alte. - Kopieren Sie das bisherige Angebot zurück in das neue
angebot-Array. - Fügen Sie die neue Pizza (Parameter
pizza) als letztes Element im neuenangebot-Array hinzu.
- Um dem
-
einer Objektmethode
getLength(). Diese Methode gibt die Länge desangebot-Arrays zurück. - einer Objektmethode
pizzaIstImAngebot(Pizza pizza). Diese Methode gibt eintruezurück, wenn die als Parameter übergebenepizzaimangebot-Array enthalten ist. Prüfen Sie die Gleichheit mithilfe derequals()-Methode vonPizza. -
einer Objektmethode
pizzaLoeschen(Pizza pizza). Diese Methode löscht die als Parameter übergebenepizzaaus demangebot-Array (wenn Sie darin enthalten ist).
Beachten Sie:- Nach dem Löschen der Pizza aus dem
angebot-Array soll dasangebot-Array wieder um 1 kleiner sein als vorher (falls die zu löschende Pizza überhaupt imangebot-Array enthalten war). - Kopieren Sie also das alte
angebot-Array außer die zu löschende Pizza. - Ihre Kopie ist dann das neue
angebot-Array.
- Nach dem Löschen der Pizza aus dem
-
einer Objektmethode
getPizzaAtIndex(int index). Diese Methode gibt die Pizza zurück, die imangebot-Array beim Indexindexeingetragen ist. Prüfen Sie, ob der übergebene Parameter ein gültiger Index aus demangebot-Array ist. Wenn nicht, geben Sienullzurück. -
Überschreiben Sie die Objektmethode
toString(), die die Details der Speisekarte in folgender Form alsStringzurückgibt (Beispielwerte): -
und einer Objektmethode
print(), die den vontoString()zurückgegebenenStringauf der Konsole ausgibt
-
-
Fügen Sie in der
main()-Methode derTestklassefolgende Anweisungen hinzu:und führen Sie dieSystem.out.printf("%n%n--------------------- Test Speisekarte -------------------------%n%n"); Speisekarte s1 = new Speisekarte(); s1.pizzaHinzufuegen(p1); s1.pizzaHinzufuegen(p2); s1.pizzaHinzufuegen(p3); s1.pizzaHinzufuegen(p4); s1.pizzaHinzufuegen(p5); s1.print(); s1.pizzaLoeschen(p3); s1.print();Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden: -
Zusatz Erstellen Sie im gleichen package eine Klasse
Pizzariamit- der privaten Objektvariablen
verkaeufevom TypPizzaverkauf[].
-
einem parametrisierten Konstruktor
Pizzeria(Speisekarte karte). In diesem Konstruktor wird- das
verkaeufe-Array erzeugt und hat die gleiche Länge wie dasangebot-Array der Speisekartekarte(siehegetLength()-Methode ausSpeisekarte). - jedes Element des
verkaeufe-Arrays zeigt auf einPizzaverkauf-Objekt. Erzeugen Sie allePizzaverkauf-Objekte. Übergeben Sie demPizzaverkauf-Konstruktor dazu die jeweiligenPizza-Objekte aus der Speisekartekarte.
- das
-
einer Objektmethode
bestellen(). Diese Methode gibt einintzurück. In dieser Methode soll zufällig ein Index aus demverkaeufe-Array erzeugt werden. Nutzen Sie dazu die KlasseRandomaus demjava.util-Paket. Verwenden Sie die ObjektmethodenextInt(int bound)der KlasseRandom. Wenden SienextInt()so an, dass auch tatsächlich ein gültiger Index desverkaeufe-Arrays erzeugt wird. Geben Sie diesen zufällig erzeugten Index zurück (das Bestellen entspricht also dem Nennen einer Nummer aus der Speisekarte). - einer Objektmethode
verkaufen(int index). Durch den Aufruf der Methode wird die Pizza verkauft, die imverkaeufe-Array am Indexindexsteht. Nutzen Sie für den Verkauf dieverkaufen()-Methode der Klasse Pizzaverkauf. Überprüfen Sie, ob der als Parameter übergebene Wert fürindextatsächlich einem Index imverkaeufe-Array entspricht. - einer Objektmethode
tagesVerkauf(int anzVerkaeufe). In dieser Methode wirdanzVerkaeufeoft eine Pizza verkauft (verkaufen(int index)). Welche Pizza verkauft wird (also welcherindex), wird durch die Methodebestellen()jeweils zufällig ermittelt. - einer Objektmethode
print(). Diese Methode erzeugt folgende Ausgabe (Beispielwerte):Das heißt, es wird am Anfang der Zeile der Name der Pizza aus demSalami : *********************************** Margheritha : ************************************ Hawaii : ***************************************** Calzone : **************************************verkaeufe-Array ausgegeben und danach für die Anzahl der Verkäufe jeweils ein*. - einer Objektmethode
meistverkauftePizza(). Diese Methode gibt die Pizza aus demverkaeufe-Array zurück, die am meisten verkauft wurde. - einer Objektmethode
gesamtEinnahmen(). Diese Methode gibt die Summe aller Einnahmen alsdoublezurück. Die Einnahmen ergeben sich aus der Summe der Umsätze aller Pizzen (Methodeumsatz()vonPizzaverkauf) aus demverkaeufe-Array.
- der privaten Objektvariablen
-
Fügen Sie in der
main()-Methode derTestklassefolgende Anweisungen hinzu:und führen Sie dieSystem.out.printf("%n%n------------------------ Test Pizzaria -------------------------%n%n"); Pizzeria pz1 = new Pizzeria(s1); pz1.tagesVerkauf(150); pz1.print(); System.out.println(); System.out.print("Meistverkaufte Pizza : "); pz1.meistverkauftePizza().print(); System.out.printf("Die Gesamteinnahmen betragen %.2f Euro", pz1.gesamtEinnahmen());Testklasseaus. Es sollten folgende zusätzliche Ausgaben erzeugt werden (Zufallswerte):------------------------ Test Pizzaria ------------------------- Salami : ****************************** Margheritha : ******************************************* Hawaii : ******************************************* Calzone : ********************************** Meistverkaufte Pizza : Die Pizza Margheritha kostet 5,90 Euro. Die Gesamteinnahmen betragen 1026,00 Euro
Eine mögliche Lösung für Pizza
package klausurvorbereitung.pizza;
public class Pizza
{
private String name;
private float preis;
public Pizza(String name, float preis)
{
this.name = name;
this.preis = preis;
}
public String getName()
{
return this.name;
}
public float getPreis()
{
return this.preis;
}
@Override
public String toString()
{
return String.format("Die Pizza %s kostet %.2f Euro.", this.name, this.preis);
}
public void print()
{
System.out.println(this.toString());
}
@Override
public boolean equals(Object o)
{
if(o == null) return false;
if(this == o) return true;
if(this.getClass() != o.getClass()) return false;
Pizza po = (Pizza)o;
return (this.name.equals(po.name));
}
}
package klausurvorbereitung.pizza;
public class Pizzaverkauf
{
private Pizza pizza;
private int anzVerkaeufe;
public Pizzaverkauf(Pizza pizza)
{
this.pizza = pizza;
this.anzVerkaeufe = 0;
}
public void verkaufen()
{
this.anzVerkaeufe++;
}
public Pizza getPizza()
{
return this.pizza;
}
public int getAnzVerkaeufe()
{
return this.anzVerkaeufe;
}
public double umsatz()
{
return this.anzVerkaeufe * this.pizza.getPreis();
}
@Override
public String toString()
{
return String.format("Pizza %s wurde %d mal zum Preis von %.2f Euro verkauft.",
this.pizza.getName(), this.anzVerkaeufe, this.pizza.getPreis());
}
public void print()
{
System.out.println(this.toString());
}
}
package klausurvorbereitung.pizza;
public class Speisekarte
{
private Pizza[] angebot;
public Speisekarte()
{
this.angebot = new Pizza[0];
}
public int getLength()
{
return this.angebot.length;
}
public void pizzaHinzufuegen(Pizza pizza)
{
Pizza[] kopie = new Pizza[this.angebot.length + 1];
for (int index = 0; index < this.angebot.length; index++)
{
kopie[index] = this.angebot[index];
}
kopie[kopie.length - 1] = pizza;
this.angebot = kopie;
}
public boolean pizzaIstImAngebot(Pizza pizza)
{
for (int index = 0; index < this.angebot.length; index++)
{
if(this.angebot[index].equals(pizza))
{
return true;
}
}
return false;
// System.out.println("dead code");
}
public void pizzaLoeschen(Pizza pizza)
{
if(this.pizzaIstImAngebot(pizza))
{
Pizza[] kopie = new Pizza[this.angebot.length - 1];
int indexKopie = 0;
for (int indexAngebot = 0; indexAngebot < this.angebot.length; indexAngebot++)
{
if(!this.angebot[indexAngebot].equals(pizza))
{
kopie[indexKopie] = this.angebot[indexAngebot];
indexKopie++;
}
}
this.angebot = kopie;
}
}
public Pizza getPizzaAtIndex(int index)
{
if(index>=0 && index<this.angebot.length)
{
return this.angebot[index];
}
else
{
return null;
}
}
@Override
public String toString()
{
String s = String.format("====== Speisekarte ======%n");
for (int index = 0; index < this.angebot.length; index++)
{
s = s + String.format("%-15s %.2f Euro %n",
this.angebot[index].getName(), this.angebot[index].getPreis());
}
return s;
}
public void print()
{
System.out.println(this.toString());
}
}
package klausurvorbereitung.pizza;
import java.util.Random;
public class Pizzeria
{
private Pizzaverkauf[] verkaeufe;
public Pizzeria(Speisekarte karte)
{
this.verkaeufe = new Pizzaverkauf[karte.getLength()];
for (int index = 0; index < this.verkaeufe.length; index++)
{
this.verkaeufe[index] = new Pizzaverkauf(karte.getPizzaAtIndex(index));
}
}
public int bestellen()
{
Random r = new Random();
int index = r.nextInt(this.verkaeufe.length);
return index;
}
public void verkaufen(int index)
{
if(index>=0 && index<this.verkaeufe.length)
{
this.verkaeufe[index].verkaufen();
}
}
public void tagesVerkauf(int anzVerkaeufe)
{
for(int i=0; i<anzVerkaeufe; i++)
{
int index = this.bestellen();
this.verkaufen(index);
}
}
public void print()
{
for (int index = 0; index < this.verkaeufe.length; index++)
{
Pizza p = this.verkaeufe[index].getPizza();
int anzVerkaeufe = this.verkaeufe[index].getAnzVerkaeufe();
String s = String.format("%-13s : ", p.getName());
for(int stars = 0; stars < anzVerkaeufe; stars++)
{
s = s + "*";
}
System.out.println(s);
}
}
public Pizza meistverkauftePizza()
{
int maxIndex = 0;
for (int index = 0; index < this.verkaeufe.length; index++)
{
if(this.verkaeufe[index].getAnzVerkaeufe() > this.verkaeufe[maxIndex].getAnzVerkaeufe())
{
maxIndex = index;
}
}
return this.verkaeufe[maxIndex].getPizza();
}
public double gesamtEinnahmen()
{
double gesamtEinnahmen = 0.0;
for (int index = 0; index < this.verkaeufe.length; index++)
{
gesamtEinnahmen += this.verkaeufe[index].umsatz();
}
return gesamtEinnahmen;
}
}
package klausurvorbereitung.pizza;
public class Testklasse
{
public static void main(String[] args)
{
System.out.printf("%n%n------------------------- Test Pizza ---------------------------%n%n");
Pizza p1 = new Pizza("Salami", 6.9f);
Pizza p2 = new Pizza("Margheritha", 5.9f);
Pizza p3 = new Pizza("Tonno", 6.9f);
Pizza p4 = new Pizza("Hawaii", 6.9f);
Pizza p5 = new Pizza("Calzone", 7.9f);
Pizza p6 = new Pizza("Salami", 6.9f);
p1.print();
p2.print();
p3.print();
p4.print();
p5.print();
System.out.println("p1 gleich p2 ? : " + p1.equals(p2));
System.out.println("p1 gleich p1 ? : " + p1.equals(p1));
System.out.println("p1 gleich p6 ? : " + p1.equals(p6));
System.out.printf("%n%n--------------------- Test Pizzaverkauf ------------------------%n%n");
Pizzaverkauf pv1 = new Pizzaverkauf(p1);
pv1.print();
pv1.verkaufen();
pv1.print();
System.out.printf("%n%n--------------------- Test Speisekarte -------------------------%n%n");
Speisekarte s1 = new Speisekarte();
s1.pizzaHinzufuegen(p1);
s1.pizzaHinzufuegen(p2);
s1.pizzaHinzufuegen(p3);
s1.pizzaHinzufuegen(p4);
s1.pizzaHinzufuegen(p5);
s1.print();
s1.pizzaLoeschen(p3);
s1.print();
System.out.printf("%n%n------------------------ Test Pizzaria -------------------------%n%n");
Pizzeria pz1 = new Pizzeria(s1);
pz1.tagesVerkauf(150);
pz1.print();
System.out.println();
System.out.print("Meistverkaufte Pizza : ");
pz1.meistverkauftePizza().print();
System.out.printf("Die Gesamteinnahmen betragen %.2f Euro", pz1.gesamtEinnahmen());
}
}
Video zu Pizza
Power
-
Implementieren Sie eine Klasse
Power. -
Idee : Die Klasse
Powerimplementiert die Potenz. Eine Potenz besteht aus einer Basis (base) und dem Exponenten (exp): base^exp, z.B.8^4 = 8 ∙ 8 ∙ 8 ∙ 8 -
Objektvariablen sind
baseundexpvom Typint. Beide Objektvariablen sind nur innerhalb der Klasse sichtbar! - Implementieren Sie getter für die Basis (
getBase()) und für den Exponenten (getExp()) (Sichtbarkeitpublic). - Implementieren Sie für die Klasse
Powereinen parametrisierten KonstruktorPower(int base, int exp). Die Werte der Parameter werden verwendet, um den Objektvariablen Werte zuzuweisen. - Implementieren Sie eine Objektmethode
getValue(), die eindoublezurückgibt. Die Methode gibt den Wert der Potenz zurück, also z.B. für8^4den Wert4096.0. Beachten Sie:
Die Verwendung derMath-Klasse ist nicht erlaubt! - Überschreiben Sie die Methode
toString(), so dass eine Potenz in der Form(base, exp)alsStringzurückgegeben wird, wobeibaseundexpdie Werte der jeweiligen Objektvariablen sein sollen, also z.B.(8, 4). - Implementieren Sie eine Objektmethode
print(), die mithilfe vontoString()eine Potenz auf der Konsole ausgibt. - Erstellen Sie eine Klasse
PowerTestmitmain()-Methode. Erzeugen Sie in dermain()-Methode folgende fünf Objekte der KlassePower:3^4,-3^4,3^0,3^(-4),-3^(-4). Wenden Sie jeweils die Methodeprint()an und geben Sie außerdem jeweils den Wert der Potenz auf die Konsole aus. Es sollte eine Ausgabe in ungefähr der folgenden Form erfolgen:
- Erstellen Sie eine Klasse
PowerOfTwo. Diese Klasse erbt vonPower. - Idee : Ein Objekt der Klasse
PowerOfTwoist eine Potenz zur Basis2, also z.B.2^4. - Implementieren Sie einen parametrisierten Konstruktor
PowerOfTwo(int exp). Beachten Sie, dass der Basis der Wert2zugewiesen wird. - Implementieren Sie eine Objektmethode
printBinary(). Diese Methode gibt die Potenz als Binärzahl (bestehend aus Einsen und Nullen) auf die Konsole aus, z.B.2^4:1 0 0 0 0. Tipp : es kommt vorne immer eine1und danach kommen so viele Nullen, wie der Exponent groß ist. Wenn der Exponent kliner als0ist, dann geben SieZahl ist kleiner als 1auf die Konsole aus. Die Binärzahl für eine Potenz kleiner als0muss also nicht ermittelt werden. - Erzeugen Sie in der
main()-Methode der KlassePowerTestfolgende drei Objekte der KlassePowerOfTwo:2^4,2^(-4),2^0und rufen Sie jeweils die Methodenprint()undprintBinary()auf. Es sollte eine Ausgabe in ungefähr der folgenden Form erfolgen:
- Erstellen Sie eine Klasse
PowerArray. Objektvariable istpvom TypPower[].pist nur innerhalb der Klasse sichtbar! - Implementieren Sie einen parametrisierten Konstruktor
PowerArray(int length). Darin wird dasp-Array erzeugt. Die Länge vonpentspricht dem Wert vonlength. - Implementieren Sie eine Objektmethode
fillArray(). Bei Aufruf der Methode soll das Arraypmit Objekten der KlassePowergefüllt werden. Die Werte der Objektvariablen derPower-Objekte werden zufällig mit Hilfe derRandom-Klasse erzeugt (um dieRandom-Klasse verwenden zu können, müssen Sie diese aus demjava.util-Paket importieren). Beachten Sie folgende Anforderungen:- Sowohl die Basis als auch der Exponent können Werte aus dem Wertebereich
1..5(jeweils inklusive) annehmen - Die Basis soll nie einen größeren Wert als der Exponent haben (aber es können beide gleich sein).
- Sowohl die Basis als auch der Exponent können Werte aus dem Wertebereich
- Implementieren Sie eine Objektmethode
createArrayOfValues(). Diese Methode liefert eindouble[]-Array zurück, das alle Werte der Potenzen aus demp-Array enthält. - Implementieren Sie eine Objektmethode
getIndexExponent(int exponent), die den Index des (ersten) Elementes zurückliefert, bei dem dasPower-Objekt den Exponenten hat, der als Parameter der Methode übergeben wird. Existiert ein solches Objekt nicht im Array, wird-1zurückgegeben. - Überschreiben Sie die Methode
toString(), so dass dasp-Array in der Form (Beispiel) alsStringzurückgegeben wird. Implementieren Sie eine Methodeprint(), die mithilfe vontoString()dasp-Array auf die Konsole ausgibt. - Implementieren Sie eine Methode
sort(), die dasp-Array nach den Größen der Werte der Potenzen ordnet – vom kleinsten Wert zum größten Wert. Die Verwendung derArrays-Klasse aus demjava.util-Paket ist nicht gestattet. Sollten 2 Potenzen den gleichen Wert haben, z.B.1^2und1^4, dann soll die Potenz mit dem höheren Exponent größer sein als die Potenz mit dem kleineren Exponenten. - Erzeugen Sie in der
main()-Methode der KlassePowerTestein Objekt der KlassePowerArray, so dass dasp-Array die Länge10hat. Rufen Sie für dieses Objekt die ObjektmethodenfillArray(),print(),sort()und wiederprint()auf. Testen Sie außerdem (mindestens) einmal diegetIndexExponent()- und diecreateArrayOfValues()- Methode (um das Array of Values auf der Konsole auszugeben, verwenden Sie die statischetoString()-Methode derArrays-Klasse (import java.util.Arrays;). Es sollte eine Ausgabe in ungefähr der folgenden Form erfolgen (Zufallswerte):
eine mögliche Lösung für Power
Computer
-
Implementieren Sie eine Klasse
Computer.- Objektvariablen sind
herstellervom TypString,ramvom Typintundplattevom Typint. Die Objektvariablen sind in der Klasse und allen abgeleiteten Klassen sichtbar! - Schreiben Sie für alle Objektvariablen Getter (
getRam(),getPlatte(),getHersteller()). - Schreiben Sie einen parametrisierten Konstruktor
Computer(String hersteller, int ram, int platte). Die Parameterwerte werden genutzt, um den Objektvariablen die entsprechenden Werte zuzuweisen. - Schreiben Sie eine Objektmethode
gleicherHersteller(Computer c), die eintruezurückgibt, wenncvom gleichen Hersteller ist, wie das aufrufende Objekt. Ansonsten wird einfalsezurückgegeben. - Schreiben Sie eine Objektmethode
gleicherHersteller(String hersteller), die eintruezurückgibt, wenn das aufrufende Objekt den Hersteller hat, der als Parameterwert der Methode übergeben wird. Ansonsten wird einfalsezurückgegeben. - Überschreiben Sie die Methode
toString(), so dass der Computer in folgender Form angezeigt wird (Beispielwerte): - Schreiben Sie eine Methode
print(), die mit Hilfe vontoString()eine Ausgabe auf der Konsole erzeugt.
- Objektvariablen sind
-
Erstellen Sie eine Klasse
Testklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode fünf Objekte der KlasseComputer:- lenovo mit 8 RAM und 256 SSD
- lenovo mit 16 RAM und 512 SSD
- apple mit 4 RAM und 256 SSD
- apple mit 8 RAM und 512 SSD
- dell mit 8 RAM und 256 SSD
Wenden Sie jeweils die Methode
print()an, wenden Sie die MethodegleicherHersteller(Computer c)für den ersten Computer an und vergleichen ihn mit dem zweiten und dem dritten. Geben Sie jeweils den Wert des Vergleiches aus.
Es sollten folgende Ausgaben auf der Konsole erzeugt werden: -
Erstellen Sie eine Klasse
Notebook. Diese Klasse erbt von der KlasseComputer.- Zusätzliche Objektvariable der Klasse
Notebookistmonitorvom Typint. Die Objektvariablen sind in der Klasse und allen abgeleiteten Klassen sichtbar! - Implementieren Sie einen parametrisierten Konstruktor
Notebook(String hersteller, int ram, int platte, int monitor). Die Parameterwerte werden genutzt, um den Objektvariablen des zurückgegebenen Objektes die entsprechenden Werte zuzuweisen. - Überschreiben Sie die Methode
toString(), so dass eine Zeichenkette der Form zurückgegeben wird (die entsprechenden Werte werden eingesetzt - siehe Ausgabe dermain()-Methode unten).
- Zusätzliche Objektvariable der Klasse
-
Erzeugen Sie in der
main()-Methode derTestklassezwei Objekte der KlasseNotebook(Beispielwerte siehe nächste Zeile) und rufen Sie jeweils dieprint()-Methode auf.
Es sollten folgende Ausgaben auf der Konsole erzeugt werden: -
Erstellen Sie eine Klasse
NotebookArray.- Objektvariable ist
notebooksvom TypNotebook[]. Die Objektvariable ist nur innerhalb der Klasse sichtbar! - Schreiben Sie einen parametrisierten Konstruktor
NotebookArray(int anzahl). Darin wird dasnotebooks-Array mit der Längeanzahlerzeugt (es wird noch nicht mitNotebook-Objekten befüllt - das macht die nächste Methode). -
Schreiben Sie eine Objektmethode
konfigurieren(). Bei Aufruf der Methode wird das Arraynotebooksmit Objekten der KlasseNotebookbefüllt.
Beachten Sie folgende Anforderungen:- das
notebooks-Array wird vollständig befüllt -
für das Erzeugen der Objekte wird eine Zufallszahl aus dem Bereich
[0, 1, 2, 3, 4](4inklusive) erzeugt. Nutzen Sie dazu die KlasseRandomaus demjava.util-Paket. Mithilfe vonnextInt(int exclusiveBorder)wird eine Zufallszahl erzeugt. Je nach Wert der Zufallszahl wird ein anderes Notebook erzeugt:Wert
0-> zu erzeugendes Objekt:("lenovo", 8, 256, 13)
Wert1-> zu erzeugendes Objekt:("lenovo", 16, 512, 15)
Wert2-> zu erzeugendes Objekt:("apple", 4, 256, 13)
Wert3-> zu erzeugendes Objekt:("apple", 8, 512, 13)
Wert4-> zu erzeugendes Objekt:("dell", 8, 512, 15)
- das
-
Überschreiben Sie die Objektmethode
toString(). Diese Methode gibt einen String in der Form (Beispielwerte):zurück.[ 5 : (lenovo, 8, 256, 13 ), (apple, 8, 512, 13 ), (lenovo, 16, 512, 15 ), (lenovo, 8, 256, 13 ), (apple, 8, 512, 13 )]
Beachten Sie:- die eckigen Klammern zu Beginn und Ende des Strings
- die Angabe der Anzahl der Elemente am Anfang (im obigen Beispiel
5 :) - das Komma zwischen den Elementen (aber nicht nach dem letzten Element)
-
Schreiben Sie eine Methode
print(), die den intoString()erzeugtenStringauf die Konsole ausgibt. -
Schreiben Sie eine Objektmethode
getHersteller(String hersteller). Diese Methode gibt ein Objekt vom TypNotebookArrayzurück. Dasnotebooks-Array des erzeugten Objektes enthält genau alle Notebooks aus demnotebooks-Array des aufrufenden Objektes, die von dem Hersteller sind, der als Parameterwert übergeben wird.
Beispiel: Angenommen, dasnotebooks-Array des aufrufenden Objektes sieht so aus:Dann würde bei Aufruf der Methode[ 10 : (lenovo, 16, 512, 15 ), (apple, 8, 512, 13 ), (apple, 4, 256, 13 ), (apple, 8, 512, 13 ), (lenovo, 8, 256, 13 ), (lenovo, 16, 512, 15 ), (lenovo, 16, 512, 15 ), (lenovo, 16, 512, 15 ), (apple, 4, 256, 13 ), (apple, 4, 256, 13 ) ]getHersteller("apple")das zurückgegebeneNotebookArray-Objekt folgendesnotebooks-Array haben:, bei Aufruf der Methode[ (apple, 8, 512, 13 ), (apple, 4, 256, 13 ), (apple, 8, 512, 13 ), (apple, 4, 256, 13 ), (apple, 4, 256, 13 ) ]getHersteller("lenovo")das zurückgegebeneNotebookArray-Objekt folgendesnotebooks-Array:und bei Aufruf der Methode[ (lenovo, 16, 512, 15 ), (lenovo, 8, 256, 13 ), (lenovo, 16, 512, 15 ), (lenovo, 16, 512, 15 ), (lenovo, 16, 512, 15 ) ]getHersteller("dell")das zurückgegebeneNotebookArray-Objekt ein leeresnotebooks-Array: -
Schreiben Sie eine Objektmethode
sortRamPlatte(). Diese Methode sortiert dasnotebooks-Array wie folgt:- aufsteigend nach RAM-Größe (kleinste RAM-Größe zuerst)
- ist die RAM-Größer zweier Notebooks gleich, entscheidet die Plattengröße (kleinste Plattengröße zuerst)
- Objektvariable ist
-
Erzeugen Sie in der
main()-Methode derTestklasseein Objekt der KlasseNotebookArray, so dass dasnotebooks-Array die Länge10hat. Rufen Sie für dieses Objekt die Objektmethodenkonfigurieren(),print(),sortRamPlatte()undprint()auf. Testen Sie außerdem diegetHersteller()-Methode für alle drei Hersteller und geben Sie jeweils das erzeugte Array aus.
Es sollten folgende Ausgaben auf der Konsole erzeugt werden (Zufallswerte!):------------------ Test NotebookArray ------------------ [ 10 : (apple, 8, 512, 13), (lenovo, 16, 512, 15), (apple, 4, 256, 13), (lenovo, 8, 256, 13), (apple, 4, 256, 13), (dell, 8, 512, 15), (apple, 4, 256, 13), (apple, 8, 512, 13), (lenovo, 8, 256, 13), (apple, 8, 512, 13)] [ 10 : (apple, 4, 256, 13), (apple, 4, 256, 13), (apple, 4, 256, 13), (lenovo, 8, 256, 13), (lenovo, 8, 256, 13), (apple, 8, 512, 13), (dell, 8, 512, 15), (apple, 8, 512, 13), (apple, 8, 512, 13), (lenovo, 16, 512, 15)] [ 3 : (lenovo, 8, 256, 13), (lenovo, 8, 256, 13), (lenovo, 16, 512, 15)] [ 6 : (apple, 4, 256, 13), (apple, 4, 256, 13), (apple, 4, 256, 13), (apple, 8, 512, 13), (apple, 8, 512, 13), (apple, 8, 512, 13)] [ 1 : (dell, 8, 512, 15)]
eine mögliche Lösung für Computer
Uhrzeit
-
Implementieren Sie eine Klasse
Uhrzeit.-
Objektvariablen sind
stundenvom Typint,minutenvom Typintundsekundenvom Typint. Die Objektvariablen sind nur in der Klasse sichtbar! -
Schreiben Sie einen parametrisierten Konstruktor
Uhrzeit(int sekunden). Übergeben wird eine beliebige Anzahl von Sekunden. Aus diesem Wert wird die Uhrzeit berechnet.-
Beispiel 1: Angenommen, es wird der Wert
83übergeben, dann sind das0Stunden,1Minute (60Sekunden) und23Sekunden. -
Beispiel 2: Angenommen, es wird der Wert
3662übergeben, dann sind das1Stunde (3600Sekunden),1Minute (60Sekunden) und2Sekunden. -
Beispiel 3: Angenommen, es wird der Wert
86399übergeben, dann sind das23Stunden (23x3600Sekunden),59Minuten (59x60Sekunden) und59Sekunden. -
Die Stunden sollen immer im Bereich
0..23sein, d.h. für einen Stunden-Wert größer als24nehmen Sie einfach denModulo-24-Wert. -
Initialisieren Sie die Objektvariablen mit den berechneten Werten.
-
-
Schreiben Sie eine Objektmethode
uhrzeitInSekunden(). Diese Methode gibt die Uhrzeit in Sekunden alsintzurück. Der Wert der zurückgegebenen Sekunden berechnet sich aus den Stunden multipliziert mit3600plus den Minuten multipliziert mit60plus den Sekunden des aufrufendenUhrzeit-Objektes. -
Schreiben Sie eine Objektmethode
frueher(Uhrzeit u), die eintruezurückgibt, wenn die Uhrzeit des aufrufenden Objektes früher liegt als der Wert vonu;falsesonst. -
Schreiben Sie eine Objektmethode
jetztPlusXSekunden(int sekunden), die ein neuesUhrzeit-Objekt zurückgibt. Die Uhrzeit des neuen Objektes ergibt sich aus der Uhrzeit des aufrufenden Objektes plus der Anzahl der Sekunden, die als Parameter übergeben werden. -
Schreiben Sie eine Objektmethode
differenzInSekunden(Uhrzeit u), die die Anzahl in Sekunden (int) zurückgibt, die zwischen der Uhrzeit des aufrufenden Objektes unduliegen. Geben Sie die Anzahl stets als positiven Wert zurück! Sie können dazu die MethodeMath.abs(int wert)verwenden, die den absoluten Betrag vonwertzurückgibt. -
Überschreiben Sie die Methode
toString(), so dass der Wert des aufrufenden Objektes in der Formhh:mm:ssalsStringzurückgegeben wird, z.B.23:59:59. Achten Sie darauf, dass die Stunden, Minuten und Sekunden führende Nullen enthalten können, also z.B.01:02:03! -
Schreiben Sie eine Methode
print(), die den vontoString()erzeugtenStringauf die Konsole ausgibt.
-
-
Erstellen Sie eine Klasse
Testklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode vier Objekte der KlasseUhrzeit. Verwenden Sie als Parameterwerte:83,3662,86399und172799. Wenden Sie jeweils die MethodenSystem.out.print()undprint()ausUhrzeitso an, dass folgende Ausgabe entsteht:
-
Wenden Sie außerdem jeweils die Methoden
System.out.println()sowiefrueher(),jetztPlusXSekunden(),differenzInSekunden()(und evtl.toString()) ausUhrzeitso an, dass folgende Ausgabe entsteht:
-
Erstellen Sie eine Klasse
UhrzeitArray. Objektvariableuhrenist ein Array, das Elemente vonUhrzeitaufnimmt. Die Variable ist nur innerhalb der Klasse sichtbar.- Schreiben Sie einen parametrisierten Konstruktor
UhrzeitArray(int laenge). Innerhalb des Konstruktors wird das Array erzeugt, auf das die Objektvariableuhrenreferenziert. Das Array hat die Längelaenge(Parameterwert). - Schreiben Sie eine Objektmethode
fill(), die dasuhren-Array vollständig mitUhrzeit-Objekten befüllt. Die Parameterwerte derUhrzeit-Objekte werden zufällig erzeugt. Erzeugen Sie ein Objekt der KlasseRandom(dafür mussjava.util.Randomimportiert werden) und erzeugen Sie die Parameter-Werte für dieUhrzeit-Objekte zufällig (unter Verwendung desRandom-Objektes) aus dem Bereich[0, ..., 86399](0und86399jeweils inklusive) - Überschreiben Sie die Objektmethode
toString(), so dass dasuhren-Array wie folgt als Zeichenkette zurückgegeben wird (Beispielwerte): Also die Uhrzeit jeweils in runden Klammern und durch Komma getrennt sowie das ganze Array in runden Klammern. - Schreiben Sie eine Objektmethode
print(), so dass auf der Konsole die durchtoString()erzeugte eine Zeichenkette ausgegeben wird. - Schreiben Sie eine Objektmethode
spaeteste(). Diese Methode gibt die größte (späteste)Uhrzeitaus dem Arrayuhrenzurück. - Schreiben Sie eine Objektmethode
zwischen(Uhrzeit frueh, Uhrzeit spaet). Diese Methode gibt einUhrzeitArray-Objekt zurück. Das zurückgegebeneUhrzeitArray-Objekt enthält alleUhrzeit-Objekte aus dem Arrayuhren, welche zwischen den beiden Uhrzeitenfruehundspaetliegen. - Schreiben Sie eine Objektmethode
sortieren(). Diese Methode sortiert dasuhren-Array aufsteigend beginnend mit der kleinsten Uhrzeit. - Schreiben Sie eine Objektmethode
kleinsterAbstand(). Diese Methode gibt einUhrzeitArrayder Länge2zurück. Es enthält die beidenUhrzeiten aus dem Arrayuhren, welche den kleinsten Abstand (Differenz in Sekunden) haben. Sie können beim Schreiben der Methode davon ausgehen, dass dasuhren-Array bereits sortiert ist!
- Schreiben Sie einen parametrisierten Konstruktor
-
Erzeugen Sie in der
main()-Methode ein Objekt der KlasseUhrzeitArray. Das Array soll die Länge10haben.-
Rufen Sie die
fill()- und dann dieprint()-Methode auf. Es entsteht folgende Ausgabe (Zufallswerte): -
Wenden Sie jeweils die Methoden
System.out.print()sowiespaeteste()so an, dass folgende Ausgabe entsteht (Zufallswerte):
-
Wenden Sie jeweils die Methoden
System.out.print()sowiesortieren()undprint()so an, dass folgende Ausgabe entsteht (Zufallswerte): -
Erzeugen Sie zwei weitere
Uhrzeit-Objektefrueh(Parameterwert36000) undspaet(Parameterwert72000) und rufen Sie damit die Objektmethodenzwischen(frueh, spaet)undprint()auf, so dass folgende Ausgabe entsteht (Zufallswerte): -
Wenden Sie jeweils die Methoden
System.out.print()sowiekleinsterAbstand()undprint()so an, dass folgende Ausgabe entsteht (Zufallswerte):
-
-
Zur Kontrolle: ungefähre Ausgabe auf der Konsole (in Teil 2 Zufallswerte):
--------------- Teil 1 --------------- z1 : 00:01:23 z2 : 01:01:02 z3 : 23:59:59 z4 : 23:59:59 z1 frueher als z2 ? true z3 frueher als z4 ? false z1 plus 40 Sekunden : 00:02:03 z2 plus 3598 Sekunden : 02:01:00 z3-z2 in Sekunden : 82737 --------------- Teil 2 --------------- ((06:38:30), (01:59:32), (07:16:48), (01:37:58), (18:16:06), (07:50:33), (01:41:47), (05:07:41), (12:38:08), (02:00:04)) spaeteste : 18:16:06 sortiert : ((01:37:58), (01:41:47), (01:59:32), (02:00:04), (05:07:41), (06:38:30), (07:16:48), (07:50:33), (12:38:08), (18:16:06)) frueh : 10:00:00 spaet : 20:00:00 zwischen : ((12:38:08), (18:16:06)) kleinster Abstand : ((01:59:32), (02:00:04))
eine mögliche Lösung für Uhrzeit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
Länder und Kontinente (pdf)
-
Implementieren Sie eine Klasse
Land.-
Objektvariablen sind
namevom TypString(Name des Landes),groessevom Typint(Größe des Landes) undeinwohnervom Typint(Anzahl der Einwohner des Landes). Die Objektvariablen sind nur in der Klasse sichtbar! -
Schreiben Sie für alle drei Objektvariablen Getter (
getName(),getGroesse(), `getEinwohner())! -
Schreiben Sie eine Objektmethode
erzeugeName(). Diese Methode gibt einenStringzurück, der sich aus einem großen Buchstaben und einer Ziffer zusammensetzt, also z.B.K8,L1,J4usw. Sowohl der Großbuchstabe als auch die Ziffer sollen mithilfe der KlasseRandomzufällig erzeugt werden. -
Tipps:
- um die Klasse
Randomverwenden zu können, müssen Sie sie aus demjava.util-Paket importieren, - verwenden Sie sowohl zum Erzeugen des Großbuchstabens als auch zum Erzeugen der Ziffer die Objektmethode
nextInt(int bound)der KlasseRandom, - der ASCII-Code von
Aist65, der vonZist90(es sind 26 verschiedene Buchstaben) - bei den Ziffern sind alle 10 Ziffern [0, …,9] möglich
- um die Klasse
-
Schreiben Sie für die Klasse
Landeinen parameterlosen Konstruktor. In diesem Konstruktor wird- die Objektvariable
namemithilfe dererzeugeName()-Methode initialisiert, - die Objektvariable
groessewird mit einem Zufallswert aus dem Wertebereich [1, …, 100] (100 verschiedene Zahlen, 1 und 100 inklusive) initialisiert und - die Objektvariable
einwohnermit einem Zufallswert aus dem Wertebereich [1, …, 1000] (1000 verschiedene Zahlen, 1 und 1000 inklusive) initialisiert. - Nutzen Sie erneut die Klasse
Randomund die MethodenextInt(bound).
- die Objektvariable
-
Schreiben Sie eine Objektmethode
ewDichte(). Diese Methode gibt eindoublezurück und gibt die Anzahl dereinwohnerprogroessean. -
Überschreiben Sie die Objektmethode
toString()so, dass ein Land in der folgenden Form als einStringzurückgegeben wird (Zufallswerte):- Zuerst der Name des Landes und dann
:, - dann die Groesse des Landes gefolgt von
km2 :, - dann die Anzahl der Einwohner des Landes gefolgt von
ew :und - dann die Einwohnerdichte mit vier Stellen nach dem Komma.
Der String soll so formatiert sein, dass die Doppelpunkte
:und das Komma bei der Einwohnerdichte bei der Ausgabe mehrerer Strings untereinander stehen!, also z.B. so: - Zuerst der Name des Landes und dann
-
Schreiben Sie eine Objektmethode
print(). Diese Methode gibt den durchtoString()erzeugtenStringauf der Konsole aus. -
Schreiben Sie die Objektmethode
istGroesser(Land land). Diese Methode gibt eintruezurück, wenn bei dem aufrufenden Objekt der Wert vongroessegrößer ist als vonland. Ansonstenfalse. -
Schreiben Sie die Objektmethode
hatMehrEinwohner(Land land). Diese Methode gibt eintruezurück, wenn bei dem aufrufenden Objekt der Wert voneinwohnergrößer ist als vonland. Ansonstenfalse. -
Schreiben Sie die Objektmethode
nameIstGroesser(Land land). Diese Methode gibt eintruezurück, wenn bei dem aufrufenden Objekt der Wert vonnamelexikografisch größer ist als vonland. Ansonsten false.
Tipp: für zwei Strings
s1unds2gilt, dasss1lexikografisch größer ist, wenn der Wert vons1.compareTo(s2)einem positivenint-Wert etspricht.- Überschreiben Sie die Objektmethode
equals(Object o). Diese Methode gibt eintruezurück, wenn das aufrufende Objekt den gleichen Namen hat wieo. Sonstfalse.
-
-
Schreiben Sie eine Klasse
Testklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode in einer Schleife10Objekte der KlasseLandund rufen (auch in der Schleife) jeweils dieprint()-Methode auf.Es entsteht folgende Ausgabe (Beispielwerte sind zufällig und unterscheiden sich!):
J6 : 34 km2 : 198 ew : 5,8235 B4 : 72 km2 : 171 ew : 2,3750 Z8 : 93 km2 : 712 ew : 7,6559 W2 : 75 km2 : 149 ew : 1,9867 O0 : 100 km2 : 576 ew : 5,7600 Q5 : 21 km2 : 210 ew : 10,0000 O9 : 71 km2 : 533 ew : 7,5070 B8 : 52 km2 : 57 ew : 1,0962 K4 : 71 km2 : 830 ew : 11,6901 A9 : 98 km2 : 288 ew : 2,9388-
Erzeugen Sie 1 Objekt von
Landund rufen Sie für dieses Objekt dieprint()-Methode auf. Erzeugen Sie in einer Schleife so lange ein weiteres Objekt vonLand, bis die beiden Objekte lautequals()-Methode gleich sind. Zählen Sie mit, wie viele Objekte vonLandSie erzeugen mussten, bis ein gleiches Objekt gefunden wurde. Geben Sie das gefundene Objekt mithilfe derprint()-Methode aus und wie viele Objekte erzeugt wurden.Es entsteht folgende Ausgabe (Beispielwerte sind zufällig und unterscheiden sich!):
-
Erzeugen Sie zwei Objekte
l1undl2vonLandund wenden Sie die MethodenistGroesser(),hatMehrEinwohner()undnameIstGroesser()so an, dass folgende Ausgabe entsteht (Zufallswerte!):
-
-
Schreiben Sie eine Klasse
Kontinent.-
Objektvariablen dieser Klasse sind:
-
laendervom TypLand[]und -
kontinentvom Typchar.
Beide Objektvariablen sind nur innerhalb der Klasse sichtbar!
-
-
Schreiben Sie einen parametrisierten Konstruktor
Kontinent(char kontinent, int anzahlLaender). Innerhalb des Konstruktors werden:- der Parameterwert
kontinentverwendet, um die Objektvariablekontinentzu initialisieren, - das Array erzeugt, auf das die Objektvariable
laenderreferenziert. Das Array hat die LängeanzahlLaender, - sowie das
laender-Array vollständig mit Objekten vom TypLandbefüllt.
- der Parameterwert
-
Schreiben Sie eine Objektmethode
getAnzLaender(). Diese Methode gibt die Anzahl der Länder imlaender-Array alsintzurück. -
Schreiben Sie eine Objektmethode
getLaender(). Diese Methode gibt eine Referenz auf daslaender-Array zurück. -
Schreiben Sie eine Objektmethode
getLandAtIndex(int index). Diese Methode gibt dasLandzurück, das imlaender-Array unter dem Indexindexgespeichert ist. Sollteindexkein korrekter Index aus demlaender-Array sein, wirdnullzurückgegeben. -
Schreiben Sie eine Objektmethode
getSummen(). Diese Methode gibt einint-Array der Länge2zurück.-
Der erste Eintrag in diesem Array ist die Summe der Größen aller Länder im
laender-Array und -
der zweite Eintrag ist die Summe der Einwohner aller Länder im
laender-Array.
-
-
Überschreiben Sie die Objektmethode
toString()so, dass einStringin der folgenden Form zurückgegeben wird (Zufallswerte!):Kontinent a -------------------------- S2 : 81 km2 : 918 ew : 11,3333 Z7 : 14 km2 : 453 ew : 32,3571 O4 : 35 km2 : 713 ew : 20,3714 Q9 : 14 km2 : 728 ew : 52,0000 F1 : 23 km2 : 714 ew : 31,0435 K9 : 67 km2 : 630 ew : 9,4030 W5 : 35 km2 : 128 ew : 3,6571 Summen : 269 : 4284-
es wird Kontinent und der Name des Kontinents in der ersten Zeile ausgegeben,
-
dann kommt eine Trennlinie (egal, wie lang),
-
dann kommen untereinander alle Länder aus dem laender-Array,
-
dann kommt eine Lehrzeile und
-
dann kommen die Summen der Größen der Länder und die Summen der Einwohner (beliebig formatiert)
-
-
Schreiben Sie eine Objektmethode
print(). Diese Methode gibt den durchtoString()erzeugtenStringauf der Konsole aus. -
Schreiben Sie eine Objektmethode
sortiere(int nach). Diese Methode sortiert daslaender-Array aufsteigend von klein nach groß. Der Parameter nach hat folgende Bedeutung:-
Ist der Wert von
nach0, dann wird das Array nach dergroesseder Länder sortiert. -
Ist der Wert von
nach1, dann wird das Array nach der Anzahl dereinwohnerder Länder sortiert. -
Ist der Wert von
nach2, dann wird das Array nach der Einwohnerdichte (ewDichte) der Länder sortiert. -
Für jeden anderen Wert von
nach(also alles außer0,1,2) wird das Array lexikografisch nach den Namen der Länder sortiert.
-
-
-
Erzeugen Sie in der
main()-Methode ein Array, in dem jedes Element vom TypKontinentist. Das Array hat die Länge5. Befüllen Sie dieses Array mitKontinent-Objekten in einer Schleife(!) wie folgt:-
Die fünf Kontinente haben die Namen
a,b,c,d,e(der ASCII-Code vonaist97, der vonbist98usw. ). -
Der erste Kontinent hat 7 Länder, der zweite hat 8, der dritte 9, der vierte 10 und der fünfte Kontinent hat 11 Länder.
-
Rufen Sie für alle Kontinente jeweils die
print()-Methode auf. Es entsteht folgende Ausgabe (Zufallswerte!):Kontinent a -------------------------- S2 : 81 km2 : 918 ew : 11,3333 Z7 : 14 km2 : 453 ew : 32,3571 O4 : 35 km2 : 713 ew : 20,3714 Q9 : 14 km2 : 728 ew : 52,0000 F1 : 23 km2 : 714 ew : 31,0435 K9 : 67 km2 : 630 ew : 9,4030 W5 : 35 km2 : 128 ew : 3,6571 Summen : 269 : 4284 Kontinent b -------------------------- R8 : 65 km2 : 337 ew : 5,1846 L9 : 57 km2 : 732 ew : 12,8421 T0 : 74 km2 : 796 ew : 10,7568 P4 : 13 km2 : 481 ew : 37,0000 L5 : 48 km2 : 575 ew : 11,9792 Q2 : 35 km2 : 538 ew : 15,3714 M8 : 72 km2 : 865 ew : 12,0139 T0 : 29 km2 : 855 ew : 29,4828 Summen : 393 : 5179 Kontinent c -------------------------- I9 : 91 km2 : 84 ew : 0,9231 X9 : 41 km2 : 842 ew : 20,5366 V7 : 31 km2 : 120 ew : 3,8710 O3 : 48 km2 : 990 ew : 20,6250 P6 : 27 km2 : 565 ew : 20,9259 J7 : 54 km2 : 810 ew : 15,0000 S9 : 72 km2 : 401 ew : 5,5694 C4 : 29 km2 : 486 ew : 16,7586 I2 : 6 km2 : 393 ew : 65,5000 Summen : 399 : 4691 Kontinent d -------------------------- C0 : 44 km2 : 122 ew : 2,7727 E2 : 8 km2 : 925 ew : 115,6250 I1 : 12 km2 : 585 ew : 48,7500 X9 : 13 km2 : 583 ew : 44,8462 Z6 : 10 km2 : 24 ew : 2,4000 J1 : 20 km2 : 161 ew : 8,0500 I2 : 75 km2 : 432 ew : 5,7600 Y8 : 69 km2 : 224 ew : 3,2464 H1 : 45 km2 : 410 ew : 9,1111 P1 : 24 km2 : 332 ew : 13,8333 Summen : 320 : 3798 Kontinent e -------------------------- J6 : 22 km2 : 358 ew : 16,2727 N9 : 95 km2 : 471 ew : 4,9579 G5 : 94 km2 : 524 ew : 5,5745 G0 : 72 km2 : 753 ew : 10,4583 L3 : 84 km2 : 49 ew : 0,5833 M8 : 39 km2 : 13 ew : 0,3333 K7 : 22 km2 : 881 ew : 40,0455 Y3 : 58 km2 : 355 ew : 6,1207 H3 : 28 km2 : 2 ew : 0,0714 V2 : 67 km2 : 94 ew : 1,4030 S9 : 15 km2 : 392 ew : 26,1333 Summen : 596 : 3892 -
Rufen Sie für den ersten Kontinent im Array nacheinander die Methoden
sortiere(0),print(),sortiere(1),print(),sortiere(2),print(),sortiere(3),print()auf. Es entsteht folgende Ausgabe (Zufallswerte!):Kontinent a // keine Ausgabe, nur Info: Kontinent unsortiert -------------------------- S2 : 81 km2 : 918 ew : 11,3333 Z7 : 14 km2 : 453 ew : 32,3571 O4 : 35 km2 : 713 ew : 20,3714 Q9 : 14 km2 : 728 ew : 52,0000 F1 : 23 km2 : 714 ew : 31,0435 K9 : 67 km2 : 630 ew : 9,4030 W5 : 35 km2 : 128 ew : 3,6571 Kontinent a // keine Ausgabe, nur Info: nach groesse sortiert -------------------------- Z7 : 14 km2 : 453 ew : 32,3571 Q9 : 14 km2 : 728 ew : 52,0000 F1 : 23 km2 : 714 ew : 31,0435 O4 : 35 km2 : 713 ew : 20,3714 W5 : 35 km2 : 128 ew : 3,6571 K9 : 67 km2 : 630 ew : 9,4030 S2 : 81 km2 : 918 ew : 11,3333 Kontinent a // keine Ausgabe, nur Info: nach einwohner sortiert -------------------------- W5 : 35 km2 : 128 ew : 3,6571 Z7 : 14 km2 : 453 ew : 32,3571 K9 : 67 km2 : 630 ew : 9,4030 O4 : 35 km2 : 713 ew : 20,3714 F1 : 23 km2 : 714 ew : 31,0435 Q9 : 14 km2 : 728 ew : 52,0000 S2 : 81 km2 : 918 ew : 11,3333 Kontinent a // keine Ausgabe, nur Info: nach ewDichte sortiert -------------------------- W5 : 35 km2 : 128 ew : 3,6571 K9 : 67 km2 : 630 ew : 9,4030 S2 : 81 km2 : 918 ew : 11,3333 O4 : 35 km2 : 713 ew : 20,3714 F1 : 23 km2 : 714 ew : 31,0435 Z7 : 14 km2 : 453 ew : 32,3571 Q9 : 14 km2 : 728 ew : 52,0000 Kontinent a // keine Ausgabe, nur Info: nach name sortiert -------------------------- F1 : 23 km2 : 714 ew : 31,0435 K9 : 67 km2 : 630 ew : 9,4030 O4 : 35 km2 : 713 ew : 20,3714 Q9 : 14 km2 : 728 ew : 52,0000 S2 : 81 km2 : 918 ew : 11,3333 W5 : 35 km2 : 128 ew : 3,6571 Z7 : 14 km2 : 453 ew : 32,3571
-
-
Schreiben Sie eine Klasse
Welt.-
Objektvariable dieser Klasse ist
kontinentevom TypKontinent[]. Die Objektvariable ist nur innerhalb der Klasse sichtbar! -
Schreiben Sie einen parametrisierten Konstruktor
Welt(Kontinent[] kontinente). Die Referenz des Parameters wird der Objektvariablen zugewiesen. -
Schreiben Sie eine Objektmethode
getAlleLaender(). Diese Methode gibt einLand-Array zurück, in dem alle Länder aus demkontinente-Array enthalten sind. -
Schreiben Sie eine Objektmethode
printAlleLaender(Land[] alleLaender), die das als Parameter übergebene Array in der folgenden Form ausgibt (Zufallswerte!):Es sind mehr Länder – ist hier gekürzt. Also einfach alle Länder untereinander.F1 : 23 km2 : 714 ew : 31,0435 K9 : 67 km2 : 630 ew : 9,4030 O4 : 35 km2 : 713 ew : 20,3714 Q9 : 14 km2 : 728 ew : 52,0000 S2 : 81 km2 : 918 ew : 11,3333 W5 : 35 km2 : 128 ew : 3,6571 Z7 : 14 km2 : 453 ew : 32,3571 R8 : 65 km2 : 337 ew : 5,1846 L9 : 57 km2 : 732 ew : 12,8421 T0 : 74 km2 : 796 ew : 10,7568 P4 : 13 km2 : 481 ew : 37,0000 L5 : 48 km2 : 575 ew : 11,9792 -
Schreiben Sie eine Objektmethode
enthaeltDoppel(). Diese Methode gibt eintruezurück, wenn daskontinente-Array Länder enthält, die den gleichen Namen haben, also lautequals()gleich sind. Ansonstenfalse. -
Schreiben Sie eine Objektmethode
groesstestLand(). Diese Methode gibt das größte Land (größtegroesse) aller Länder imkontinente-Array zurück. -
Schreiben Sie eine Objektmethode
alleLaenderGroesserAls(int groesse), die einLand[]zurückgibt. Das zurückgegebeneLand[]enthält alle Länder aus demkontinente-Array, die größer sind als der Parameterwertgroesse.
-
-
Testen Sie in der
main()-Methode die MethodengetAlleLaender()undprintAlleLaender()der KlasseWelt, so dass für die Methoden folgende Ausgaben entstehen (Zufallswerte!):L6 : 37 km2 : 122 ew : 3,2973 M9 : 22 km2 : 351 ew : 15,9545 O4 : 84 km2 : 717 ew : 8,5357 P4 : 93 km2 : 759 ew : 8,1613 Q3 : 3 km2 : 771 ew : 257,0000 R1 : 48 km2 : 610 ew : 12,7083 V3 : 40 km2 : 153 ew : 3,8250 E8 : 58 km2 : 195 ew : 3,3621 I9 : 19 km2 : 875 ew : 46,0526 Z6 : 47 km2 : 188 ew : 4,0000 Y6 : 75 km2 : 858 ew : 11,4400 C7 : 26 km2 : 676 ew : 26,0000 V8 : 1 km2 : 470 ew : 470,0000 Q8 : 92 km2 : 214 ew : 2,3261 T7 : 52 km2 : 544 ew : 10,4615 U1 : 46 km2 : 939 ew : 20,4130 C9 : 22 km2 : 594 ew : 27,0000 Z5 : 94 km2 : 353 ew : 3,7553 G6 : 9 km2 : 237 ew : 26,3333 D8 : 85 km2 : 910 ew : 10,7059 I5 : 15 km2 : 521 ew : 34,7333 V7 : 58 km2 : 546 ew : 9,4138 V8 : 25 km2 : 535 ew : 21,4000 I4 : 91 km2 : 407 ew : 4,4725 W1 : 92 km2 : 278 ew : 3,0217 M4 : 30 km2 : 494 ew : 16,4667 R5 : 8 km2 : 912 ew : 114,0000 O1 : 15 km2 : 858 ew : 57,2000 S3 : 46 km2 : 463 ew : 10,0652 M9 : 43 km2 : 624 ew : 14,5116 P5 : 35 km2 : 704 ew : 20,1143 Y2 : 2 km2 : 243 ew : 121,5000 X9 : 79 km2 : 928 ew : 11,7468 Z4 : 36 km2 : 311 ew : 8,6389 C6 : 2 km2 : 249 ew : 124,5000 J6 : 6 km2 : 683 ew : 113,8333 G8 : 18 km2 : 3 ew : 0,1667 W3 : 24 km2 : 502 ew : 20,9167 K9 : 81 km2 : 996 ew : 12,2963 A0 : 46 km2 : 950 ew : 20,6522 K9 : 99 km2 : 84 ew : 0,8485 T5 : 93 km2 : 488 ew : 5,2473 X1 : 40 km2 : 555 ew : 13,8750 Q9 : 18 km2 : 631 ew : 35,0556 I9 : 22 km2 : 867 ew : 39,4091- Rufen Sie die Methoden
enthaeltDoppel(),groesstesLand(),alleLaenderGroesserAls(50)undprintAlleLaender()so auf, dass folgende Ausgaben entstehen (Zufallswerte!):Enthaelt Doppel? : true groesstes Land : K9 : 99 km2 : 84 ew : 0,8485 Alle Laender groesser als 50 : O4 : 84 km2 : 717 ew : 8,5357 P4 : 93 km2 : 759 ew : 8,1613 E8 : 58 km2 : 195 ew : 3,3621 Y6 : 75 km2 : 858 ew : 11,4400 Q8 : 92 km2 : 214 ew : 2,3261 T7 : 52 km2 : 544 ew : 10,4615 Z5 : 94 km2 : 353 ew : 3,7553 D8 : 85 km2 : 910 ew : 10,7059 V7 : 58 km2 : 546 ew : 9,4138 I4 : 91 km2 : 407 ew : 4,4725 W1 : 92 km2 : 278 ew : 3,0217 X9 : 79 km2 : 928 ew : 11,7468 K9 : 81 km2 : 996 ew : 12,2963 K9 : 99 km2 : 84 ew : 0,8485 T5 : 93 km2 : 488 ew : 5,2473
- Rufen Sie die Methoden
eine mögliche Lösung für Länder und Kontinente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | |
MyString (pdf)
-
Information:
-
Wir bauen in Ansätzen die Klasse
Stringnach, d.h. wir bauen uns einen eigenen Datentypen für Zeichenketten:MyString. -
Ein Objekt von
MyStringist intern einchar[](wir nennen eswort). -
Von der Klasse
Stringselbst verwenden wir nur zwei Methoden:charAt(index)undlength(), und zwar in dem Konstruktor vonMyString, dem einStringals Parameter übergeben wird → das steht aber nochmal explizit dort -
Ansonsten verwenden wir von
Stringkeine weiteren Methoden (ist nicht erlaubt, wäre aber auch nirgendwo hilfreich) -
Wir erstellen insgesamt nur 2 Klassen:
MyStringundTestklasse.
-
-
Implementieren Sie eine Klasse
MyString.-
Objektvariable ist
wortvom Typchar[](unsere Zeichenkette - Array von Zeichen). Die Objektvariable ist nur in der Klasse sichtbar! -
Schreiben Sie für
MyStringeinen parameterlosen Konstruktor. In diesem Konstruktor wird daswort-Array erzeugt mit der Länge0. -
Schreiben Sie für
MyStringeinen parametrisierten Konstruktor, dem ein einzelnes Zeichen (char) als Parameter übergeben wird. In diesem Konstruktor wird daswort-Array erzeugt mit der Länge1und das einzelne Zeichen wird in daswort-Array gespeichert. -
Schreiben Sie für
MyStringeinen parametrisierten Konstruktor, dem einStringals Parameter übergeben wird. In diesem Konstruktor wird daswort-Array erzeugt mit der Länge des Strings und jedes einzelne Zeichen des Strings wird in daswort-Array gespeichert. Hierzu nutzen Sie die MethodencharAt(index)undlength()der KlasseString. -
Überschreiben Sie die Objektmethode
toString()so, dass alle Zeichen aus demwort-Array als einStringzurückgegeben werden, also z.B.
-
Schreiben Sie eine Objektmethode
print(). Diese Methode gibt den durchtoString()erzeugtenStringauf der Konsole aus. -
Schreiben Sie die Objektmethode
getLength(). Diese Methode gibt die Länge deswort-Arrays zurück. -
Schreiben Sie die Objektmethode
getCharAt(int index). Diese Methode gibt ein Leerzeichen zurück, wenn der übergebeneindexkein Index deswort-Arrays ist. Ansonsten wird das Zeichen zurückgegeben, das imwort-Array unter dem Indexindexgespeichert ist. -
Schreiben Sie die Objektmethode
contains(char c). Diese Methode gibt eintruezurück, wenncimwort-Array vorkommt. Ansonstenfalse. -
Überschreiben Sie die Objektmethode
equals(Object o). Diese Methode gibt eintruezurück, wenn das aufrufende Objekt die gleichewort-Länge hat wieound auch alle Zeichen in den beidenwort-Arrays elementweise gleich sind (also Index für Index). Sonstfalse.
-
-
Schreiben Sie eine Klasse
Testklassemitmain()-Methode. Erzeugen Sie in dermain()-Methode-
ein Objekt
s1vonMyStringmithilfe des parameterlosen Konstruktors, -
ein Objekt
s2vonMyString, dem der einzelne Buchstabeaübergeben wird, -
ein Objekt
s3vonMyString, dem die Zeichenkettehalloübergeben wird, -
rufen Sie für alle drei Objekte die print()-Methode auf. Es entsteht folgende Ausgabe:
-
Wenden Sie die
getCharAt()-Methode an und lassen sich für das dritteMyString-Objekt (s3) den Buchstaben auf der Konsole ausgeben, der am Index1gespeichert ist. Wenden Sie diecontains()-Methode2Mal an und lassen sich für das dritteMyString-Objekt auf der Konsole ausgebenden,-
ob der Buchstabe
ain dessenwort-Array gespeichert ist und -
ob der Buchstabe
bin dessenwort-Array gespeichert ist.
Es entsteht folgende Ausgabe:
-
-
Erzeugen Sie zwei weitere Objekte
s4unds5vonMyString, einmal mit der Zeichenkettehallound einmal mit der ZeichenkettehalLound vergleichen Sie beide Objekte mithilfe derequals()-Methode mit dem drittenMyString-Objekts3. Es entstehen folgende Ausgaben:
-
-
weiter mit
MyString:-
Schreiben Sie eine Objektmethode
getAsciiCodeOfCharAt(int index). Diese Methode gibt den Ascii-Code des Zeichens zurück, das imwort-Array unter dem Indexindexgespeichert ist. Ist index kein Index aus demwort-Array, wird-1zurückgegeben. -
Schreiben Sie eine Objektmethode
append(char c). Diese Methode hängt das Zeichencan daswort-Array, d.h. danach ist daswort-Array um 1 länger als vor Aufruf der Methode. -
Schreiben Sie eine Objektmethode
append(MyString s). Diese Methode hängt alle Zeichen auss(aus dessenwort-Array) an daswort-Array des aufrufenden Objektes. Tipp: Verwenden Sie dazu dieappend(char c)-Methode. -
Schreiben Sie eine Objektmethode
concat(MyString s1, MyString s2). Diese Methode gibt ein (neues)MyString-Objekt zurück, in dem daswort-Array alle Zeichen auss1unds2enthält. (Dieseconcat()-Methode entsprichts1+s2für Strings):
-
Schreiben Sie die Objektmethode
firstIndexOf(char c). Diese Methode gibt den Index zurück, an dem das Zeichenczum ersten Mal imwort-Array vorkommt. Kommt das Zeichencnicht imwort-Array vor, wird-1zurückgegeben. -
Schreiben Sie die Objektmethode
lastIndexOf(char c). Diese Methode gibt den Index zurück, an dem das Zeichenczum letzten Mal imwort-Array vorkommt. Kommt das Zeichencnicht imwort-Array vor, wird-1zurückgegeben. -
Schreiben Sie eine Objektmethode
substring(int beginIndex). Diese Methode gibt ein (neues)MyString-Objekt zurück. Das neueMyString-Objekt enthält imwort-Array alle Zeichen aus demwort-Array des aufrufenden Objektes ab dem IndexbeginIndex(inklusive). IstbeginIndexkein korrekter Index aus demwort-Array des aufrufenden Objektes, wird einMyString-Objekt mit leeremwort-Array zurückgegeben.
-
-
weiter mit
Testklasse:-
Testen Sie die
getAsciiCodeOfCharAt()-Methode, indem Sie sich den Ascii-Code des Zeichens vons3auf dem Index1ausgeben lassen: -
Testen Sie die
append(char)-Methode, indem Sie ans3das Zeichenchängen: -
Testen Sie die
append(MyString)-Methode, indem Sie sich ein weiteresMyString-Objekts6mitballoerzeugen und dieses Objekt ans3hängen: -
Testen Sie die
concat()-Methode, indem Sie sich ein weiteresMyString-Objekts7mit leeremwort-Array erzeugen und für dieses Objekt dieconcat()-Methode aufrufen, wobei Sie die Objektes4unds6übergeben: -
Testen Sie die
firstIndexOf()- und dielastIndexOf()- Methode, indem Sie jeweils ins3nach dem Buchstabenlsuchen (kleines L): -
Testen Sie die
substring()-Methode, indem Sie den Teilstring ab Index5fürs3ausgeben:
-
-
weiter mit
MyString:-
Schreiben Sie eine Objektmethode
substring(int beginIndex, int endIndex). Diese Methode gibt ein (neues)MyString-Objekt zurück. Das neueMyString-Objekt enthält imwort-Array alle Zeichen aus demwort-Array des aufrufenden Objektes ab dem IndexbeginIndex(inklusive) bis zum IndexendIndex(exklusive). IstbeginIndexkein korrekter Index aus demwort-Array des aufrufenden Objektes oder istbeginIndexgrößer gleichendIndex, wird einMyString-Objekt mit leeremwort-Array zurückgegeben.
-
Schreiben Sie eine Objektmethode
toUpperCase(), die ein (neues)MyString-Objekt zurückgibt. Alle Kleinbuchstaben aus dem aufrufenden Objekt sind im neuen Objekt Großbuchstaben.
Tipps:
-
Bei der Umwandlung müssen Sie sich nur um die Kleinbuchstaben kümmern, alle anderen Zeichen werden direkt übernommen.
-
Kleinbuchstaben haben die Ascii-Codes
97(a) –122(z) -
Großbuchstaben haben die Ascii-Codes
65(A) –90(Z)
-
-
Schreiben Sie eine Objektmethode
reverse(), die ein (neues)MyString-Objekt zurückgibt. In diesem neuen Objekt ist die Zeichenfolge imwort-Array genau umgekehrt wie im aufrufenden Objekt.
-
Schreiben Sie die Objektmethode
contains(MyString s). Diese Methode gibt eintruezurück, wenn daswort-Array vonsimwort-Array des aufrufenden Objektes vorkommt. Ansonstenfalse.
-
-
weiter mit
Testklasse:- Testen Sie Sie alle 4 Methoden
substring(int beginIndex, int endIndex),toUpperCase(),reverse()undcontains(MyString s):
- Testen Sie Sie alle 4 Methoden
eine mögliche Lösung für MyString
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | |
Zusätzliche Übungen¶
Binäre Bäume
Info: Wir erstellen uns einen Datentyp BinaryTreeNode, der einen Knoten in einem Binärbaum repräsentiert. Hier wird die Verwendung von null und Rekursion geübt.
- Erstellen Sie eine Klasse
BinaryTreeNode. -
Objektvariablen (alle
private) dieser Klasse sindvaluevom Typint,leftvom TypBinaryTreeNodeundrightvom TypBinaryTreeNode.
-
Erstellen Sie einen parametrisierten Konstruktor
public BinaryTreeNode(int value), in dem der linke und rechte Teilbaum jeweils aufnullgesetzt und die Objektvariablevaluemit dem Parameterwert initialisiert werden. -
Implementieren Sie die Methoden
public boolean hasLeft()undpublic boolean hasRight(), die eintruezurückgeben, wenn der linke bzw. rechte Teilbaum ein Objekt ist undfalse, wennleftbzw.rightden Wertnullhaben. -
Implementieren Sie eine Methode
public void insert(int value), die die folgende private Methodeprivate void insert(BinaryTreeNode root, int value)aufruft. -
Implementieren Sie eine Methode
private void insert(BinaryTreeNode root, int value), die einBinaryTreeNode-Objekt in den Binärbaum einfügt. Beachten Sie:- wenn
valuekleiner ist, als dervalue, von dem Knoten, den Sie gerade betrachten, dann fügen Sie den Wert in den linken Teilbaum ein, - wenn
valuegrößer ist, als dervalue, von dem Knoten, den Sie gerade betrachten, dann fügen Sie den Wert in den rechten Teilbaum ein, - wenn im Baum bereits ein Knoten mit
valueexistiert, dann wird kein Knoten hinzugefügt.
Tipp: Sie sollten die Methode am besten rekursiv implementieren.
- wenn
-
Implementieren Sie eine Methode
public void print(), die die folgende private Methodeprivate void print(int indent)aufruft. -
Implementieren Sie eine Methode
private void print(int indent). Diese Methode gibt denvaluedes aufrufenden Knotens auf die Konsole aus und ruft dann sowohl dieprint(indent)-Methode des linken Teilbaums als auch dieprint(indent)-Methode des rechten Teilbaums auf, falls sie jeweils existieren. Derindent-Parameter ist dazu da, damit für jede Verzweigungstiefe der Wert weiter eingerückt auf der Konsole ausgegeben wird, also z.B. so:10 l--------5 l--------3 r--------4 r--------8 r--------9 r--------15 l--------13 l--------12 r--------14 r--------18 l--------17Tipp: Sie sollten die Methode am besten rekursiv implementieren.
-
Die
main()-methode derProgrammklassekönnte z.B. so aussehen:
Eine mögliche Lösung für Binäre Bäume
public class BinaryTreeNode
{
private int value;
private BinaryTreeNode left;
private BinaryTreeNode right;
BinaryTreeNode(int value)
{
this.value = value;
this.left = null;
this.right = null;
}
public boolean hasLeft()
{
return this.left != null;
}
public boolean hasRight()
{
return this.right != null;
}
public void insert(int value)
{
this.insert(this, value);
}
private void insert(BinaryTreeNode root, int value)
{
if(value < root.value)
{
if(!root.hasLeft())
{
root.left = new BinaryTreeNode(value);
}
else
{
insert(root.left, value);
}
}
else if(value > root.value)
{
if(!root.hasRight())
{
root.right = new BinaryTreeNode(value);
}
else
{
insert(root.right, value);
}
}
}
public void print()
{
print(1);
}
private void print(int indent)
{
System.out.println(this.value);
if(this.hasLeft())
{
for(int i = 0; i < indent; i++)
{
if(i == indent-1) System.out.print("l--------");
else System.out.print(" ");
}
this.left.print(indent+1);
}
if(this.hasRight())
{
for(int i = 0; i < indent; i++)
{
if(i == indent-1) System.out.print("r--------");
else System.out.print(" ");
}
this.right.print(indent+1);
}
}
}
public class Programmklasse
{
public static void main(String[] args)
{
BinaryTreeNode btn = new BinaryTreeNode(10);
btn.insert(5);
btn.insert(15);
btn.insert(8);
btn.insert(3);
btn.insert(18);
btn.insert(13);
btn.insert(14);
btn.insert(9);
btn.insert(4);
btn.insert(17);
btn.insert(12);
btn.print();
}
}