Weitere Spielvarianten für mehr Action

Ähnliche Dokumente
2. Vererbung und Kapselung

Objektorientierte Analyse Teil IV

Inf-10 NTG Objektorientiertes Programmieren Projekt PingPong OStR Michael Ganshorn 1 Michael Andonie

Klassen-Diagramm. spielt mit > 1. schlägt mit > 1. hat als Rand > enthält > 1. besteht aus >

3. Bedingte Anweisungen

Objektorientierte Analyse Teil II

Staubsauger-Roboter. Als Vorlage dienen dir drei Klassen: RECHTECK Damit kannst du die Wände des Raums darstellen.

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

ÜBUNGEN ZUR OBJEKTORIENTIERTEN MODELLIERUNG

9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1

Informatik 10 Objektorientiertes Modellieren und Programmieren mit Java

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

In der heutigen Betrachtungsweise der Informatik besteht die Welt aus Objekten. Jedem Objekt liegt ein Bauplan zugrunde, nach dem es erstellt wurde.

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Wir wollen im Folgenden dieses uralte Spiel aus objektorientierter Sichtweise analysieren und es Stück für Stück programmieren.

Programmierung Nachklausurtutorium

14. Java Objektorientierung

Anwendung Kamel-Simulation

Klassen-Diagramm. Grund-Erfahrung mit der EDU-Variante der Engine-Alpha alpha.org Felder Deklaration und Initialisierung, Zugriff

7. Arrays. Beim Deklarieren und Initialisieren der Liste bräuchte man oft zueinander sehr ähnlichen Code:

Java für Bauingenieure

14. Java Objektorientierung

Projekt: Staubsauger-Roboter

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Javakurs für Anfänger

Objektorientierte Programmierung Studiengang Medieninformatik

Einstieg in die Informatik mit Java

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

PROCESSING ELTERN UND KINDER. Created by Michael Kirsch & Beat Rossmy

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Programmieren in Java

Programmieren in Java

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs für Anfänger

hue13 January 30, 2017

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

Einführung in die Programmierung I. 11. Vererbung. Stefan Zimmer

G 8 Inf- 10 O S tr Michae l Gansh orn 45. Vererbung stellt man im Klassen-Diagramm durch einen durchgezogenen Pfeil mit einem Dreieck als Spitze dar.

1 Grundlagen der Objektorientierung

Programmieren in Java

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Probeklausur: Programmierung WS04/05

Beziehungen zwischen Objekten

Begriffe 1 (Wiederholung)

Vorkurs Informatik WiSe 15/16

O b j e k t - O r i e n t i e r t e s P r o g r a m m i e r e n Te i l I

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

3. Das erste eigene Programm mit Greenfoot: Litte Crab

Kapitel 10 Mampfi im Labyrinth

- EINSTIEG IN JAVA - (1/5) Datum:

Repetitorium Informatik (Java)

Programmierkurs C++ Abstrakte Klassen und Methoden

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

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

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Kapitel 12 Die Monster Lernziele: In diesem Kapitel wird die Vererbung als zentrales Element objektorientierter Programmierung vorgestellt.

Die Welt in unseren Programmen false -1.4E-12. false. Klassen

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Informatik I Eprog HS12

Objektorientierte Programmierung Studiengang Medieninformatik

Space Shooter. Die Gesteinsbrocken sollen sich von selbst von rechts nach links bewegen.

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Polymorphie. 15. Java Objektorientierung II

Vererbung, Polymorphie

Polymorphie. 15. Java Objektorientierung II

Kapitel 14 Das Labyrinth optimieren

Kapitel 1: Die ersten Schritte 1

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

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

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Objektorientierung (OO)

Statische Methoden, Vererbung, Benutzereingabe

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Propädeutikum Programmierung in der Bioinformatik

Kapitel 17 Monster als neue Spielfiguren

Javakurs für Anfänger

5. Abstrakte Klassen

Statische Methoden, Vererbung, Benutzereingabe

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

