Objektorientierte Programmierung und Klassen

Größe: px
Ab Seite anzeigen:

Download "Objektorientierte Programmierung und Klassen"

Transkript

1 Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

2 Übersicht 1 Die Philosophie 2 Definition von Klassen 3 Datenkapselung 4 Instanzen 5 Zugriff auf Elemente 6 Konstruktoren 7 Speicherverwaltung Garbage Collection finalize Lebenszyklen von Klassen und Instanzen G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

3 Die Philosophie Paradigmen: (1) Generalisierung: Gemeinsame Strukturen von Objekten werden in Superklassen zusammengefasst. (2) Vererbung: Eigenschaften einer Superklasse werden automatisch an eine Subklasse vererbt. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

4 Die Philosophie Paradigmen: (1) Generalisierung: Gemeinsame Strukturen von Objekten werden in Superklassen zusammengefasst. (2) Vererbung: Eigenschaften einer Superklasse werden automatisch an eine Subklasse vererbt. (3) Daten-Kapselung: Variablen und Methoden werden in einem Objekt zusammengefasst. Die interne Struktur wird vor dem Benutzer versteckt, der Zugriff erfolgt nur über genau definierte Schnittstellen. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

5 Die Philosophie Paradigmen: (1) Generalisierung: Gemeinsame Strukturen von Objekten werden in Superklassen zusammengefasst. (2) Vererbung: Eigenschaften einer Superklasse werden automatisch an eine Subklasse vererbt. (3) Daten-Kapselung: Variablen und Methoden werden in einem Objekt zusammengefasst. Die interne Struktur wird vor dem Benutzer versteckt, der Zugriff erfolgt nur über genau definierte Schnittstellen. (4) Polymorphie: Eine Methode kann in verschiedenen Subklassen individuell angepasst werden. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

6 Die Philosophie Paradigmen: (1) Generalisierung: Gemeinsame Strukturen von Objekten werden in Superklassen zusammengefasst. (2) Vererbung: Eigenschaften einer Superklasse werden automatisch an eine Subklasse vererbt. (3) Daten-Kapselung: Variablen und Methoden werden in einem Objekt zusammengefasst. Die interne Struktur wird vor dem Benutzer versteckt, der Zugriff erfolgt nur über genau definierte Schnittstellen. (4) Polymorphie: Eine Methode kann in verschiedenen Subklassen individuell angepasst werden. Vorteile Es entsteht weniger Quelltext. Es bestehen weniger Fehlermöglichkeiten. Das Programm erhält eine bessere Strukturierung. Der Quelltext ist besser wartbar. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

7 Die Philosophie Paradigmen: (1) Generalisierung: Gemeinsame Strukturen von Objekten werden in Superklassen zusammengefasst. (2) Vererbung: Eigenschaften einer Superklasse werden automatisch an eine Subklasse vererbt. (3) Daten-Kapselung: Variablen und Methoden werden in einem Objekt zusammengefasst. Die interne Struktur wird vor dem Benutzer versteckt, der Zugriff erfolgt nur über genau definierte Schnittstellen. (4) Polymorphie: Eine Methode kann in verschiedenen Subklassen individuell angepasst werden. Vorteile Es entsteht weniger Quelltext. Es bestehen weniger Fehlermöglichkeiten. Das Programm erhält eine bessere Strukturierung. Der Quelltext ist besser wartbar. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

8 Die Philosophie Beispiel Superklasse Lebewesen Subklasse Subklasse Tiere Pflanzen G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

9 Definition von Klassen Syntax Modifizierer class Bezeichner {Elementliste} Die Elementliste besteht aus Datenelementen (d. h. Variablen) und Methoden (d.h. Funktionen), die diese Daten berarbeiten (vgl. in Pascal: record und in C/C++: struct, class). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

10 Definition von Klassen Syntax Modifizierer class Bezeichner {Elementliste} Die Elementliste besteht aus Datenelementen (d. h. Variablen) und Methoden (d.h. Funktionen), die diese Daten berarbeiten (vgl. in Pascal: record und in C/C++: struct, class). Zur Datenkapselung kann die Sichtbarkeit der Elemente mit Hilfe von vorangestellten Modifizierern geregelt werden (siehe nächster Abschnitt). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

