|
|
||||
| Wenn Sie die Folge 6 zum Thema Arrayliste bearbeitet haben, sind Sie auch bereit für die nächste Adventure-Folge. Heute wollen wir näher mit dem Helden und seinen Gegenständen beschäftigen.
Die Klasse Gegenstand sollte inzwischen über folgende Attribute und Methoden verfügen (falls nicht, ergänzen Sie die Klasse bitte entsprechend):
Wir wollen nun eine neue Klasse Inventar entwickeln, die folgendes leisten soll: Speicherung bzw. Verwaltung von mehreren Gegenständen. Stellen Sie sich z.B. einen Rucksack vor, den der Held sich auf den Rücken geschnallt hat. In diesen Rucksack (ein Objekt der Klasse Inventar) passen mehrere Gegenstände hinein, die der Held unterwegs aufgesammelt hat. Allerdings hat der Held nur eine bestimmte Stärke (ein neues Attribut für die Klasse Held), von der wiederum abhängt, wie schwer der Rucksack des Helden sein darf. Die Klasse InventarDie Klasse Inventar kommt aber nicht nur beim Rucksack des Helden zur Anwendung. Auch Monster können mehrere Gegenstände mit sich herumschleppen, daher können wir sie ebenfalls mit einer Art Rucksack ausstatten. Unterwegs kann der Held auch mal auf eine Schatztruhe stoßen, die mehrere Gegenstände enthält. Und vielleicht kann sich der Held auch mal einen Schrank besorgen, in dem er Gegenstände, die er im Augenblick nicht herumtragen will, verstauen kann. Für all diese Zwecke können wir die gleiche Klasse Inventar einsetzen. Attribute der Klasse InventarDie wichtigste Eigenschaft der Klasse Inventar besteht sicherlich in der Liste von Gegenständen, aus denen sich das Inventar zusammensetzt. Man könnte hier einen eigenen Array für 10, 20 oder mehr Objekte der Klasse Gegenstand programmieren oder - einfacher - auf eine ArrayList zurückgreifen. Der einzige Nachteil bei einer ArrayList ist das erforderliche Typecasting, wenn wir auf konkrete Gegenstände zurückgreifen wollen. Ein zweites Attribut der Klasse Inventar ist sicherlich das Gesamtgewicht aller enthaltenen Gegenstände. Bei einer Schatztruhe oder einem Schrank spielt diese Eigenschaft keine Rolle, wohl aber bei einem Rucksack. Methoden der Klasse InventarDie beiden wichtigsten Methoden sind sicherlich diejenigen, mit denen wir einen Gegenstand in den Rucksack hineinpacken bzw. wieder herausholen. Die Methodenköpfe könnten dann so aussehen: public void einpacken(Gegenstand neu) public Gegenstand auspacken(String bezeichnung) Der einpacken()-Methode übergeben wir ein Objekt der Klasse Gegenstand als Parameter. Wie und wo die Methode dann das Objekt in der ArrayList unterbringt, braucht uns an dieser Stelle nicht zu interessieren, es handelt sich hier um eine "interne Angelegenheit" der Methode. Wichtig ist, dass die Methode funktioniert so dass sich der Gegenstand nach Aufruf der Methode im Rucksack befindet - es sei denn, der Rucksack ist bereits voll, was bei der Implementation über eine ArrayList aber eher unwahrscheinlich ist. Der auspacken()-Methode können wir keinen Parameter vom Typ Gegenstand übergeben, das wäre Unsinn. Wir übergeben stattdessen die Bezeichnung des Gegenstandes, den wir aus dem Inventar herausholen wollen, z.B. "Excalibur" oder "Glamdring". Als Rückgabeparameter der Funktion erhalten wir allerdings einen vollwertigen Gegenstand, genauer gesagt, ein Objekt der Klasse Gegenstand. |
||||
1 So sieht das UML-Diagramm des gegenwärtigen Spielstandes aus |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 4. Februar 2006 |
||||