Michael Barth, Fabian Birzele und Gefei Zhang

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Einführung in die Programmierung mit Java
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Parameterübergabemechanismen für den Methodenaufruf
EPROG Tutorium #3 Philipp Effenberger
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Robuste Programme durch Ausnahmebehandlung
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Objektorientierte Datenbanken
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Konstruktoren.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Einführung in die Programmierung mit Java
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Einführung in die Programmierung mit Java
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang
Grundkurs Informatik 11-13
Assoziation und Aggregation
Von Cem, Maurice und lars
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Implementieren von Klassen
Grundkurs Informatik 11-13
 Präsentation transkript:

Michael Barth, Fabian Birzele und Gefei Zhang First things first, but not necessarily in that order. - Dr. Who, Meglos Klassen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/WS0506/infoeinf/

Ziele Verstehen des Syntax einer Java-Klasse und ihrer graphischen Beschreibung in UML Verstehen des Speichermodells von Java Lernen Objekte zu erzeugen und einfache Methoden zu schreiben Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Einfache Klassen in Java Objekte Objekte sind kleine Programmstücke. Jedes Objekt hat spezifische Fähigkeiten. Objekte kooperieren, um eine umfangreiche Aufgabe gemeinsam zu erfüllen Klassen Klassen sind Fabriken für Objekte. Jede Klasse kann einen ganz bestimmten Typ von Objekten erzeugen. Jedes Objekt gehört zu genau einer Klasse; es ist Instanz dieser Klasse Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Einfache Klassen in Java Eine Klassendeklaration in Java hat die Gestalt public class C { private type1 attr1; ... public c(params1) {body1} ... public typem+1 methodName1(params1) {body1} public typem+n methodNamen(paramsn) {bodyn} } überall sichtbar nur innerhalb der Klasse sichtbar Attribut (engl. field) Konstruktor Methode Ergebnistyp formaler Parameter Rumpf der Methode Kopf der Methode Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Klasse Point public class Point { private int x,y; public Point(int x0, int y0) { this.x = x0; this.y = y0; } public void move(int dx, int dy) { this.x = this.x + dx; this.y = this.y + dy;   public int getX() { return this.x; public int getY() { return this.y; Klassenname vordefinierte lokale Variable this bezeichnet das gerade betrachtete Objekt y-Koordinate von this Rückgabe des Ergebniswerts

UML Unified Modelling Language Modellierungssprache für Objekt-Orientierte Software-Entwicklung Aktueller De facto Standard in Industrie und Forschung Ursprünglich entwickelt um 1995 von J. Rumbaugh, G. Booch und I.Jacobson als gemeinsamer Nachfolger von deren Sprachen zur objekt-orientierten Modellierung Heute Standard, der von der OMG (Object Management Group) gepflegt und weiterentwickelt wird Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Einfache Klassen in UML In UML wird eine Klasse C folgendermaßen repräsentiert (angepasst an Java-Syntax): C type1 attr1 ... typem attrm typem+1 methodName1(params1) typem+n methodNamen(paramsn) Bemerkung In UML wird eine Pascal-ähnliche Syntax für Attribut- und Methodendeklarationen verwendet. Wir haben dies zugunsten einer einheitlichen Syntax an Java angepasst. Die Konstruktoren werden meist nicht im Klassendiagramm aufgeführt. Die Methodenrümpfe erscheinen nicht im UML-Klassendiagramm, da UML-Diagramme zur abstrakteren Repräsentation von Klassen verwendet werden. Man kann Methodenrümpfe als Notizen an das Diagramm hängen. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

In UML wird die Klasse Point folgendermaßen repräsentiert: Beispiel: In UML wird die Klasse Point folgendermaßen repräsentiert: „-“ für private + Point -int x -int y +void move (int dx, int dy) +int getX () +int getY () Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme „+“ für public

Notizen in UML Beispiel Point Notiz (für Rumpf von move) -int x -int y this.x = this.x + dx; this.y = this.y + dy; Point -int x -int y +void move (int dx, int dy) +int getX () +int getY () Notiz (für Rumpf von move) Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme 

Objekte und deren Speicherdarstellung In UML wird ein Objekt der Klasse C folgendermaßen repräsentiert: Name der Klasse Wichtig: „:“ und „Unterstreichen“ Objektinstanz OHNE Name („anonymes“ Objekt) Objektinstanz mit Name objektName : C attr1 = wert1 ... attrm = wertm : C attr1 = wert1 ... attrm = wertm Name der Instanz (optional) Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme Angabe der Attributwerte

Objekte und deren Speicherdarstellung Beispiel: Objekte der Klasse Point Objektinstanz mit Name Objektinstanz OHNE Name („anonymes Objekt) @123 : Point x = 1 y = 2 : Point x = 1 y = 2 Zwei VERSCHIEDENE Objekte der Klasse Point mit gleichen Attributwerten! Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Objekte und deren Speicherdarstellung Jeder Zustand eines sequentiellen Java-Programms besteht aus einem Keller für die lokalen Variablen einer Halde („heap“) für die Objekte Zeiger (Link, Referenz) : C ... i b o p q 3 true  :Point x = 1 y = 2 Objekte der Klasse Point Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 2 y = 1 Lokale Variablen Halde Keller

Objekte sind Referenztypen In einer Objektvariable wird nur ein Zeiger (Link, Referenz) auf das wirkliche Objekt gespeichert Point p; Die Java Maschine kümmert sich um Platz für die Daten des Objekts. Dazu gehört Besorgung von zusätzlichem Platz bei Bedarf Recyclen von nicht mehr benötigem Platz Dies heißt: Garbage Collection Der Programmierer hat stets einen Link auf das Objekt zur Verfügung Zeiger auf Objekt von Point Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 1 y = 2 i p 3 

Objekte und deren Speicherdarstellung Durch Zuweisung verändert sich der Wert der Instanzvariable p.x = p.x + 2; Beispiel Instanzvariable Vorher : C ... i b o p q 3 true  @123:Point x = 1 y = 2 Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 2 y = 1 Lokale Variablen Halde Keller

Objekte und deren Speicherdarstellung Nachher : C ... i b o p q 3 true  @123:Point x = 3 y = 2 :Point x = 2 y = 1 Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Objekte und deren Speicherdarstellung Methodenaufruf verändert den Zustand Beispiel q.move(2, 2); ergibt : C ... i b o p q 3 true  @123:Point x = 3 y = 2 Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 4 y = 3

Zuweisung von Objekten Bei Zuweisung von Objekten werden nur die Referenzen übernommen p = q; Vorher : C ... i b o p q 3 true  @123:Point x = 3 y = 2 Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 4 y = 3

Zuweisung von Objekten Bei Zuweisung von Objekten werden nur die Referenzen übernommen p = q; : C ... i b o p q 3 true  @123:Point x = 3 y = 2 Nachher Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 4 y = 3

Datenmüll Nach der Zuweisung ist ein Objekt unerreichbar geworden : C Kein Link zeigt mehr darauf Es ist Müll (engl.: garbage) und wird automatisch vom Speicherbereinigungsalgorithmus („Garbage Collector“) gelöscht : C ... i b o p q 3 true  @123:Point x = 3 y = 2 Müll („Garbage“) Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 4 y = 3

Beeinflussung, Manipulation Wenn zwei Referenzen auf das gleiche Objekt zeigen Jedes kann die Attributwerte des anderen beeinflussen Ein Name ist dann ein sog. Alias für den anderen q.x = 25; ändert die x-Koordinate von p Beispiel : C ... i b o p q 3 true  q ist Alias für p Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = y = 3 4 Vorher

Beeinflussung, Manipulation Wenn zwei Referenzen auf das gleiche Objekt zeigen Jedes kann die Felder des anderen beeinflussen Ein Name ist dann ein sog. Alias für den anderen q.x = 25; ändert die x-Koordinate von p Beispiel : C ... i b o p q 3 true  q ist Alias für p Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = y = 3 25 Nachher

Erzeugung von Objekten und Konstruktoren Will man einer lokalen Variablen var ein neues Objekt der Klasse C zuweisen, schreibt man Konstruktor var = new C(x0); erzeugt ein neues Objekt der Klasse C, auf das var zeigt und das durch den Konstruktoraufruf C(x0) initialisiert wird Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Erzeugung von Objekten: Beispiel Point Konstruktor von Point erzeugt neues Point-Objekt p = new Point(5,5); Point w = new Point(3,-7); : C ... i b o p q w 3 true  :Point x = 5 y = 5 Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 6 y = 3 :Point x = 3 y = -7 

Konstruktor Ein Konstruktor dient zur Initialisierung der Attribute eines neu erzeugten Objekts. Ein Konstruktor hat den gleichen Namen wie seine Klasse Er ist keine Methode, da er nicht auf ein Objekt angewendet werden kann, sondern immer nach „new“ stehen muß., d.h. z. B. new Point(5,5); Beispiel: p.Point(5,5) ergibt einen Syntaxfehler. FALSCH! Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Konstruktor :Point x = 0 y = 0 i p 3 Wird ein Attribut durch einen Konstruktor nicht explizit initialisiert, so wird es mit dem Standardwert seines Typs implizit initialisiert. Der Standardwert für int ist 0, double ist 0.0, boolean ist false, C (Klassentyp) ist null, wobei null das NICHT-ERZEUGTE Objekt repräsentiert. Beispiel: Deklariere Konstruktor Point(){} in Klasse Point p = new Point(); initialisiert die Attribute x,y des neuen Objekts mit 0 . Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme :Point x = 0 y = 0 i p 3 

! Null i p1 3 null bezeichnet das NICHT-ERZEUGTE Objekt ; es ist ein Zeiger, der auf kein Objekt zeigt. Der Aufruf null.m(); einer Methode mit dem null-Zeiger ist verboten und führt zu einem (Compilezeit-)Fehler. Ebenso führt Point p1 = null; und dann p1.move(1,1); zu einem Laufzeit-Fehler, bei dem eine „NullPointerException“ erzeugt wird und das Programm abbricht. ! i p1 3  Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Mehrere Konstruktoren Mehrere Konstruktoren sind möglich Überladene Konstruktoren müssen aber eine unterschiedliche Parameterliste aufweisen, durch die sie eindeutig unterschieden werden können. Beispiel: Ein zweiter Konstruktor in der Klasse Point ist der Standardkonstruktor Point(){} Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme

Implementierung einer UML-Klasse Für jede Methode einer Klasse muß eine Implementierung (in Java) angegeben werden. Z.B. zur Implementierung der Klasse Point int x int y int getX() int getY() void move (int dx, int dy) Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme müssen für alle 3 Methoden Implementierungen durch Methodenrümpfe angegeben werden; außerdem müssen die Konstruktoren implementiert werden.

Methodenimplementierung: Abkürzung Innerhalb einer Methodenimplementierung ist der Name von this eindeutig und kann weggelassen werden, wenn keine Namenskonflikte auftreten. public void move(int dx, int dy) { x = x + dx; y = y + dy; } Aber: Die folgende Implementierung von move benötigt die explizite Verwendung von this. public void move(int x, int y) { this.x = this.x + x; this.y = this.y + y; }

Benutzen von Klassen Beispiel Eine Klasse besteht aus einer Menge von Attributen und Methodenrümpfen. Um die Methoden ausführen zu können, braucht man eine Klasse mit einer Methode main. Im einfachsten Fall hat diese die Gestalt einer einfachen Klasse. Beispiel public class PointMain { public static void main (Stringl[]args) { Point p = new Point(10,20); Point p1 = new Point(); System.out.println(„p=Point[x = “+p.getX()+“, y = “+p.getY()+“]“); System.out.println(„p1=Point[x = “+p1.getX()+“, y = “+p1.getY()+“]“); p1.move(10,10); }

Benutzen von Klassen Achtung: Wenn man zwei oder mehr Klassen in einer Datei vereinbart, darf genau eine dieser Klassen eine Methode main besitzen. Der Name der Datei muss der Name dieser Klasse mit Suffix .java sein Beispiel: Die Datei PointMain.java enthält eine Klasse PointMain mit Methode main. Mögliche andere Klassen in dieser Datei dürfen keine Methode main enthalten.

Zusammenfassung Klassen werden graphisch durch UML-Diagramme dargestellt und in Java implementiert. Jede Instanz-Methode hat einen impliziten Parameter – das Objekt mit dem die Variable aufgerufen wird – und 0 oder mehr explizite Parameter. Objekte werden mit dem new-Operator erzeugt, gefolgt von einem Konstruktor. Zahlartige Variablen haben Zahlen als Werte, lokale Variablen vom Objekttyp haben Zeiger (Referenzen) als Werte. Um Aliasing zu vermeiden, muß man die betreffenden Objekte kopieren. Der null-Zeiger zeigt auf kein Objekt. Der Aufruf einer Methode null (als implizitem Parameter) führt zu einem Fehler. Instanzvariablen (Attribute) werden in Java implizit initialisiert; dagegen müssen lokale Variablen explizit initialisiert werden. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while--Programme