DVG Klassen und Objekte

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
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.
Kapselung , toString , equals , Java API
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Objektorientierte Programmierung Definition von Klassen
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
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.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
Klassen und Objekte DVG
Abstrakte Klassen DVG
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte1 Klassen und Objekte.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Entwurfsmuster EDV Entwurfsmuster.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Klassendefinition und Objekte
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
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
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
EPROG Tutorium #6 Philipp Effenberger
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
A Workshop About this chapter General description Units Time Schedule
Java-Kurs Übung Besprechung der Hausaufgabe
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Objektorientierte (OO) Programmierung
C++ FÜR cOMPUTERSPIELENTWICKLER
Grundkurs Informatik 11-13
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

DVG1 - 13 - Klassen und Objekte

Laura Lemay „Java in 21 Tagen“ Objektorientierte Programmierung ist fast wie Bier. Die meisten, die das erste Mal ein Glas des malzigen Getränks zu sich nehmen, mögen es nicht und stellen unter Umständen die Zurechnungsfähigkeit derjenigen in Frage, die ein Loblied auf dieses Getränk singen. »Was hab' ich Dir angetan«, fragen sie, »dass Du mich dieses Höllenzeug trinken lässt?« Nach einiger Zeit kann es durchaus sein, dass die, die trotzdem weiter Bier trinken, es schätzen lernen. (Bei manchen wird dieser Zeitraum Studium genannt.) Objektorientierte Programmierung ist, wie Bier, ein Geschmack, an den man sich gewöhnen muss. Es ist zum einen eine der bemerkenswertesten Ideen der Programmierung, die in den letzten Jahren eingeführt wurden, und zum anderen der Quell großer Bestürzung bei den Programmierern, die damit nicht vertraut sind. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte In gewisser Weise ist dieser Ruf gerechtfertigt.Objektorientierte Programmierung, auch OOP genannt, ist ein Fach, das man jahrelang studieren und üben kann. Die Grundidee ist allerdings einfach: Organisieren Sie Ihre Programme auf eine Art, die die Art widerspiegelt, mit der Objekte in der realen Welt organisiert sind. Erscheinungsjahr 08-1998 ISBN-Nummer 3-8272-2030-0 Preis DM 79,95 http://www.mut.com/leseecke DVG1 - 13 - Klassen und Objekte