pue13 January 28, 2017

Musterübung 09: Vererbung und Dynamische Bindung

Programmierkurs Java

Umsetzung einer Klassenkarte in einer Programmiersprache

9. Zurück zur OOP: Vererbung und Polymorphismus

6. Wiederholungen und Zählschleifen

Quelle: programmierung/scratch. Wiederholungen. Informatik AG Goetheschule Dieburg Christian Wach

Beziehungen zwischen Objekten

Kapitel 9 Das Labyrinth

Objektorientierte Programmierung Studiengang Medieninformatik

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

Transkript:

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 1 Weitere Spielvarianten für mehr Action In diesem Kapitel lernst du nichts wirklich Neues mehr dazu. Es zeigt dir lediglich ein paar Möglichkeiten auf, wie du dein erstes Spiel etwas aufregender gestalten kannst. Dabei wirst du viel Gelerntes wiederholen. Es ist also eine sehr gute Übung Nach den Anregungen für diverse Spielvarianten folgt noch ein Ausblick auf generelle Überlegungen zur Verbesserung deines Programmierstils. Diese Überlegungen solltest du dir gut ansehen, denn du wirst dein zweites Spiel mit diesen neuen Überlegungen modellieren! Schmetterschläge und Stopps Deine Schläger sollen sich nun auch über eine kleine Distanz hinweg horizontal bewegen lassen. Hierzu dienen links die Tasten 'A' bzw. 'D' und rechts die Pfeiltasten. Wenn der Ball getroffen wird, während sich der Schläger auf den Ball zu bewegt, so soll der Ball in x-richtung schneller werden. Wenn der Ball getroffen wird, während sich der Schläger vom Ball weg bewegt, so soll der Ball in x- Richtung langsamer werden. 1. Überprüfe, ob deine Klasse Schlaeger schon über die Attribute vx und vy verfügt und auch über entsprechende setze- und nenne-methoden. Füge diese bei Bedarf nun hinzu. 2. Füge nun in der Klasse PingPong in der Methode tastereagieren(...) weitere bedingte Anweisungen für die Tasten A, D, Pfeil links und Pfeil rechts hinzu. Hierbei soll vom entsprechenden Schläger-Objekt die Methode setzevx(...) mit dem Übergabe-Parameter +1 bzw. -1 aufgerufen werden. Damit sich die Schläger-Objekte nicht zu weit Richtung Gegner oder gar aus dem Spielfeld heraus bewegen können, wird der zulässige Bewegungsbereich eingeschränkt, wie es ja auch schon für den oberen und unteren Bildschirm-Rand geschehen ist. 1. Sieh in der Klasse Schlaeger im Quellcode der Methode bewegen() nach, wie du das für den oberen und unteren Bildschirm-Rand realisiert hast. 2. Formuliere nun entsprechende bedingte Anweisungen, die deinen linken Schläger im horizontalen Bereich zwischen 0 und 50 Pixel einsperren und entsprechend deinen rechten Schläger im horizontalen Bereich zwischen 750 und 800 Pixel einsperren. Da du innerhalb der Klasse stets für den linken und rechten Schläger gleichzeitig denken musst, tritt bei der bedingten Anweisung ein Problem im Bereich x>50 und x<750 auf. Diese Bedingung trifft nämlich IMMER auf einen der beiden Schläger zu und das ist nicht gewollt! Eine Lösung stellen hier folgende Konstrukte dar: x>50 && x<400 (für den späteren linken Schläger) und x<750 && x>400 (für den späteren rechten Schläger). Dadurch gilt die Bedingung sicher immer nur für den einen Schläger. 3. Zeichne für einen der beiden Fälle ein Sequenz-Diagramm. Berücksichtige dabei nur die Horizontal-Bewegung und lasse die Vertikal-Bewegung für dieses Sequenz-Diagramm außer acht. 4. Wo im Code musst du diese Ergänzungen unterbringen? Setze deine Idee in JAVA um. Überprüfe, ob beide Schläger-Objekte sich genau so verhalten, wie du es dir vorgestellt hast und ändere ggf. deinen Code so lange, bis deine Vorstellungen erfüllt sind.

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 2 Noch reagiert der Ball nicht auf diese horizontalen Bewegungen des Schlägers. Um dies zu realisieren, muss in dem Moment, wo der Ball auf den Schläger trifft der Wert von vx des Schläger- Objekts abgefragt werden. 1. Wo im Code hast du das Auftreffen des Balls auf den Schläger realisiert? 2. Beschreibe in Worten, was der Reihe nach geschehen müsste, damit der Ball schneller wird, wenn der Schläger beim Aufprall auf ihn zukommt. 3. Beschreibe in Worten, was der Reihe nach geschehen müsste, damit der Ball langsamer wird, wenn der Schläger beim Aufprall von ihm weg geht. 4. Wo genau im Code würdest du diese Veränderungen einbringen? 1. Schreibe zunächst in der Klasse Ball eine Methode erhoehevx(). Dabei soll der Wert von vx um Eins vergrößert werden, wenn vx positiv ist bzw. um Eins verringert werden, wenn vx negativ ist. Es soll also immer der Betrag um Eins größer werden und das Vorzeichen erhalten bleiben. 2. Schreibe in der Klasse Ball analog eine Methode verringerevx(). Achte bei dieser Methode allerdings darauf, dass der Wert von vx nie kleiner als 1 bzw. größer als -1 wird, sonst bleibt der Ball stehen oder bewegt sich senkrecht! 3. Die Veränderungen in der Methode tick() sollst du hier vorgegeben bekommen, da sich dabei in der Praxis sehr viele kleine Tücken ergeben. Nachdem die beiden Schläger- Objekte bewegt wurden, folgt dieser Code: // Ball trifft linken Schlaeger if ( this.trifft(this.ball, this.links) ) { this.ball.vorzeichenvonvxaendern(); if ( this.links.nennevx() > 0 ) { this.ball.erhoehevx(); else if ( this.links.nennevx() < 0 ) { this.ball.verringerevx(); this.ball.bewegen(); this.ball.bewegen(); // Ball trifft rechtenschlaeger else if ( this.trifft(this.ball, this.rechts) ) { this.ball.vorzeichenvonvxaendern(); if ( this.rechts.nennevx() > 0 ) { this.ball.verringerevx(); else if ( this.rechts.nennevx() < 0 ) { this.ball.erhoehevx(); this.ball.bewegen(); this.ball.bewegen(); this.ball.bewegen(); // Ball links und rechts im Aus... Wenn du genau hinsiehst, dann bemerkst du, dass im Falle eines Zusammentreffens von Ballund Schläger-Objekt die Methode bewegen des Balls-Objekts 3 Mal aufgerufen wird. Dies ist eine Reaktion auf lästige Spielfehler, die plötzlich bei Schmetterschlägen aufgetreten sind...

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 3 Rahmen-Abpraller Wenn das Ball-Objekt ein Schläger-Objekt sehr nahe am oberen Rand trifft, so soll die Geschwindigkeit in y-richtung verringert werden. Hierdurch prallt der Ball weiter nach oben (bzw. weniger weit nach unten) ab, als es nach dem Gesetz Einfallswinkel gleich Ausfallswinkel der Fall wäre. Trifft das Ball-Objekt eines der Schläger-Objekte nahe am unteren Ende, so soll die Geschwindigkeit in y-richtung erhöht werden. Hierdurch prallt der Ball weiter nach unten (bzw. weniger weit nach oben) ab, als es nach dem Gesetz Einfallswinkel gleich Ausfallswinkel der Fall wäre. Hierzu sollten in der Klasse Schlaeger zwei Methoden zur Verfügung gestellt werden, welche auf die Übergabe einer y-koordinate (z.b. der Des Ball-Objekts) antworten, ob der Schläger am oberen (bzw. unteren) Rand getroffen worden ist. 1. Beschreibe zunächst in Worten, wie innerhalb der Klasse Schlaeger diese Frage beantwortet werden kann, wenn die x-koordinate des Balls bekannt ist. 2. Welcher Daten-Typ ist hier für die Antwort geeignet? 3. Was muss dieser Methode als Übergabe-Parameter übergeben werden? 1. Schreibe nun in der Klasse Schlaeger diese beiden Methoden. 2. Wenn keine Übersetzungsfehler mehr auftreten, dann erzeuge ein Schläger-Objekt und teste die neue Methode durch Rechtsklick auf die Objekt-Karte. Teste mit mindestens 3 verschiedenen Übergabe-Parametern! Diese beiden Methoden kannst du nun in der Klasse PingPong innerhalb der Methode tick() benutzen, um die Rahmen-Abpraller in deinem Spiel zu realisieren. 1. Überlege, wo genau in der Methode tick() du diese neue Methode der Schläger-Objekte aufrufen musst. 2. Überlege außerdem, wie du dann auf die Antwort reagieren musst, damit es tatsächlich zu einem Rahmen-Abpraller kommt. Welches Attribut musst du wann bei welchem Objekt verändern? 1. Setze deine Ideen nun in Code um. 2. Wenn es keine Übersetzungsfehler mehr gibt, dann starte dein Spiel und teste, ob sich alles so verhält, wie du es dir vorgestellt hast. Spiele nun ein Wenig mit deinem Sitznachbarn, sofern er/sie das Problem ebenfalls schon gelöst hat Das habt ihr euch nun wirklich verdient!

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 4 Angeschnittene Bälle Hierzu braucht der Ball ein neues Attribut spin. Ein Spin von 1 bedeutet, dass sich der Ball gegen den Uhrzeigersinn dreht, ein Spin von -1 bedeutet Drehung im Uhrzeigersinn. Bewegt sich ein Schläger nach oben oder unten, während er den Ball trifft, so bekommt der Ball einen entsprechenden Spin. Bei einer Reflexion am oberen oder unteren Bildschirmrand wird der Ball entsprechend seinem Spin dann nicht dem Gesetz Einfallswinkel gleich Ausfallswinkel gehorchen. Nach einer Reflexion oben oder unten wird der Spin wieder auf 0 zurück gesetzt. Mit der Umsetzung dieser Idee möchten wir dich ganz bewusst alleine lassen! Denn zu einem guten Programmierer gehört auch die Fähigkeit, ein Problem ohne fremde Hilfe zu durchdenken, zu modellieren und schließlich in Code umzusetzen. Gehe grundlegend genauso vor, wie bei allen bisherigen Problemen auch... Eine ausführbare Datei erstellen Das fertige Spiel, welches du dir von der Website engine-alpha.org herunter laden kannst, ist eine Datei mit der Endung.jar. Zum Starten des Spiels benötigst du kein BlueJ. Du musst diese Datei entweder nur doppelt anklicken oder rechts klicken und dann mit Java öffnen. Nun sollst du lernen, wie man so etwas realisieren kann. Es ist ganz einfach, denn BlueJ hilft dir dabei. 1. Schreibe in der Klasse PingPong eine letzte Methode wie hier angegeben: public static void main (String[] args) { new PingPong(); Den genauen Sinn und die Funktionsweise dieser Methdode kannst du noch nicht vollständig erfassen. Dies folgt später. 2. Klicke im BlueJ-Fenster im Hauptmenü auf Projekt / Als jar-archiv speichern. Nimm im Darauf folgenden Fenster folgende Einstellungen vor: Klicke dann auf weiter und speichere im folgenden Fenster dein jar-archiv an einem Ort deiner Wahl. Wähle einen Namen. Hierdurch gibst du an, in welcher Klasse sich diese neue main-methode befindet. Diese wird automatisch beim Starten des jar-archivs gestartet. Ihr einziger Inhalt ist das Erzeugen eines neuen Spiel-Objekts. Die Bibliothek engine-alpha_versionxxx.jar musst du einbinden, da sonst diesem Archiv die Funktionen der Engine-Alpha nicht bekannt sind. Diese kannte bisher ja nur deine BlueJ-Installation.

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 5 Ausblick Vererbung Du hast dein erstes Spiel nun fertig gestellt und dabei eine ganze Menge gelernt: Klassen mit einfachen Attributen (int, boolean, ) und Referenz-Attributen (KREIS, ) Konstruktoren mit und ohne Übergabe-Parameter Methoden mit und ohne Rückgabe, mit und ohne Übergabe-Parameter Fallunterscheidungen das Prinzip eines Interfaces Da du dein Spiel allerdings anfangs ohne jedwede Grundkenntnisse erstellt hast, ist die Planung dieses ersten Spiels aus Sicht eines erfahrenen Programmierers nicht besonders vollkommen. Wir wollen nun das fertige Spiel noch einmal reflektieren und dabei möchten wir dir zeigen, wie du dein zweites Spiel bereits von vorne herein etwas eleganter und damit weniger aufwändig konzipieren kannst Gemeinsamkeiten von Klassen erkennen und nutzen Betrachte doch einmal ganz genau die Klassen Ball und Schlaeger und suche nach Gemeinsamkeiten: 1. Welche Attribute kommen in beiden Klassen gemeinsam vor? 2. Welche Methoden kommen in beiden Klassen gemeinsam vor. Sieh dir nun in deinen Java-Klassen die Rümpfe der entsprechenden Methoden an und vergleiche, was davon bei beiden Klassen identisch ist. Bei der Beantwortung dieser Fragen wirst du feststellen, dass wir sehr oft denselben Code in beiden Klassen stehen haben. Wäre es da nicht schön, ihn nur einmal schreiben zu müssen? Stelle dir nun vor, du hast plötzlich eine bessere Idee für eine Methode. Wäre es nun nicht ebenfalls schön, diese Änderung nur einmal schreiben zu müssen. Stelle dir weiter vor, du hättest nicht nur zwei sondern z.b. zehn Klassen. Könnten sich da nicht eventuell Fehler einschleichen, während man versucht, zehn Mal dasselbe zu schreiben oder abzuändern? Wie genial wäre in diesem Fall eine Möglichkeit, alles Gleiche nur einmal schreiben bzw. abändern zu müssen! Das lässt sich tatsächlich sehr einfach verwirklichen...

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 6 Konkrete Unterklassen erben von abstrakten Unterklassen Die Technik, die du hierzu neu lernen musst, nennt man Vererbung: Alles Gemeinsame wird in einer einzigen (abstrakten) Oberklasse verankert. Davon leitet man nun die speziellen Unterklassen ab und ergänzt nur das, was neu hinzu kommt. erbt von erbt von Die Vererbung wird im Klassen-Diagramm durch Pfeile mit dreieckiger Spitze symbolisiert. In der abstrakten Klasse Spielfigur sind alle Attribute und Methoden vereint, welche in beiden Klassen Ball und Schlaeger auf gleiche Art und Weise vorkommen. Die Klassen Ball und Schlaeger sind eine Sonderform (Erweiterung) der allgemeinen Klasse Spielfigur. In den Klassen Ball und Schläger müssen nur noch die neu hinzu gekommenen Methoden geschrieben werden. Sie verfügen über alle Attribute und Methoden der Klasse Spielfigur und zusätzlich über die speziellen eigenen Attribute und Methoden. Man sagt entweder: Die Klassen Ball und Schlaeger erben von der Klasse Spielfigur. Oder man sagt: Die Klassen Ball und Schlaeger erweitern die Klasse Spielfigur.

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 7 Vererbung in JAVA Vererbung in JAVA ist nicht schwer! Es gibt nur drei Dinge zu beachten: Eine abstrakte Klasse erstellt man mit Hilfe des Schlüsselworts abstract : public abstract class Spielfigur { Private Attribute müssen in abstrakten Klassen als protected deklariert werden: public abstract class Spielfigur { protected int x; protected int y; protected String farbe; Eine Klasse erbt von einer anderen Klasse mit Hilfe des Schlüsselworts extends : public class Ball extends Spielfigur { private int radius; Beachte, dass protected NUR in den Überklassen verwendet wird. In den Unterklassen wird wieder ganz normal private verwendet. Hier nun einige Code-Beispiele: public abstract class Spielfigur { protected int x; protected int y; protected int vx; protected int vy; protected String farbe; public Spielfigur(int x, int y, int vx, int vy, String farbe) { this.x = x; this.y = y; this.vx = vx; this.vy = vy; this.farbe = farbe; //Getter-Methoden public int nennex() { return this.x; // Setter-Methoden public void setzex(int x) {

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 8 this.x = x; // weitere selbst geschriebene Methoden public void bewegen() { this.x = this.x + this.vx; this.y = this.y + this.vy; public class Ball extends Spielfigur { private int radius; public Ball(int x, int y, int vx, int vy, String farbe, int radius) { super(x, y, vx, vy, farbe); this.radius = radius; // neue Getter-Methode public int nenneradius() { return this.radius; // neue Setter-Methode public void setzeradius(int radius) { this.radius = radius; // weitere neue Methoden public void erhoehevx() { if (this.vx > 0) { this.vx = this.vx + 1; else if (this.vx < 0) { this.vx = this.vx 1; public void verringerevx() { if (this.vx > 1) { this.vx = this.vx 1; else if (this.vx < -1) { this.vx = this.vx + 1; Aufruf des Konstruktors der Oberklasse mit super(...) Dies MUSS der erste Befehl sein! Auch hier wird vermieden, Code zwei Mal zu schreiben! Beachte die Befehls-Zeile super( )! Mit super( ) wird immer der geerbte Konstruktor aufgerufen, der dann alle geerbten Attribute initialisiert, so dass man diese Code nicht doppelt schreiben muss. Der Aufruf von super( ) MUSS der erste Befehl im Rumpf des neuen Konstruktors sein!

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 9 Selbstkontrolle: Hast du auch alles verstanden? dann kannst du bestimmt die folgenden Fragen ohne Probleme beantworten. Wenn nicht, dann arbeite das entsprechende Teil-Kapitel noch einmal durch Nimm dir etwas Zeit und versuche alle neu gelernten Fachbegriffe in eigenen Worten zu erklären: Vererbung, Oberklasse Unterklasse, erben, erweitern, super-konstruktor Ergänze hierzu dein Vokabelheft ergänze bei Bedarf eigene Beispiele Wozu dient das Prinzip der Vererbung? Wie stellt man Vererbung in einem Klassen-Diagramm dar? Wie kennzeichnet man abstrakte Klassen in einem Klassen-Diagramm? Mit welchem Schlüsselwort macht man eine Klasse abstrakt? Mit welchem Schlüsselwort erbt man von einer anderen Klasse? Mit welchem Schlüsselwort definiert man private Attribute in abstrakten Klassen? Was leistet der Aufruf von super( )? Wo muss dieser Aufruf immer stehen? Was kommt in die Klammern dieses Aufrufs?

Inf-10 NTG Objektorientiertes Programmieren Teil 4 O S t R M i c h a e l G a n s h o r n 10 Ausblick In einem zweiten Spiel wirst du lernen alles bisher Gelernte noch einmal anzuwenden, das Prinzip der Vererbung in deine Planung einzubeziehen, eindimensionale Felder (Arrays) kennen lernen, um viele Attribute desselben Daten-Typs zu verwalten, zweidimensionale Felder (Arrays) kennen lernen, um schachbrettartige Strukturen zu verwalten, das Spiel Snake zu modellieren und zu programmieren, damit der Spaß-Faktor erhalten bleibt.