11 Definition von Klassen Syntax Modifizierer class Bezeichner {Elementliste} Die Elementliste besteht aus Datenelementen (d. h. Variablen) und Methoden (d.h. Funktionen), die diese Daten berarbeiten (vgl. in Pascal: record und in C/C++: struct, class). Zur Datenkapselung kann die Sichtbarkeit der Elemente mit Hilfe von vorangestellten Modifizierern geregelt werden (siehe nächster Abschnitt). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

12 Datenkapselung Mögliche Modifizierer nichts Standard-Rechte, auch friendly genannt. Element kann u. a. in der Klasse selber sowie in allen Klassen des gleichen Pakets verwendet werden. public Element kann von jeder Klasse verwendet werden. private Element kann nur von der eigenen Klasse verwendet werden. protected später... Datenelemente werden aus Gründen der Datenkapselung meistens mit dem Modifizierer private versehen. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

13 Datenkapselung Mögliche Modifizierer nichts Standard-Rechte, auch friendly genannt. Element kann u. a. in der Klasse selber sowie in allen Klassen des gleichen Pakets verwendet werden. public Element kann von jeder Klasse verwendet werden. private Element kann nur von der eigenen Klasse verwendet werden. protected später... Datenelemente werden aus Gründen der Datenkapselung meistens mit dem Modifizierer private versehen. Die Klasse selber darf nur Standardrechte oder public Rechte besitzen. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

14 Datenkapselung Mögliche Modifizierer nichts Standard-Rechte, auch friendly genannt. Element kann u. a. in der Klasse selber sowie in allen Klassen des gleichen Pakets verwendet werden. public Element kann von jeder Klasse verwendet werden. private Element kann nur von der eigenen Klasse verwendet werden. protected später... Datenelemente werden aus Gründen der Datenkapselung meistens mit dem Modifizierer private versehen. Die Klasse selber darf nur Standardrechte oder public Rechte besitzen. In einer Datei dürfen mehrere Klassen definiert werden, jedoch darf nur eine davon public Rechte besitzen. Diese Klasse muss den gleichen Namen wie die Datei tragen. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

15 Datenkapselung Mögliche Modifizierer nichts Standard-Rechte, auch friendly genannt. Element kann u. a. in der Klasse selber sowie in allen Klassen des gleichen Pakets verwendet werden. public Element kann von jeder Klasse verwendet werden. private Element kann nur von der eigenen Klasse verwendet werden. protected später... Datenelemente werden aus Gründen der Datenkapselung meistens mit dem Modifizierer private versehen. Die Klasse selber darf nur Standardrechte oder public Rechte besitzen. In einer Datei dürfen mehrere Klassen definiert werden, jedoch darf nur eine davon public Rechte besitzen. Diese Klasse muss den gleichen Namen wie die Datei tragen. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

16 Beispiel zur Klassendefinition und Datenkapselung Nachfolgend wird der neue Datentyp Point definiert. class Point { private double x,y; // geschützt vor unberecht. Zugriff public double getx () { return x; } public double gety () { return y; } void move (double dx, double dy) { x += dx; y += dy; } public static void main (String[] args) { Point p = new Point (); // bildet Instanz der Klasse } // Point durch Aufruf des } // Standardkonstruktors // --> siehe Kapitel 11.4 Achtung Unterscheidung zwischen Klasse und Instanz! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

17 Beispiel zur Klassendefinition und Datenkapselung Nachfolgend wird der neue Datentyp Point definiert. class Point { private double x,y; // geschützt vor unberecht. Zugriff public double getx () { return x; } public double gety () { return y; } void move (double dx, double dy) { x += dx; y += dy; } public static void main (String[] args) { Point p = new Point (); // bildet Instanz der Klasse } // Point durch Aufruf des } // Standardkonstruktors // --> siehe Kapitel 11.4 Achtung Unterscheidung zwischen Klasse und Instanz! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

18 Instanzen Klasse Instanz Datentyp, es wird noch kein Speicher für Komponenten reserviert. Variable des Datentyps, auch Objekt genannt es wird für Komponenten Speicher reserviert ( Instanzvariablen, Instanz Methoden). Von einer Klasse können viele Instanzen (bzw. Objekte) gebildet werden. Die Instanzen sind dann zwar vom selben Datentyp, belegen aber nicht die selben Speicherbereiche. Dadurch sind sie voneinander unabhängig handhabbar. Eine Ausnahme bilden Komponenten mit dem Modifizierer static. Diese werden für die gesamte Klasse nur einmal angelegt, unabhängig davon, ob keine, eine oder mehrere Instanz(en) der Klasse gebildet wurden ( Klassenvariablen, Klassenmethoden). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

19 Instanzen Klasse Instanz Datentyp, es wird noch kein Speicher für Komponenten reserviert. Variable des Datentyps, auch Objekt genannt es wird für Komponenten Speicher reserviert ( Instanzvariablen, Instanz Methoden). Von einer Klasse können viele Instanzen (bzw. Objekte) gebildet werden. Die Instanzen sind dann zwar vom selben Datentyp, belegen aber nicht die selben Speicherbereiche. Dadurch sind sie voneinander unabhängig handhabbar. Eine Ausnahme bilden Komponenten mit dem Modifizierer static. Diese werden für die gesamte Klasse nur einmal angelegt, unabhängig davon, ob keine, eine oder mehrere Instanz(en) der Klasse gebildet wurden ( Klassenvariablen, Klassenmethoden). Achtung Im Gegensatz zu C++ ist keine separate Deklaration und Definition der Methoden möglich! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

20 Instanzen Klasse Instanz Datentyp, es wird noch kein Speicher für Komponenten reserviert. Variable des Datentyps, auch Objekt genannt es wird für Komponenten Speicher reserviert ( Instanzvariablen, Instanz Methoden). Von einer Klasse können viele Instanzen (bzw. Objekte) gebildet werden. Die Instanzen sind dann zwar vom selben Datentyp, belegen aber nicht die selben Speicherbereiche. Dadurch sind sie voneinander unabhängig handhabbar. Eine Ausnahme bilden Komponenten mit dem Modifizierer static. Diese werden für die gesamte Klasse nur einmal angelegt, unabhängig davon, ob keine, eine oder mehrere Instanz(en) der Klasse gebildet wurden ( Klassenvariablen, Klassenmethoden). Achtung Im Gegensatz zu C++ ist keine separate Deklaration und Definition der Methoden möglich! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

21 Zugriff auf Elemente Erinnerung: Syntax Modifizierer class Bezeichner {Elementliste} Elementvariablen und Elementmethoden werden auch unter dem Begriff Komponenten zusammengefasst. Innerhalb der Klasse ist der Zugriff auf alle Komponenten erlaubt, und zwar einfach durch Angabe des entsprechenden Bezeichners. Wird der Bezeichner durch eine gleichnamige lokale Variable verdeckt, kann mit this.bezeichner auf die Komponenten der gerade aktiven Instanz zugegriffen werden. this ist dabei eine Referenz auf die momentan betrachtete Instanz. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

22 Zugriff auf Elemente Erinnerung: Syntax Modifizierer class Bezeichner {Elementliste} Elementvariablen und Elementmethoden werden auch unter dem Begriff Komponenten zusammengefasst. Innerhalb der Klasse ist der Zugriff auf alle Komponenten erlaubt, und zwar einfach durch Angabe des entsprechenden Bezeichners. Wird der Bezeichner durch eine gleichnamige lokale Variable verdeckt, kann mit this.bezeichner auf die Komponenten der gerade aktiven Instanz zugegriffen werden. this ist dabei eine Referenz auf die momentan betrachtete Instanz. Achtung this ist nur für Instanz-, nicht für statische Variablen und Methoden zulässig, da es von ihnen nicht mehrere zu unterscheidende Werte geben kann. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

23 Zugriff auf Elemente Erinnerung: Syntax Modifizierer class Bezeichner {Elementliste} Elementvariablen und Elementmethoden werden auch unter dem Begriff Komponenten zusammengefasst. Innerhalb der Klasse ist der Zugriff auf alle Komponenten erlaubt, und zwar einfach durch Angabe des entsprechenden Bezeichners. Wird der Bezeichner durch eine gleichnamige lokale Variable verdeckt, kann mit this.bezeichner auf die Komponenten der gerade aktiven Instanz zugegriffen werden. this ist dabei eine Referenz auf die momentan betrachtete Instanz. Achtung this ist nur für Instanz-, nicht für statische Variablen und Methoden zulässig, da es von ihnen nicht mehrere zu unterscheidende Werte geben kann. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

24 Zugriff auf Elemente Beispiel zu this public class Point2{ private double x,y; // Instanzvariablen public double getx () { return x; } public double gety () { return y; } void move(double x, double y){ this.x = x; // Ueberschreiben der Inst.var. this.y = y; // mit den gleichnamigen Var. x,y } } public static void main (String s){ Point2 p2 = new Point2(); // Instanz erzeugen } G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

25 Zugriff auf Elemente Außerhalb der Klasse, d.h. in einer anderen Klasse, ist der Zugriff nur auf sichtbare Komponenten erlaubt. Diese sind folglich mit öffentlichen Zugriffsrechten bzw. für den Fall, dass sich die Klasse im gleichen Verzeichnis befindet, mit Standardrechten ausgestattet. Syntax Klassenname.Komponenten Instanzname.Komponenten bei Klassenkomponenten bei Instanzkomponenten G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

26 Zugriff auf Elemente Außerhalb der Klasse, d.h. in einer anderen Klasse, ist der Zugriff nur auf sichtbare Komponenten erlaubt. Diese sind folglich mit öffentlichen Zugriffsrechten bzw. für den Fall, dass sich die Klasse im gleichen Verzeichnis befindet, mit Standardrechten ausgestattet. Syntax Klassenname.Komponenten Instanzname.Komponenten bei Klassenkomponenten bei Instanzkomponenten Beispiel (erweiterte Klasse Point2)... // im Hauptprogramm: System.out.println ("x-koodinate von p" + p.getx()); System.out.println (p.x); // syntaktisch richtig,... // aber Zugriff verboten! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

27 Zugriff auf Elemente Außerhalb der Klasse, d.h. in einer anderen Klasse, ist der Zugriff nur auf sichtbare Komponenten erlaubt. Diese sind folglich mit öffentlichen Zugriffsrechten bzw. für den Fall, dass sich die Klasse im gleichen Verzeichnis befindet, mit Standardrechten ausgestattet. Syntax Klassenname.Komponenten Instanzname.Komponenten bei Klassenkomponenten bei Instanzkomponenten Beispiel (erweiterte Klasse Point2)... // im Hauptprogramm: System.out.println ("x-koodinate von p" + p.getx()); System.out.println (p.x); // syntaktisch richtig,... // aber Zugriff verboten! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

28 Konstruktoren Beim letzten Beispiel gab es die Möglichkeit, Werte für die Variablen x und y über die Methode move vorzugeben. Beispiel (erweiterte Klasse Point2)... // im Hauptprogramm: Point2 p2 = new Point2(); // erzeuge Instanz p2.move(1000, 1000); // belegt x,y mit G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

29 Konstruktoren Beim letzten Beispiel gab es die Möglichkeit, Werte für die Variablen x und y über die Methode move vorzugeben. Beispiel (erweiterte Klasse Point2)... // im Hauptprogramm: Point2 p2 = new Point2(); // erzeuge Instanz p2.move(1000, 1000); // belegt x,y mit Nachteil Die Methode move muss für jedes neue Objekt aufgerufen werden! Besser ist die Verwendung eines Konstruktors. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

30 Konstruktoren Beim letzten Beispiel gab es die Möglichkeit, Werte für die Variablen x und y über die Methode move vorzugeben. Beispiel (erweiterte Klasse Point2)... // im Hauptprogramm: Point2 p2 = new Point2(); // erzeuge Instanz p2.move(1000, 1000); // belegt x,y mit Nachteil Die Methode move muss für jedes neue Objekt aufgerufen werden! Besser ist die Verwendung eines Konstruktors. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

31 Konstruktoren Konstruktoren erlauben es sehr komfortabel Instanzvariablen schon bei der Erzeugung einer Instanz/eines Objektes zu initialisieren. Ein Konstruktor ist eine spezielle Methode ohne Ergebnistyp (auch nicht void), die den gleichen Namen wie die Klasse trägt. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

32 Konstruktoren Konstruktoren erlauben es sehr komfortabel Instanzvariablen schon bei der Erzeugung einer Instanz/eines Objektes zu initialisieren. Ein Konstruktor ist eine spezielle Methode ohne Ergebnistyp (auch nicht void), die den gleichen Namen wie die Klasse trägt. Konstruktoren können überladen werden, d.h. es dürfen mehrere Konstuktoren existieren. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

33 Konstruktoren Konstruktoren erlauben es sehr komfortabel Instanzvariablen schon bei der Erzeugung einer Instanz/eines Objektes zu initialisieren. Ein Konstruktor ist eine spezielle Methode ohne Ergebnistyp (auch nicht void), die den gleichen Namen wie die Klasse trägt. Konstruktoren können überladen werden, d.h. es dürfen mehrere Konstuktoren existieren. Konstruktoren ohne Argumente werden Standardkonstruktoren genannt. Werden keine Konstruktoren definiert, so erzeugt der Kompiler automatisch den Standardkonstruktor, andernfalls nicht. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

34 Konstruktoren Konstruktoren erlauben es sehr komfortabel Instanzvariablen schon bei der Erzeugung einer Instanz/eines Objektes zu initialisieren. Ein Konstruktor ist eine spezielle Methode ohne Ergebnistyp (auch nicht void), die den gleichen Namen wie die Klasse trägt. Konstruktoren können überladen werden, d.h. es dürfen mehrere Konstuktoren existieren. Konstruktoren ohne Argumente werden Standardkonstruktoren genannt. Werden keine Konstruktoren definiert, so erzeugt der Kompiler automatisch den Standardkonstruktor, andernfalls nicht. Konstruktoren können gegenseitig mittels this aufgerufen werden. Dieser Aufruf ist allerdings in jedem Konstruktor nur als erste Anweisung erlaubt. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

35 Konstruktoren Konstruktoren erlauben es sehr komfortabel Instanzvariablen schon bei der Erzeugung einer Instanz/eines Objektes zu initialisieren. Ein Konstruktor ist eine spezielle Methode ohne Ergebnistyp (auch nicht void), die den gleichen Namen wie die Klasse trägt. Konstruktoren können überladen werden, d.h. es dürfen mehrere Konstuktoren existieren. Konstruktoren ohne Argumente werden Standardkonstruktoren genannt. Werden keine Konstruktoren definiert, so erzeugt der Kompiler automatisch den Standardkonstruktor, andernfalls nicht. Konstruktoren können gegenseitig mittels this aufgerufen werden. Dieser Aufruf ist allerdings in jedem Konstruktor nur als erste Anweisung erlaubt. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

36 Konstruktoren Beispiel public Point (double x, double y) { // 1.Konstruktor this.x = x; this.y = y; } public Point () { // 2.Konstruktor = Standardkonstruktor x = 0; // alternativ ueber Aufruf y = 0; // des 1.Konstruktors: this (0,0); } public static void main (String[] args) { // im Hauptprogramm Point q = new Point (1,2); // Aufruf des 1.Konstr. Point r = new Point (); // Aufruf des 2.Konstr. } Mittels new wird der benötigte Speicher beschafft, und die angegebenen Anweisungen im Konstruktor ausgeführt (evtl. noch weitere Operationen). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

37 Konstruktoren Beispiel public Point (double x, double y) { // 1.Konstruktor this.x = x; this.y = y; } public Point () { // 2.Konstruktor = Standardkonstruktor x = 0; // alternativ ueber Aufruf y = 0; // des 1.Konstruktors: this (0,0); } public static void main (String[] args) { // im Hauptprogramm Point q = new Point (1,2); // Aufruf des 1.Konstr. Point r = new Point (); // Aufruf des 2.Konstr. } Mittels new wird der benötigte Speicher beschafft, und die angegebenen Anweisungen im Konstruktor ausgeführt (evtl. noch weitere Operationen). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

38 Garbage Collection Im Gegensatz zu Pascal (new, delete) und C++ (new, delete, Konstruktor, Destruktor) gibt es in Java im Wesentlichen kein Gegenstück zum Konstruktor. Der Speicher von nicht mehr referenzierten Objekten wird früher oder später automatisch freigegeben, im schlimmsten Fall erst am Programmende Garbage collection. Syntax System.gc(); G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

39 Garbage Collection Im Gegensatz zu Pascal (new, delete) und C++ (new, delete, Konstruktor, Destruktor) gibt es in Java im Wesentlichen kein Gegenstück zum Konstruktor. Der Speicher von nicht mehr referenzierten Objekten wird früher oder später automatisch freigegeben, im schlimmsten Fall erst am Programmende Garbage collection. Syntax System.gc(); Beispiel 1 String s = "blub";... s = null; // Ref. auf "blub" geht verloren, // sofern keine weitere Referenz ex. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

40 Garbage Collection Im Gegensatz zu Pascal (new, delete) und C++ (new, delete, Konstruktor, Destruktor) gibt es in Java im Wesentlichen kein Gegenstück zum Konstruktor. Der Speicher von nicht mehr referenzierten Objekten wird früher oder später automatisch freigegeben, im schlimmsten Fall erst am Programmende Garbage collection. Syntax System.gc(); Beispiel 1 String s = "blub";... s = null; // Ref. auf "blub" geht verloren, // sofern keine weitere Referenz ex. G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

41 Garbage Collection Beispiel 2 class Demo { }... Demo d = new Demo(); //Instanz der Klasse Demo... d = new Demo(); //neue Instanz, alte geht verloren Achtung Selbst beim expliziten Aufruf des Garbage collectors muss der Speicher nicht komplett freigegeben werden! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

42 Garbage Collection Beispiel 2 class Demo { }... Demo d = new Demo(); //Instanz der Klasse Demo... d = new Demo(); //neue Instanz, alte geht verloren Achtung Selbst beim expliziten Aufruf des Garbage collectors muss der Speicher nicht komplett freigegeben werden! G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

43 finalize Sind weitere Aufräumarbeiten wie das Zählen lebender Objekte, Abbau der Internetverbindung usw. nötig, dann kann man eine Methode finalize() definieren. Diese wird aufgerufen, bevor ein Objekt vom Garbage collector freigegeben wurde. Syntax protected void finalize () throws Throwable {... } G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

44 finalize Sind weitere Aufräumarbeiten wie das Zählen lebender Objekte, Abbau der Internetverbindung usw. nötig, dann kann man eine Methode finalize() definieren. Diese wird aufgerufen, bevor ein Objekt vom Garbage collector freigegeben wurde. Syntax protected void finalize () throws Throwable {... } G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

45 Lebenszyklen von Klassen und Instanzen (1) Ein Klasse wird geladen (z. B. von der Festplatte in den Hauptspeicher), sobald sie benötigt wird und wieder entfernt, sobald sie nicht mehr benötigt wird. (2) Instanzen werden i. allg. mit new erzeugt. Sobald keine Referenz mehr auf die Instanz existiert, kann sie vom Java System über die automatische Garbage collection wieder entfernt werden. Dies kann allerdings später oder auch gar nicht geschehen (siehe oben). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

46 Lebenszyklen von Klassen und Instanzen (1) Ein Klasse wird geladen (z. B. von der Festplatte in den Hauptspeicher), sobald sie benötigt wird und wieder entfernt, sobald sie nicht mehr benötigt wird. (2) Instanzen werden i. allg. mit new erzeugt. Sobald keine Referenz mehr auf die Instanz existiert, kann sie vom Java System über die automatische Garbage collection wieder entfernt werden. Dies kann allerdings später oder auch gar nicht geschehen (siehe oben). G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen / 18

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Lokale Variablen 2 Lokale Variablen in Blocks 3 Lokale Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 17 Einstieg in die Informatik mit Java Methoden und Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2

Mehr

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch Klassen (Java) vs. Records (Pascal) 14. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung Pascal RECORDs in Pascal sind reine

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

3 Klassen, Attribute, Methoden

3 Klassen, Attribute, Methoden 3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Programmiertechnik Objektorientierung

Programmiertechnik Objektorientierung Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Klassen. Kapitel Klassendeklaration

Klassen. Kapitel Klassendeklaration Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 5. Objekte und Klassen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 5. Objekte und Klassen 1 Kapitel 5 Objekte und Klassen Objekte und Klassen 1 Ziele Grundbegriffe objektorientierter Programmierung kennenlernen Klassen in Java deklarieren können Das Speichermodell für Objekte verstehen Typen,

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

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

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

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

Zeichenketten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java. 16. Zeichenketten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender (IANM UNI Karlsruhe) Zeichenketten 16. Mai 2007 1

Mehr

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte 5 Vererbung Subklassen, Superklassen, Pakete Zugriffsrechte Wiederverwendung von Code Konventionelle Methode: Wähle einen Quelltext, der ein ähnliches Problem bearbeitet und passe diesen Text auf das neue

Mehr

Universität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08

Universität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08 Betreutes Arbeiten Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) 375 Wiederholung Klasse: class Klassenname { konzeptuelle Einheit der Modellierungsdomäne kapselt Daten und Operationen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Arten von Klassen-Beziehungen

Arten von Klassen-Beziehungen Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Kapitel 6. Kontrollstrukturen im Kontext von Klassen und Objekten

Kapitel 6. Kontrollstrukturen im Kontext von Klassen und Objekten Kapitel 6 Kontrollstrukturen im Kontext von Klassen und Objekten Kontrollstrukturen im Kontext von Klassen und Objekten 1 Ziele Anweisungen auf den Kontext von Klassen und Objekten erweitern Insbesondere

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern

Mehr

2. Vererbung und Kapselung

2. Vererbung und Kapselung 2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung

Mehr

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Klassen in C++ Beispiele, mit Aufzeigen der Trennung von Spezifikation und Implementierung

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 12 Ekkart Kindler III. Objektorientierte Programmierung Überblick Klassen und Methoden Vererbung Zugriffsrechte Definition einer Methode

Mehr

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Kapitel 6. Kontrollstrukturen und Methoden im Kontext von Klassendeklarationen

Kapitel 6. Kontrollstrukturen und Methoden im Kontext von Klassendeklarationen Kapitel 6 Kontrollstrukturen und Methoden im Kontext von Klassendeklarationen Objekte und Klassen 1 Ziele Anweisungen auf den Kontext von Klassendeklarationen erweitern Statische Attribute und Methoden

Mehr

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor: 4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Aufrufe von Objektmethoden

Aufrufe von Objektmethoden Aufrufe von Objektmethoden SWE-35 Objektmethoden werden für ein bestimmtes Objekt aufgerufen; sie benutzen dessen Objektvariablen: double r = big.getradius (); Methodenaufrufe können auch die Werte von

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ziele Sie wissen, was Vererbung

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel Alina Stürck WS2016/17 11. Oktober 2016 Objektorientierte Programmierung OOP 1 Was ist das? 2 Wie geht das? 3 Warum

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 9 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 7 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 9 Aufgabe 1:

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 9.5.07 Übersicht 1 Was sind? 2 Vereinbarung von n 3 Erzeugen von n 4 Zugriff auf Feldkomponenten 5 Mehrdimensionale 6 als Objekte, Referenzen Kopieren

Mehr