Beispiel : Vorfahrtsregel Aufgabe: Beschreibung der Situation an einer Kreuzung. Es kommen in unregelmäßigen Abständen Fahrzeuge an die Kreuzung. Es fahren Fahrzeuge ab, die Vorfahrt haben. Hauptstraße vor Nebenstraße rechts vor links DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Modellierung ist relativ einfach. Warteschlangen in den Straßen werden zufällig gefüllt. FIFO-Speicher (First In - First Out) Abfahren nach Vorfahrtsregeln Blockierung der Kreuzung durch Fahrzeuge Zeittaktung zufällige Einflüsse Fahrer reagieren unterschiedlich  neue Ebene : Fahrer Fahrzeugdefekte  neue Ebene : Fahrzeugtechnik Verletzung der Regeln durch manche Fahrer  jedes Fahrzeug verhält sich anders äußere Einflüsse Fahrzeuge mit Sondersignal Wettereinflüsse u.s.w. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Probleme globale Sicht: Wir nehmen den Standpunkt des Beobachters ein und steuern die Szene von oben. Alle Informationen sind zentral verfügbar, also auch zentral zu verwalten. Das Programm wird sehr komplex und wenig strukturiert. Beschreibung bleibt trotzdem unvollkommen. Das Programm spiegelt die Realität nur sehr unvollkommen wieder. In dem Programm sind sehr unterschiedliche Größenordnungen vorhanden: global: z.B. Wettereinflüsse regionale lokal bis mikro DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Ausweg Bildung von klaren Strukturen durch Betrachtung als Objekte Jedes Objekt weiß nur über sich selbst Bescheid. Fahrzeug weiß nichts über globale Luftströmungen und deren Einfluss auf das Wetter im Kreuzungsbereich. Fahrzeug weiß nichts über den Ladungsträgertransport in den Prozessoren seines Motors. Objekte können aus Teilobjekten bestehen und können Teilobjekt eines größeren Objektes sein. Kreuzung besteht aus mehreren Straßen Auto enthält Motor, Getriebe, Treibstofftank,... Objekte tauschen Informationen über klar definierte Schnittstellen aus. Lichtsignale, Hupen Schalter, Regler, Anschlüsse DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Vorteile Teilobjekte brauchen nur soweit modelliert zu werden, wie es für die Lösung der Aufgabe erforderlich ist. Modellierung kann nachträglich verfeinert werden. Teilobjekte können zu verschiedenen Zeiten von verschiedenen Leuten entwickelt, getestet und modifiziert werden, solange die vereinbarten Schnittstellen eingehalten werden. Anwendungssicherheit: Nutzer eines Objektes kann nur über die zugelassenen Schnittstellen Einfluss auf das Objekt nehmen. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Probleme Jedes Objekt unterscheidet sich von jedem anderen. Jedes Objekt ist neu zu beschreiben. Große Mengen von Programmcode. Großer Testaufwand. Objekte sind gekennzeichnet durch: Attribute Zustände, Eigenschaften, Parameter Zugriffsmethoden Möglichkeiten die Attribute zu verändern Kommunikation mit anderen Objekten über Nachrichten. Möglichkeiten mit anderen Objekten Informationen auszutauschen DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Ausweg Viele Objekte haben mehr oder weniger große Gemeinsamkeiten. Fahrzeuge Lastkraftwagen, Personenwagen, Motorräder, Fahrräder Straßen Hauptstraßen, Nebenstraßen Objekte lassen sich klassifizieren. Klassen sind Objekttypen, abstrakte Objekte Ein Objekt ist eine konkrete Realisierungen einer Klasse, eine Instanz einer Klasse. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Neue Klassen lassen sich aus schon bekannten Klassen ableiten. Fahrzeug Lastkraftwagen LKW mit Anhänger LKW ohne Anhänger Koffer Sattelschlepper Personenwagen Motorräder Motorrad Motorroller Beiwagenmaschine DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Abgeleitete Klassen übernehmen Attribute und Methoden von der ursprünglichen Klasse fügen neue Attribute und Methoden hinzu überschreiben Attribute und Methoden realisieren abstrakte Methoden DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Bruce Eckle - Thinking in JAVA Everything is an object. A program is an bunch of objects telling each other what to do by sending messages. Each object has its own memory made up of other objects. Every object has a type. All objects of particular type can receive the same messages. DVG1 - 13 - Klassen und Objekte

Klassen-Definition in JAVA Klassendefinition bestehen aus Klassenkopf Name der Klasse Kennzeichnung als abstrakte Klasse (abstract) Kennzeichnung als finale Klasse (final) Modifizierer (public) Ableitung von anderen Klassen (extends) Realisierung von Interfaces (implements) Klassenrumpf Attribute (Eigenschaften, Daten) statische Initialisierer Konstruktoren (initialisiert ein Objekt der Klasse) Methoden (Schnittstellen, Prozeduren, Funktionen) interne Klassen DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Klassenkopf [public] [final] [abstract] class Bezeichner [extends Klasse] [implements Interface,...,Interface] public : Die Klasse ist für alle anderen Klassen sichtbar und verwendbar. Wenn nicht angegeben, ist die Klasse nur im selben package sichtbar und verwendbar (in C++ friendly). final: Von der Klasse können keine weiteren Klassen abgeleitet werden. abstract: Die Klasse enthält nicht vollständig definierte (abstrakte) Methoden. Es können keine Objekte von dieser Klasse erzeugt werden. final und abstract können nicht gleichzeitig verwendet werden! DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte extends: Die Klasse erweitert eine bekannte Klasse. z.B.: public class Fahrzeug { ..... } public class Lastkraftwagen extends Fahrzeug {......} Lastkraftwagen ist eine Spezialisierung der Klasse Fahrzeug implements: Die Klasse implementiert ggf. mehrere Schnittstellen (interface) Interface sind (abstrakte) Klassen, die ausschließlich abstrakte Methoden enthalten. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Das erste Programm public class Hello { public static void main (String [] args) System.out.println("Hello, world!"); } ist von keiner Klasse abgeleitet  Hello wird von der allgemeinsten Klasse Object abgeleitet.  Man könnte auch schreiben: public class Hello extends Object enthält keine Attribute, keine statischen Initialisierer, keine Konstruktoren, keine internen Klassen enthält nur die Methode main DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel class Punkt { ... } Die Klasse Punkt beschreibt die Eigenschaften eines allgemeinen Punktes. class farbigerPunkt extends Punkt { ... } Die Klasse farbigerPunkt beschreibt die Eigenschaften eines farbigen Punktes. Er hat zusätzlich zu den Eigenschaften eines Punktes eine Farbe. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Attribute [Modifizierer] [final] Typ [ []...[] ] name [ = Initialisierer] ; Modifizierer : public , private, protected public : Daten sind aus allen anderen Klassen heraus lesbar und schreibbar. private : Daten sind nur in der Klasse lesbar und schreibbar, in der sie definiert sind. protected : Daten sind lesbar und schreibbar in Klassen die aus der Klasse abgeleitet wurden Klassen die zum selben Package gehören keine Angabe : Daten sind nur in allen Klassen lesbar und schreibbar die zum selben Package gehören. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte final : Daten können nie verändert werden und behalten immer den Wert der Initialisierung (Konstanten). Typ beliebiger primitiver Datentyp beliebiger Referenztyp Felder Klassen [] ... [] : Kennzeichnung für n-dimensionale Felder Initialisierer beliebiger Ausdruck Feldinitialisierer : { Initialisierer,..., Initialisierer } DVG1 - 13 - Klassen und Objekte

Beispiel (Klassenerweiterung) class Punkt { int x; int y; } x und y sind die Koordinaten des Punktes. class farbigerPunkt extends Punkt { float r, g, b; // Farbanteil 0.0 ... 1.0 } Die Klasse farbigerPunkt erweitert die Klasse Punkt um die Farbe des Punktes als rot-, grün- und blau-Anteil. DVG1 - 13 - Klassen und Objekte

Zugriff zu den Attributen ObjektName.AttributName Z.B.: public class Punkt01 { public static void main (String[]args) Punkt P1 = new Punkt(); farbigerPunkt P2 = new farbigerPunkt(); P1.x = 100; P1.y = 200; P2.x = P1.x; P2.y = P1.y; P2.r = 0.0; P2.g = 0.0; P2.b = 0.0; } DVG1 - 13 - Klassen und Objekte

Beispiel (Klassenkomposition) class Punkt { int x; int y; } x und y sind die Koordinaten des Punktes. class farbigerPunkt { Punkt p; // Koordinaten des Punktes float r, g, b; // Farbanteil 0.0 ... 1.0 } Die Klasse farbigerPunkt beinhaltet zusätzlich zu den Koordinaten die Farbe des Punktes als rot-, grün- und blau-Anteil. DVG1 - 13 - Klassen und Objekte

Zugriff zu den Attributen ObjektName.AttributName Z.B.: public class Punkt01a { public static void main (String[]args) Punkt P1 = new Punkt(); farbigerPunkt P2 = new farbigerPunkt(); P1.x = 100; P1.y = 200; P2.p = new Punkt(); P2.p.x = P1.x; P2.p.y = P1.y; P2.r = 0.0; P2.g = 0.0; P2.b = 0.0; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Methoden [Modifizierer] [final] [abstract] Typ Name ( [formaleParameterliste] ) [ []...[] ] [throws Ausnahme,...,Ausnahme] Block Modifizierer : public, private, protected public : Methoden sind aus allen anderen Klassen heraus benutzbar. private : Methoden sind nur in der Klasse benutzbar in der sie enthalten sind. protected : Methoden sind benutzbar in Klassen die aus der Klasse abgeleitet wurden Klassen die zum selben Package gehören keine Angabe : Methoden sind nur in allen Klassen benutzbar die zum selben Package gehören. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte final: Methoden können nie verändert werden. abstract: Von der Methode sind nur die Schnittstellen (Typ, Name, Parameterliste, ...) definierte, aber nicht der Körper. Damit muss die gesamte Klasse als abstract definiert werden. Von der Klasse können keine Objekte erzeugt werden. Typ: Typ des Wertes den die Methode zurückgibt (return-Anweisung) beliebiger primitiver Datentyp beliebiger Referenztyp Felder Klassen void wenn die Methode keinen Wert zurückgibt DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte formaleParameterliste: Typ Name,...,Typ Name Die Klammern () müssen auch angegeben werden, wenn die Parameterliste leer ist! [] ... [] : Kennzeichnung für n-dimensionale Felder throws: Liste der Ausnahmen, die in der Methode eintreten können und nicht behandelt werde, die also nach außen gereicht werden. Block: { Anweisungsfolge } bei nicht-abstrakten Methoden ; bei abstrakten Methoden DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel public class Punkt { private int x; private int y; public void setCoords(int x0, int y0) x=x0; y=y0; } public int getX () return x; public int getY () return y; DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte public class farbigerPunkt extends Punkt { private float r, g, b; public void setColor(float r0,float g0,float b0) if ( (0.0f<=r0) & (r0<=1.0f) & ... ) { r=r0; g=g0; b=b0; } } public float getR () { return r; } public float getG () { return g; } public float getB () { return b; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte public class Punkt02 { public static void main (String[]args) Punkt P1 = new Punkt(); farbigerPunkt P2 = new farbigerPunkt(); P1.setCoords(100,200); P2.setCoords(P1.getX(), P1.getY()); P2.setColor(0.0f, 0.0f, 0.0f); } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Verbesserung class Color { private float r; private float g; private float b; public void setColor(float r0, float g0, float b0) r=r0; g=g0; b=b0; } public float getR () { return r; } public float getG () { return g; } public float getB () { return b; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte class Punkt { ... } class farbigerPunkt extends Punkt private Color color = new Color(); public void setColor(Color c) color = c; public Color getColor () { return color; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte public class Punkt03 { public static void main (String[]args) Punkt P1 = new Punkt(); P1.setCoords(100, 200); Color c = new Color(); c.setColor(0f, 0f, 0f); farbigerPunkt P2 = new farbigerPunkt(); P2.setCoords(P1.getX(), P1.getY()); P2.setColor(c); Punkt P3 = new Punkt(); P3.setCoords(P2.getX(), P2.getY()); farbigerPunkt P4 = new farbigerPunkt(); P4.setCoords(P3.getX(), P3.getY()); P4.setColor(P2.getColor()); } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Konstruktoren [Modifizierer] Name ( [formaleParameterliste] ) [throws Ausnahme,...,Ausnahme] Rumpf Modifizierer : public , private, protected Modifizierer, formaleParameterliste, throws : wie bei Methoden Name ist der Name der Klasse kein Typ, auch nicht void ! Wenn kein Konstruktor definiert wird, wird der leere Konstruktor Name(){} automatisch generiert. Konstruktoren können überladen werden. Konstruktoren werden bei der Erzeugung (Instanziierung) von Objekten aufgerufen Name obj = new Name (...); DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel class Color { private float r; private float g; private float b; Color() setColor(0f, 0f, 0f); } Color(float r, float g, float b) setColor(r, g, b); public void setColor(float r0, float g0, float b0) r=r0; g=g0; b=b0; public float getR (){ return r; } public float getG (){ return g; } public float getB (){ return b; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte class Punkt { private int x; private int y; Punkt() setCoords(0, 0); } Punkt (int x, int y) setCoords(x, y); public void setCoords(int x0, int y0) x=x0; y=y0; public int getX (){ return x; } public int getY (){ return y; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte class farbigerPunkt extends Punkt { private Color color = new Color(); farbigerPunkt() setCoords(0, 0); setColor(0f,0f,0f); } farbigerPunkt(int x, int y) setCoords(x, y); farbigerPunkt(int x, int y, float r, float g, float b) setColor(r,g,b); DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte farbigerPunkt(int x, int y, Color c) { setCoords(x, y); color=c; } public void setColor(Color c) color = c; public void setColor(float r, float g, float b) color.setColor(r, g, b); public Color getColor () { return color; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte public class Punkt04 { public static void main (String[]args) Punkt P1 = new Punkt(100, 200); Color c = new Color(0f, 0f, 0f); farbigerPunkt P2 = new farbigerPunkt(P1.getX(),P1.getY(),c); Punkt P3 = new Punkt(P2.getX(), P2.getY()); farbigerPunkt P4 = new farbigerPunkt (P3.getX(),P3.getY(),P2.getColor()); } DVG1 - 13 - Klassen und Objekte

Das Schlüsselwort this Mit Hilfe von this kann man sich auf das aktuelle Objekt beziehen. this: Referenz auf das aktuelle Objekt this(...): Konstruktor der aktuellen Klasse. Kann in einem Konstruktor als erste Anweisung aufgerufen werden. this.name: Zugriff auf überdeckte Attribute. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel class Color { private float r; private float g; private float b; Color() this(0f, 0f, 0f); } Color(float r, float g, float b) setColor(r, g, b); public void setColor(float r, float g, float b) this.r=r; this.g=g; this.b=b; public float getR () { return r; } public float getG () { return g; } public float getB () { return b; } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte class Punkt { private int x; private int y; Punkt() { this(0, 0); } Punkt (int x, int y) { setCoords(x, y); public void setCoords(int x, int y) { this.x=x; this.y=y; public int getX () { return x; } public int getY () { return y; } public Punkt mini (Punkt p) { long l = (x*x+y*y); long lp = (p.x*p.x+p.y*p.y); if (lp <= l) return p; return this; DVG1 - 13 - Klassen und Objekte

Das Schlüsselwort super Mit Hilfe des Schlüsselwortes super kann man sich auf die Klasse beziehen aus der die aktuelle Klasse abgeleitet wurde (Superklasse). super(...): Konstruktor der Superklasse. Kann in einem Konstruktor als erste Anweisung aufgerufen werden. Wichtig, da Konstruktoren nicht vererbt werden können. super.name: Zugriff auf Attribute und Methoden der Superklasse. Falls in der direkten Superklasse kein passendes Attribut bzw. Methode gefunden wird, wird in deren Superklasse gesucht u.s.w. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte class farbigerPunkt extends Punkt { private Color color = new Color(); farbigerPunkt() { this(0, 0, 0f,0f,0f); } farbigerPunkt(int x, int y) { this(x, y, 0f,0f,0f); farbigerPunkt(int x, int y, float r, float g, float b) { super(x, y); setColor(r,g,b); farbigerPunkt(int x, int y, Color c) { color=c; ... DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel class Color { ... public String toString() return "(r,g,b) = ("+r+","+g+","+b+")"; } class Punkt return "(x,y) = ("+x+","+y+")"; DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte class farbigerPunkt extends Punkt { ... farbigerPunkt(int x, int y, Color c) super(x, y); color=c; } public String toString() return super.toString()+ " ; "+color.toString(); DVG1 - 13 - Klassen und Objekte

Der Operator instanceof Objekt instanceof Klasse Wert : boolean true : Objekt ist eine Instanz von Klasse oder einer direkten oder indirekten Subklasse von Klasse. false : sonst (obj instanceof Object) ist immer true für jedes Objekt obj Wichtig: Zuerst die zuletzt abgeleitete Klasse testen! DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel public class Punkt08 { public static void main (String[]args) ... Object o = new Object(); System.out.println(className(P1)+" P1 : "+P1); System.out.println(className(P2)+" P2 : "+P2); System.out.println(className(P3)+" P3 : "+P3); System.out.println(className(P4)+" P4 : "+P4); System.out.println(className(P5)+" P5 : "+P5); System.out.println(className(o)+" o"); } public static String className(Object o) if ( o instanceof farbigerPunkt) return "farbigerPunkt"; if ( o instanceof Punkt) return "Punkt"; return "Object"; } } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Die Methode finalize [Modifizierer] void finalize () [throws Ausnahme,...,Ausnahme] Rumpf Modifizierer : public , private, protected Die Methode finalize wird aufgerufen, bevor ein Objekt durch Garbage-Collection vernichtet wird. Dient dem „Aufräumen“ z.B.: Schließen von Dateien Setzen von Zählern Freigabe von Ressourcen, die von in anderen Sprachen (z.B. C, C++) geschriebenen Programmen angefordert wurden. DVG1 - 13 - Klassen und Objekte

Statische Komponenten Alle Programme sind Klassen Klassen sind nur Definitionen Wer sagt also was abgearbeitet werden soll? Es gibt Konstanten und Methoden, die allgemein verfügbar sein sollen und nicht an Objekte gebunden sein sollten. Z.B.: Mathematische Konstanten: Pi=3.14159...; E=2.781... Physikalische Konstanten: c300000 km/s Mathematische Funktionen: sin(x), cos(x), ... Bestimmte Daten sollten eher an die Klasse als an die Objekte gebunden sein. Z.B. Zähler wie viele Punkte instanziiert wurden. Statusanzeiger DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Statische Attribute und Methoden Modifizierer static,sonst wie andere Attribute und Methoden, z.B.: private static int Anzahl = 0; public static float max(float x, float y) { return x>y?x:y; } Statische Initialisierer static { .... Beliebige Anweisungen } DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Statische Attribute und Methoden werden durch Klassenname.Attribut bzw. Klassenname.Methode oder durch Objektname.Attribut bzw. Objektname.Methode aufgerufen. Alle statischen Komponenten einer Klasse werden abgearbeitet, sobald das erste Mal auf eine statische Komponente der Klasse zugegriffen wird bzw. das erste Objekt der Klasse instanziiert wird. Nicht-statische Komponenten werden bei der Instaziierung eines Objektes der Klasse abgearbeitet. Es werden alle statischen Komponenten in der Reihenfolge ihres Auftretens abgearbeitet. DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Statische Komponenten werden nur einmal eingerichtet, unabhängig von der Anzahl der Objekte die von dieser Klasse instanziiert werden. In statischen Komponenten können nur andere statische Komponenten verwendet werden. this ist nicht verfügbar. DVG1 - 13 - Klassen und Objekte

Statische Komponente nutzen Klasse Abarbeiten der static-Anweisungen Statische Komponente nutzen Abarbeiten der static-Anweisungen Objekt instanziieren Abarbeiten der nicht-static Anweisungen Objekt instanziieren Objekt instanziieren Konstruktor abarbeiten DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Statische Komponenten Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt Nicht- statische Komponenten je Objekt DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Beispiel class Punkt { static protected int Anzahl=0; public static int getAnzahl() return Anzahl; } Punkt (int x, int y) setCoords(x, y); Anzahl++; public void finalize() Anzahl--; ... DVG1 - 13 - Klassen und Objekte

DVG1 - 13 - Klassen und Objekte Innere Klassen Strukturierungsmittel Möglichkeit Sichtbarkeiten zu beeinflussen besondere Möglichkeiten bei der Vererbung DVG1 - 13 - Klassen und Objekte

private, protected, public u.s.w. DVG1 - 13 - Klassen und Objekte