Klassendefinitionen verstehen - Teil III - 4.0 ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Formalitäten • Klausur (gegen Ende) • Zwei Pflichtprojekte – müssen bestanden werden – das erste diese Woche ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Konzepte • • • • Konstruktoren Felder Primitive Typen und Objekttypen Verschieden Quellen von Methoden ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Klassenstruktur public class ClassName extends Superclass { Fields } Constructors Methods ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Konstruktoren ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Konstruktoren Little Crab public class CrabWorld extends World { public CrabWorld() { super(560, 560, 1); addObject(new Crab(), 300, 300); } Aufgabe: Automatisch Krabben erzeugen ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling ... } ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Primitive Typen und Objekttypen Little Crab • Java unterscheidet primitive Typen und Objekttypen • Variablen (Felder und Parameter) können primitive Typen oder Objekttypen speichern Aufgabe: Neue Würmer erzeugen, wenn die alten gefressen werden ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Felder mit Objekttypen MyWorld Crab int wormsEaten 15 World world ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Felder mit Objekttypen • Werte von primitiven Typen werden direkt in der Variablen gespeichert • Für Objekttypen werden Referenzen zu den Objekten in der Variablen gespeichert • Primitive Typen sind int, float, double, char and boolean (und einige andere, siehe Appendix B) • All anderen sind Objekttypen ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Primitive Typen und Objekttypen Objekttyp SomeObject obj; int i; Primitiver Typ 32 ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Primitive Typen und Objekttypen ObjectType a; ObjectType b; Quiz: Was wird ausgegeben? • int a; int b; a = 32; b = a; a = a + 1; System.out.println(b); • Person a; Person b; a = new Person("Everett"); b = a; a.changeName("Delmar"); System.out.println( b.getName()); ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Methodenaufrufe • Drei Arten von Methodenaufrufen: • eigene Methoden (direkt, oder von der Oberklasse): turnAtEdge() • Methoden von anderen Objekten: world.addObject(new Worm(), 100, 200) b = a; int a; int b; 32 32 ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Methodenaufrufe • Methoden in anderen Klassen: Greenfoot.getRandomNumber(100) ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Little Crab • Drei Arten von Methodenaufrufen: • eigene Methoden (direkt, oder von der Oberklasse): in der eigenen Klasse (oder der Oberklasse) definiert • Methoden von anderen Objekten: in einer anderen Klasse definiert • Methoden in anderen Klassen: in einer anderen Klasse definiert, mit static keyword ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Aufgabe: Bild animieren ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling