Klassen des J ava-hamster-modells

Ähnliche Dokumente
A.1 Exception-Klassen

Inhaltsverzeichnis. 4.9 Aufgaben... 63

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

2.1 Komponenten des Hamster-Modells

Benutzungshandbuch. Hamster-Simulator-Light

Dr. Dietrich Boles. Programmierkurs Java. Teil. Objektorientierte Programmierung. Unterrichtseinheit 20. (Hamster-) Objekte

Einstieg in die Informatik mit Java

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

JAVA-Datentypen und deren Wertebereich

Einstieg in die Informatik mit Java

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

C.1 Klasse SHamster. public class SHamster extends Hamster { private Hamster shamster;

Programmieren in Java

Gliederung der Folien

II.4.4 Exceptions - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

II.4.4 Exceptions - 1 -

1. Einführung. Programmieren 1 / Algorithmen und Datenstrukturen. Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2010

Vorkurs Informatik WiSe 15/16

4. Vererbung Die Klasse Object. Die Klasse Object

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 280

Algorithmen und Datenstrukturen 07

Probeklausur: Programmierung WS04/05

Grundlagen der Modellierung und Programmierung, Übung

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Repetitorium Informatik (Java)

Programmieren in Java

Vererbung, Polymorphie

Tag 8 Repetitorium Informatik (Java)

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

Grundelemente objektorientierter Sprachen (1)

12 Abstrakte Klassen, finale Klassen und Interfaces

Algorithmen und Datenstrukturen

Java als erste Programmiersprache

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einführung in die Programmierung mit Java

Grundelemente objektorientierter Sprachen (1)

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Grundelemente objektorientierter Sprachen (1)

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einfache Datentypen in JAVA

Einstieg in die Informatik mit Java

Fragenkatalog ESOP WS 16/17

Alexander Niemann. Das Einsteigerseminar" < Objektorientierte ^ Programmierung in Java. bhv. i.-

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

1 Klassen anlegen und Objekte erzeugen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Laufzeitsystem Menge von Hilfsprogrammen, die automatisch zum übersetzten Programm hinzugebunden

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

Das Einsteigerseminar Objektorientierte Programmierung in Java

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

1 Klassen anlegen und Objekte erzeugen

III.1 Prinzipien der funktionalen Programmierung - 1 -

Programmierung Nachklausurtutorium

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Tafelübung 07 Algorithmen und Datenstrukturen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Programmieren in C+ Einführung in den Sprachstandard C++ Springer-Verlag Berlin Heidelberg New York London Paris Tokyo Hong Kong Barcelona Budapest

3 Objektorientierte Konzepte in Java

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Grundkurs Programmieren in Java

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Java Grundlagen 2 - OOP

Objektorientierung (OO)

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Einführung in die Programmiersprache Java II

Umsetzung einer Klassenkarte in einer Programmiersprache

Objektorientierte Programmierung Studiengang Medieninformatik

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Java als erste. Programmiersprache. Java 2 Plattform. Von Prof. Dr. Joachim Goll Cornelia Weiß Peter Rothländer. 2., durchgesehene Auflage

Wo sind wir? Übersicht lexikale Struktur von Java

Propädeutikum Programmierung in der Bioinformatik

Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java.

Praktische Informatik 1

C++ - Objektorientierte Programmierung Polymorphie

Überblick und Wiederholung

Überblick und Wiederholung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

1. Abstrakte Klassen

Die abstrakte Klasse Expression:

Informatik II Übung 6

Einstieg in die Informatik mit Java

Theorie zu Übung 8 Implementierung in Java

Programmieren in Java

Programmieren in Java -Eingangstest-

Objektorientierte Programmierung in Java

Transkript:

Anhang A Klassen des J ava-hamster-modells Dieser Anhang enthält eine ausführliche Beschreibung der im Java-Hamster-Modell vordefinierten Klassen. A.l Exception-Klassen Oberklasse aller Exception-Klassen des Java-Hamster-Modells public class HamsterException extends RuntimeException { hamster: der Hamster, der die Exception verschuldet hat public HamsterException(Hamster hamster) liefert den Hamster, der die Exception verschuldet hat public Hamster gethamster() vird gevorfen, venn dem init-befehl ungueltige Werte uebergeben verden public class HamsterInitialisierungsException extends HamsterException { hamster: der Hamster, der die Exception verschuldet hat public HamsterInitialisierungsException(Hamster hamster) vird gevorfen, venn Befehle fuer einen zvar erzeugten aber nicht initialisierten Hamster aufgerufen verden public class HamsterNichtInitialisiertException extends HamsterException { hamster: der Hamster, der die Exception verschuldet hat public HamsterNichtInitialisiertException(Hamster hamster) vird gevorfen, venn fuer einen Hamster, der vor einer Mauer steht, die Methode vor aufgerufen vird public class MauerDaException extends HamsterException { hamster: der Hamster, der die Exception verschuldet hat reihe: die Reihe, in der die Mauer steht

522 Kapitel A. Klassen des Java-Hamster-Modells spalte: die Spalte, in der die Mauer steht public MauerDaException(Hamster hamster, int reihe, int spalte) liefert die Reihe, in der die Mauer steht public int getreihe() liefert die Spalte, in der die Mauer steht public int getspalte() wird geworfen, wenn fuer einen Hamster auf einer Kachel ohne Koerner die Methode nimm aufgerufen wird public class KachelLeerException extends HamsterException { hamster: der Hamster, der die Exception verschuldet hat reihe: die Reihe der leeren Kachel spalte: die Spalte der leeren Kachel public KachelLeerException(Hamster hamster, int reihe, int spalte) liefert die Reihe der leeren Kachel public int getreihe() liefert die Spalte der leeren Kachel public int getspalte() wird geworfen, wenn fuer einen Hamster ohne Koerner im Maul die Methode gib aufgerufen wird public class MaulLeerException extends HamsterException { hamster: der Hamster, der die Exception verschuldet hat public MaulLeerException(Hamster hamster) A.2 Die Klasse Hamster public class Hamster { die Konstanten repraesentieren die vier Richtungen, in die ein Hamster blicken kann public final static int NORD 0; public final static int OST 1 ; public final static int SUED 2; public final static int WEST 3; zum Erzeugen eines nicht initialisierten Hamsters public Hamster() erzeugt und initialisiert einen Hamster

A.2 Die Klasse Hamster 523 reihe: spalte: blickrichtung: die Reihe des Territoriums, in der der Hamster erzeugt wird die Spalte des Territoriums, in der der Hamster erzeugt wird die Richtung, in der der Hamster anfangs schaut (siehe Konstanten) anzahlkoerner: die Anzahl an Koernern, die der Hamster anfangs im Maul hat HamsterlnitialisierungsException: wird geworfen, wenn: - eine Kachel (reihe/spalte) nicht existiert - die Kachel (reihe/spalte) durch eine Mauer blockiert ist - der Wert von blickrichtung nicht zwischen 0 und 3 liegt - der Wert von anzahlkoerner < 0 ist public Hamster(int reihe, int spalte, int blickrichtung, int anzahlkoerner) throws HamsterlnitialisierungsException erzeugt und initialisiert einen Hamster mit den Werten eines bereits existierenden Hamsters hamster: ein bereits existierender Hamster public Hamster(Hamster hamster) Methode zur Initialisierung eines Hamsters reihe: die Reihe des Territoriums, in der der Hamster erzeugt wird spalte: die Spalte des Territoriums, in der der Hamster erzeugt wird blickrichtung: die Richtung, in der der Hamster anfangs schaut (siehe Konstanten) anzahlkoerner: die Anzahl an Koernern, die der Hamster anfangs im Maul hat HamsterlnitialisierungsException: wird geworfen, wenn: - eine Kachel (reihe/spalte) nicht existiert - die Kachel (reihe/spalte) durch eine Mauer blockiert ist - der Wert von blickrichtung nicht zwischen 0 und 3 liegt - der Wert von anzahlkoerner < 0 ist der Aufruf der Methode fuer einen bereits initialisierten Hamster bewirkt nichts public void init(int reihe, int spalte, int blickrichtung, int anzahlkoerner) throws HamsterlnitialisierungsException Der aufgerufene Hamster springt auf die in Blickrichtung vor ihm liegende Kachel. HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist MauerDaException: wird geworfen, wenn die Kachel in Blickrichtung vor dem Hamster durch eine Mauer blockiert ist oder der Hamster in Blickrichtung am Rand des Territoriums steht public void vor() throws HamsterNichtlnitialisiertException, MauerDaException Der aufgerufene Hamster dreht sich linksum. HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public void linksum() throws HamsterNichtlnitialisiertException

524 Kapitel A. Klassen des Java-Hamster-Modells Der aufgerufene Hamster legt ein Korn auf der Kachel ab, auf der er sich gerade befindet. HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist MaulLeerException: wird geworfen, wenn der Hamster keine Koerner im Maul hat public void gib() throws HamsterNichtInitialisiertException, MaulLeerException Der aufgerufene Hamster frisst ein Korn auf der Kachel, auf der er sich gerade befindet. HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist KachelLeerException: wird geworfen, wenn auf der Kachel, auf der sich der Hamster gerade befindet, kein Korn liegt public void nimm() throws HamsterNichtInitialisiertException, KachelLeerException liefert genau dann true, wenn sich in Blickrichtung vor dem aufgerufenen Hamster keine Mauer befindet (wenn sich der Hamster in Blickrichtung am Rand des Territoriums befindet, wird false geliefert) HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public boolean vornfrei() throws HamsterNichtInitialisiertException liefert genau dann true, wenn der aufgerufene Hamster keine Koerner im / / Maul hat HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public boolean mauileer() throws HamsterNichtInitialisiertException liefert genau dann true, wenn auf der Kachel, auf der sich der aufgerufene Hamster gerade befindet, mindestens ein Korn liegt HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public boolean kornda() throws HamsterNichtInitialisiertException gibt den uebergebenen String auf den Bildschirm aus HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public void schreib(string zeichenkette) throws HamsterNichtInitialisiertException gibt den uebergebenen String auf den Bildschirm aus und fordert den Benutzer auf, einen String einzugeben; der eingegebene String wird als Wert geliefert HamsterNichtInitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public String lieszeichenkette(string aufforderung) throws HamsterNichtInitialisiertException

A.2 Die Klasse Hamster 525 gibt den uebergebenen String auf den Bildschirm aus und fordert den Benutzer auf, eine Zahl einzugeben; die eingegebene Zahl wird als Wert geliefert (wenn der Benutzer eine ungueltige Zahl eingibt, wird der Wert 0 geliefert) HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public int lieszahl(string aufforderung throws HamsterNichtlnitialisiertException liefert die Reihe der Kachel des Territoriums, auf der sich der aufgerufene Hamster gerade befindet HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public int getreihe( throws HamsterNichtlnitialisiertException liefert die Spalte der Kachel des Territoriums, auf der sich der aufgerufene Hamster gerade befindet HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public int getspalte( throws HamsterNichtlnitialisiertException liefert die Blickrichtung, in die der aufgerufene Hamster gerade schaut (gelieferten Werte entsprechen den obigen Konstanten) HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public int getblickrichtung( throws HamsterNichtlnitialisiertException liefert die Anzahl der Koerner, die der aufgerufene Hamster gerade im / / Maul hat HamsterNichtlnitialisiertException: wird geworfen, wenn der Hamster noch nicht initialisiert worden ist public int getanzahikoerner( throws HamsterNichtlnitialisiertException liefert den Standard-Hamster public static Hamster getstandardhamster( liefert die Gesamtzahl an erzeugten und initialisierten Hamstern im Territorium (inkl. dem Standard-Hamster) public static int getanzahihamster( Methode, die einen Klon des aufgerufenen Hamsters erzeugt und liefert, d.h. die Werte der Attribute des neuen Hamsters sind identisch zu den Werten des aufgerufenen Hamsters. Wenn der aufgerufene Hamster noch nicht initialisiert ist, wird der neu erzeugte Hamster auch nicht initialisiert. (ueberschreibt die entsprechende von der Klasse Object geerbte Methode) protected Object clone(

526 Kapitel A. Klassen des Java-Hamster-Modells II Methode, die ueberprueft, ob die Werte der Attribute des aufgerufenen Hamsters II gleich der Attributwerte des uebergebenen Hamsters sind (zwei nicht II initialisierte Hamster sind auch gleich) II hamster: muss ein Objekt der Klasse Hamster oder einer davon abgeleiteten II Klasse sein II (ueberschreibt die entsprechende von der Klasse Object geerbte Methode) public boolean equals(object hamster) II Methode, die eine String-Repraesentation der folgenden Art fuer den II aufgerufenen Hamster liefert: II "Hamster steht auf Kachel (0/0) mit Blickrichtung OST und 2 Koernern im Maul" II Wenn der aufgerufene Hamster noch nicht initialisiert ist, wird II folgender String geliefert: "Hamster ist nicht initialisiert" II (ueberschreibt die entsprechende von der Klasse Object geerbte Methode) public String tostring() A.3 Die Klasse Territorium II repraesentiert das Hamster-Territorium public class Territorium { II es koennen keine Instanzen der Klasse erzeugt werden private Territorium() II liefert die Anzahl an Reihen im Territorium public static int getanzahlreihen() II liefert die Anzahl an Spalten im Territorium public static int getanzahlspalten() II ueberprueft, ob sich auf der Kachel (reihe/spalte) eine Mauer befindet; II es wird genau dann true geliefert, wenn sich auf der angegebenen Kachel II eine Mauer befindet oder wenn sich die angegebenen Werte ausserhalb II des Territoriums befinden public static boolean mauerda(int reihe, int spalte) II liefert die Gesamtzahl an Koernern, die im Territorium auf Kacheln herumliegen public static int getanzahlkoerner() II liefert die Anzahl an Koernern auf der Kachel (reihe/spalte) oder 0, II falls die Kachel nicht existiert oder durch eine Mauer blockiert ist public static int getanzahlkoerner(int reihe, int spalte) II liefert die Gesamtzahl an erzeugten und initialisierten Hamstern im II Territorium (inkl. dem Standard-Hamster) public static int getanzahlhamster() II liefert alle erzeugten und initialisierten Hamster im II Territorium (inkl. dem Standard-Hamster) public static Hamster[] gethamster()

A.3 Die Klasse Territorium 527 liefert die Anzahl an Hamstern auf der Kachel (reihe/spalte) oder 0, falls die Kachel nicht existiert oder durch eine Mauer blockiert ist public static int getanzahlhamster(int reihe, int spalte) liefert alle erzeugten und initialisierten Hamster, die aktuell auf der Kachel (reihe/spalte) stehen (inkl. dem Standard-Hamster) public static Hamster[] gethamster(int reihe, int spalte)

Literaturverzeichnis [Bal99] [BalOO] [Bo102] Heide Balzert: Lehrbuch der Objektmodellierung. Spektrum Akademischer Verlag, 1999. Helmut Balzert: Lehrbuch der Softwaretechnik. Spektrum Akademischer Verlag, 2000. Dietrich Boles: Programmieren spielend gelernt mit dem Java-Hamster Modell. Teubner, 2002. [GHJV01] Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides: Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software. Addison-Wesley, 2001. [GWM01] Joachim Goll, Cornelia Weiß und Frank Müller: Java als erste Programmiersprache. Vom Einsteiger zum Profi. Teubner, 2001. [Kru03] Guido Krüger: Handbuch der Java-Programmierung. Addison-Wesley, 2003.

Index <ohne>, 430, 432 4-Gewinnt, 145, 505 Ableiten, 160, 250, 293 abstract, 334, 346 abstrakte Klasse, 333, 358 abstrakte Methode, 334 Addition, 38 Alapo, 509 Algorithmus, 15, 517 AllroundHamster, 179 Alternativanweisung, 32 Analyse objektorientierte, 518 Anführungszeichen, 265 anonymes Paket, 429, 443 Anweisung, 27, 31, 32, 35 elementare, 27 zusammengesetzte, 31, 32 Anweisungssequenz, 27, 28, 31 anzahlhamster, 128 anzahlkoerner, 77, 82 Applet, 19, 517 Arra~ 200, 201, 253, 259 mehrdimensionales, 222 Array-Variable, 201, 210 ArraylndexOutOffioundsException 406 Attribut, 47, 77, 91, 94, 98, 119, 125, 126, 211, 212, 245, 247 Ausdruck, 30, 37, 38, 43, 44, 91, 200 arithmetischer, 37, 39, 41 boolescher, 30-33, 35, 39 Ausgabe, 270 Ausnahmesituation, 383, 387 Auswahlanweisung, 30, 32 Backslash, 265 Bauplan, 245 bedingte Anweisung, 31 Befehl, 26, 28, 29, 76 Bereichskommentar, 27 Betriebssystem, 444 Bewertungsfunktion, 495 Bezeichner, 25, 26, 28, 49 Blickrichtung, 25, 52 blickrichtung, 77 Blockanweisung, 31, 33, 395 boolean, 35, 37, 40, 41, 49, 57, 95, 135 boolesche Funktion, 35 Bottom-Up-Entwurf, 518 Bubblesort, 219, 237, 366 C, 17, 201 C++, 17, 201 catch, 395 catch-handler, 385, 394-396 Checked-Exception, 404 class, 77, 90, 177, 346 ClassCastException, 406 CLASSPATH, 444 clone, 305 Compiler, 19, 25 26 50 58 95 123 177, 293, 352, 444 Copy-Konstruktor, 124, 306,,,,,, Damenproblem, 240 Datei, 100, 102, 125, 128, 183, 430, 438 Datenkapselung, 93, 450 Datenstruktur, 259 Datentyp, 37, 41, 49, 57, 60, 91, 201, 265 Debugger, 19 Default-Wert, 61, 91, 206 delete, 203 Dereferenzierung, 201 Dialogbox, 270, 273 Disjunktion, 31 Division, 38 do, 33 do-anweisung,33 do-schleife, 33, 207 Dokumentation, 27 Dualzahl, 184

532 Index dynamisches Binden, 298, 333, 345, 349, 352 EBNF, 203, 207 Editor, 19 Eiffel, 17 Eingabe, 273 Element, 201 else, 32 Entwurf objektorientierter, 518 Entwurfsmuster, 519 equals, 269, 270, 305 Erbe, 159 Erweiterbarkeit, 17, 303, 304, 345 Exception, 383, 444 Klasse, 169, 383, 387, 404 extends, 91, 159, 164, 246, 250, 347 false, 30 false- Anweisung, 32 fangen, 393 Fehler, 381, 387 Fehlerklasse, 383, 387 Fehlerobjekt, 383, 388 Fehlertyp, 389 final, 138, 177 finally, 401 finally-anweisung, 401 finally-block, 401 far-schleife, 207 Framework, 345 Funktion, 43, 61, 63, 77 Gültigkeitsbereich, 41 rekursive, 45, 119 Funktionsaufruf, 35, 43, 44, 62 Funktionskopf, 35 Funktionsname, 35, 41 Funktionsrumpf, 35, 43, 44 Funktionstyp, 92 Funktionswert, 35, 36, 63 Game-of-Life, 239 Garbage-Collector, 203, 216, 247 get-methode, 93, 139, 161, 450 getanzahlhamster, 131 getanzahlkoerner, 56, 76 getanzahlreihen, 134 getanzahlspalten, 134 getblickrichtung, 56, 76 gethamster, 313 getreihe, 56, 76 getspalte, 56, 76 getstandardhamster, 49, 130 gib, 26, 54, 76 Gleichheitsoperator, 39 global, 79 Größergleichoperator, 39 Größeroperator, 39 Gültigkeitsbereich, 39, 58, 64, 79, 92, 209, 398 Hamster, 25, 47, 95, 245 Datentyp, 49, 57, 75 Klasse, 76, 93, 123, 128, 130, 139, 159, 174, 210, 245, 270, 305, 408,443 Typ, 135 Hamster-Aufgabe, 23 Hamster-Befehl, 25, 92 Hamster-Deklaration, 49 Hamster-Deklarationsanweisung, 49, 58 Hamster-Erzeugungsanweisung, 51, 83, 123 Hamster-Initialisierungsbefehl, 52, 83, 123 Hamster-Klasse erweiterte, 90, 98 Hamster-Modell, 18, 23, 24, 406 imperatives, 23, 47 objektorientiertes, 23, 48 Hamster-Name, 49, 58, 80, 221 Hamster-Objekt, 58, 221 Hamster-Programm, 18, 23, 27, 50 objektorientiertes, 98 Hamster-Simulator, 19, 78, 125, 128, 270, 273, 444, 445

Index 533 Hamster-Sprache, 18, 23, 514 Hamster-Subobjekt, 135 Hamster-Territorium, 24, 50 Hamster-Variable, 58, 210, 221 Hauptspeicher, 40 Heap, 200, 201, 211 Hexadezimalzahl, 195 if, 31 if-anweisung, 31 implements, 347 import, 440 import-anweisung, 440 Index, 203 init, 52, 76, 83 Initialisierung, 61, 84, 91, 206 Initialisierungsanweisung, 207 Initialisierungsausdruck, 43, 120 Initialisierungswert, 43, 44 Inkrementausdruck, 207 instanceof, 314 Instanz, 76, 83 Instanzattribut, 126, 247, 250 Instanziierung, 83 Instanzmethode, 129,247,301,333, 335 int, 37, 40, 41, 49, 57, 77, 95, 135, 270, 273 int-funktion, 40, 41 int-literal, 37 int-variable, 37 Interface, 345, 358, 431, 436 interface, 346 Internet, 17 Interpreter, 444 Iterationsanweisung, 33, 207 jar-datei, 448 Java, 16-18, 23, 41, 76, 77, 201, 208, 290, 298, 387, 404, 444, 448, 514 Java-Applet, 517 Java-Hamster-Modell, 18 J ava-interpreter, 514 Java-Programm, 514 Kachel, 24 Kalah,467 Klasse, 75, 212, 245 abstrakte, 333, 358 Definition, 430 konkrete, 337 Klassenattribut, 125, 126, 128, 131, 138, 176, 247, 250 Klassenbibliothek, 19, 516 Klassendatentyp, 57, 75, 91, 95, 246, 310 Klassendefinition, 77 Klassenelement, 431 Klassenkopf, 77, 91, 246, 347 Klassenmethode, 128, 131, 247, 335 Klassenname, 77, 91, 95, 246 vollständiger, 439 Klassenrumpf, 77, 79, 91, 93, 247 Kleinergleichoperator, 39 Kleineroperator, 39 Kommentar, 27 Komponente, 201 Konjunktion, 31 konkrete Klasse, 337 Konstante, 52, 138, 177, 247 Konstruktor, 119, 121, 171, 174, 247, 251,455 Konvention, 91-93, 139 Koordinatensystem, 50 Korn, 24 kornda, 30, 54, 76 Laufzeit, 40, 79, 80, 298 Laufzeitfehler, 26, 50, 53, 58, 205, 247, 293, 295, 296, 381, 382 Lebensdauer, 40, 64, 92, 216 length,213 Lesen, 273 Lexikalik, 25 lies Zahl, 273 lieszeichenkette, 273 linksum, 26, 54, 76 Linux, 444, 445

534 Index logischer Fehler, 381 main, 27 main-prozedur, 29 11aschinensprache, 15 11auer, 24 mauerda, 133 11aul,25 maulleer, 30, 54, 76, 82 11ehrfachvererbung, 164, 349 11ethode, 77, 91, 92, 98, 119, 212, 245, 247, 250 abstrakte, 334 dynamisches Binden, 298 rekursive, 119 11ethodenkop~ 92 11ethodenname, 92 11etho denrumpf, 92 11inimax-Algorithmus, 495 11odulo,38 11uster, 378 Nachwuchs, 143, 243 Negation, 31 new, 203, 210 nimm, 26, 54, 76 Nimm-Spiel, 321, 341, 352 NORD,52 null, 60, 138, 203, 205, 247 NullPointer Exception, 405 Oberklasse, 160, 250, 333 Object, 308, 444 Klasse, 304 Objekt, 16, 76, 245, 247, 289, 335, 347 Objektvariable, 58, 210, 247, 289, 293, 335, 347, 389 polymorphe, 289 OK-Button, 270 Oktalzahl, 187 Operator, 31 arithmetischer, 38, 39 Ordner, 100, 438, 444 OST, 52 Othello, 506 package, 429, 437 package-anweisung, 437 Paket, 429, 430, 437, 444, 447 anonymes, 429, 443, 445 Parameter, 43, 62, 293 aktueller, 43, 44, 62 formaler, 43, 44, 62, 81, 395 Parameterdeklaration, 43 Parameter liste aktuelle, 43, 44 formale, 43, 44 Parametervariable, 43 Parameterübergabe, 44, 62, 214 passen, 399 Pattern, 378 Polymorphie, 95, 178, 290, 333, 345, 352, 398 Priorität, 38, 39 private, 77, 161, 163, 430, 432 Produkt, 38 Programm, 15, 41 Programmieren im Großen, 518 Programmieren im Kleinen, 517 Programmierer, 24 Programmierparadigma, 16 Programmiersprache, 15 funktionale, 16 imperative, 16 objektorientierte, 16 prädikative, 16 regelbasierte, 16 Programmierung, 15, 23 imperative, 23, 199, 212, 265 objektorientierte, 16, 58, 82, 93, 178, 448, 450, 518 protected, 430, 432 Protokoll, 292, 348 Protokolleinschränkung, 293 Prozedur, 28, 35, 41 prozedurale Zerlegung, 517 Prozeduraufruf, 29

Index 535 Prozedurdefinition, 28 Prozedurkopf, 28 Prozedurname, 28 Prozedurrumpf, 28 Prozessor, 25 public, 77, 92,167,266,346,348,430, 432 Punkt, 50, 52, 54, 78 Punktnotation, 82, 211 Quelleode, 25 Quicksort, 220, 366 r-koordinate, 50, 52 Rahmenwerk, 345, 361, 459 random, 143 Record, 212 Referenz, 201, 210, 211, 215 Referenzdatentyp, 210 Referenzvariable, 210 Reihe, 50 reihe, 77 Rekursion, 45 Restbildung, 38 return, 35 return-anweisung, 29, 41, 383, 389 boolesche, 35 Reversi, 506 RuntimeException, 404, 444 s-koordinate, 50, 52 Schach, 509 Schleifenbedingung, 33, 207 Schlüsselwort, 26, 27, 77, 80, 90 Schnittstelle, 345 minimale, 448 schreib, 270 Schreiben, 270 Schrägstrich, 265 Seiteneffekt, 41 Semikolon, 335, 346 set-methode, 93, 139, 451 Signatur, 168, 391 Simula,17 Singleton-Muster, 455 Smalltalk, 17 Softwareengineering, 518 Softwareentwicklungsmethode, 518 Sortieralgorithmus, 219, 220, 366 Sourcecode, 303 Spalte, 50 spalte, 77 Speicher, 83, 84, 98 Speicheradresse, 201, 210, 216 Speicherklasse, 516 Speicherplatz, 91, 122, 200, 203, 211 Spielbaum, 494 Stack, 200 Stammbaum, 163 Standard-Hamster, 48, 49, 95, 130 Standarddatentyp, 57, 310 Stapel, 259, 308 static, 125, 128 String, 265, 444 Klasse, 266 Stringliteral, 265 Stringobjekt, 266 Stringobjektvariable, 266 Struktur, 212 Sub-Hamster, 135 Subobjekt, 135 exklusives, 136 nicht-exklusives, 138 Subtraktion, 38 Subtyp, 160 SUED, 52 super, 164, 167, 171, 172 super-konstrukt, 172 Super hirn, 278 Syntaxfehler, 381 Tastatur, 273 Territorium Klasse, 131, 312, 443, 454 Testbefehl, 30, 35 Texteingabefeld, 273 this, 80, 164

536 Index throw, 383, 389 throw-anweisung,389 Throwable, 387 throws,389 Token,25 Top-Down-Entwurf, 517 tostring, 305 Thennzeichen, 25 true,30 true-anweisung, 31 try, 385, 395 try-anweisung, 385, 393, 395 try-block, 385, 395 Typ, 44, 346, 394 Typecast, 295, 349, 406 Typkonformität, 44 Typumwandlung explizite, 295, 308 Überladen, 44, 117, 168, 251, 306 Überschreiben, 165, 166, 168, 251, 298, 306, 391, 433 Umgebungsvariable, 444 UML,519 Unchecked-Exception,404 Ungleichheitsoperator, 39 Unicode,25 Unix, 444, 445 Unterklasse, 160, 290 direkte, 163 indirekte, 163 Variable, 37, 43, 77, 91, 94 globale, 39, 40 lokale, 39, 40, 43, 44, 62 methodenlokale, 94 Variablendefinition, 43 Verbund, 212 Vererbung, 159, 178, 249 Vergleichsausdruck, 39 Vergleichsoperator, 61, 269 verkettete Liste, 256 Vertretungshamster, 95, 175 Verzeichnis, 183 void, 27, 28, 35, 41 vollständiger Klassenname, 439 vor, 26, 54, 76, 78 vornfrei, 30, 54, 76 Vorschrift, 352 Vorteil, 16 WEST, 52 while, 32, 33 while-schleife, 207, 208 Wiederverwendbarkeit, 17, 102, 307 Windows, 444, 445 Zeichenkette, 265 Zeilenkommentar, 27 Zeilenumbruch, 271 Zufallszahl, 143, 516 ZugrifIsrecht, 77, 93, 161, 167, 430 Zustand, 77 Zuweisung, 38, 58 Zuweisungsanweisung, 38, 58 Zuweisungsoperator, 38, 39 Zwei-Spieler-Strategiespiel, 467