Einstieg in die Informatik mit Java

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Objektorientierte Programmierung und Klassen

Einstieg in die Informatik mit Java

Klassen mit Instanzmethoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Vererbung, Polymorphie

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Klassen als Datenstrukturen

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

Klassenvariablen, Klassenmethoden

3 Objektorientierte Konzepte in Java

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Implementieren von Klassen

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

3 Objektorientierte Konzepte in Java

Einstieg in die Informatik mit Java

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

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

Tag 7 Repetitorium Informatik (Java)

7. Übung Informatik II - Objektorientierte Programmierung

Einstieg in die Informatik mit Java

Geschachtelte Klassen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

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

Einstieg in die Informatik mit Java

Prinzipien der objektorientierten Programmierung (OOP)

Informatik II. Woche 13, Giuseppe Accaputo

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);

Einstieg in die Informatik mit Java

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

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

1 Klassen und Objekte

Philipp Güttler Objektorientierung und komplexe Datentypen

Umsetzung einer Klassenkarte in einer Programmiersprache

Java Einführung Methoden in Klassen

Einführung in die Informatik

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

5.5.8 Öffentliche und private Eigenschaften

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Geschachtelte Klassen

Programmiertechnik Objektorientierung

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

Objektorientierte Programmierung Studiengang Medieninformatik

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Tag 8 Repetitorium Informatik (Java)

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

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

Prof. W. Henrich Seite 1

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

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

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

C++ - Objektorientierte Programmierung Vererbung

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 492

C++ - Objektorientierte Programmierung Konstante und statische Elemente

4. Vererbung Die Klasse Object. Die Klasse Object

3 Klassen, Attribute, Methoden

Fragen zur OOP in Java

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

Objektorientierte Programmierung Studiengang Medieninformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

C++ Klassen weitere Funktionen

Programmieren in Java

Arten von Klassen-Beziehungen

Einstieg in die Informatik mit Java

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

Vorlesung Datenstrukturen

Modellierung und Programmierung 1

Programmieren in Java

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Javakurs 2013 Objektorientierung

2. Vererbung und Kapselung

Objektorientierte Programmierung

Gliederung der Folien

Javakurs für Anfänger

Objektorientierung (OO)

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

Algorithmen und Datenstrukturen

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

Objektorientierte Programmierung

Einführung in die Programmiersprache Java II

Transkript:

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: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

Gliederung 3 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

4 / 39 Überblick: Klassen und Objektorientierung In diesem Kapitel werden Klassen und objektorientierte Programmierung in Java beschrieben. Objektorientierte Programmierung Vorteile, Paradigmen Klassen Darstellung in Java, Klassen- und Instanzkomponenten

Gliederung 5 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

Philosophie der Objektorientierten Programmierung 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. 6 / 39

Die Philosophie 7 / 39 Beispiel Superklasse Lebewesen Subklasse Subklasse Tiere Pflanzen......

Gliederung 8 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

9 / 39 Definition von Klassen Syntax Modifizierer class Bezeichner {Elementliste Die Elementliste besteht u.a. aus Attributen (d. h. Instanzvariablen), Instanzmethoden, Konstruktoren, sowie Klassenvariablen und Klassenmethoden. Zweck der Instanzmethoden: Bearbeitung der Attribute, Klassen werden zu aktiven Objekten, Kommunikation mit anderen Klassen.

Gliederung 10 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

Datenkapselung 11 / 39 Mögliche Modifizierer private nichts protected public Element kann nur von der eigenen Klasse verwendet werden. Standard-Rechte, auch friendly oder package private genannt. Element kann in der Klasse selber sowie in allen Klassen des gleichen Pakets (i.a. = Verzeichnis) verwendet werden. (wird später behandelt) Element kann von jeder Klasse verwendet werden. Datenelemente werden aus Gründen der Datenkapselung oft mit dem Modifizierer private versehen. Der Zugriff auf die Komponente name wird dann oft realisiert mit public-methoden getname() bzw. setname(...) Der Vorteil dabei ist: hierbei können ggf. Tests und Kontrollen durchgeführt werden.

12 / 39 Zugriffsrechte bei der Klasse 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.

Beispiel: Point 13 / 39 Beispiel zur Klassendefinition und Datenkapselung Nachfolgend wird der neue Datentyp Point definiert: class Point { private double x, y ; / / geschützt vor unberecht. Z u g r i f f public double getx ( ) { return x ; public double gety ( ) { return y ; void move ( double dx, double dy ) { x += dx ; y += dy ; public s t a t i c void main ( S t r i n g [ ] args ) { Point p = new Point ( ) ; / / b i l d e t Instanz der Klasse / / Point durch A u f r u f des / / Standardkonstruktors

Gliederung 14 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

Instanzen 15 / 39 Achtung Unterscheidung zwischen Klasse und Instanz! 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).

Gliederung 16 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

17 / 39 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 ihre Komponenten erlaubt. Klassenkomponenten (Klassenmethoden, Klassenvariablen) sind mit dem Modifizierer static versehen Sie dürfen andere Klassenkomponenten verwenden einfach durch Angabe des entsprechenden Bezeichners. Klassenkomponenten dürfen auf Instanzkomponenten nur zugreifen, wenn eine konkrete Instanz genannt wird: Instanzname.Bezeichner

18 / 39 Zugriff auf Elemente: Instanzkomponenten Instanzkomponenten (Instanzmethoden, Instanzvariablen) werden ohne den Modifizierer static definiert. Sie dürfen andere Instanzkomponenten der gleichen Instanz sowie Klassenkomponenten verwenden einfach durch Angabe des entsprechenden Bezeichners. Instanzkomponenten dürfen auch auf Instanzkomponenten anderer Instanzen zugreifen, wenn diese konkrete Instanz genannt wird: Instanzname.Bezeichner

Zugriff auf Elemente: Beispiel 19 / 39 Beispiel zum Zugriff auf Instanzkomponenten class Point { double x, y ; double abstand ( Point p ) { double dx = p. x x ; / / x = x Koordinate der a k t u e l l e n Instanz / / p. x = x Koordinate der Instanz p double dy = p. y y ; / / analog return Math. s q r t ( dx dx + dy dy ) ;

20 / 39 Zugriff auf Elemente, this 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. Diese wird beim ersten Aufruf einer Instanzmethode vor dem Punkt angegeben und dann an weitere darin aufgerufene Instanzmethoden weitergereicht: Instanz.Instanzmethode () Achtung this ist nur in Instanzmethoden definiert! In Klassenmethoden ist es unzulässig, da es dort keine Referenz auf die momentan betrachtete Instanz gibt.

Zugriff auf Elemente 21 / 39 Beispiel zu this public class Point2 { private double x, y ; / / I n s t a n z v a r i a b l e n public double getx ( ) { return x ; public double gety ( ) { return y ; void move ( double x, double y ){ this. x = x ; / / Ueberschreiben der I n s t. var. this. y = y ; / / mit den gleichnamigen Var. x, y public s t a t i c void main ( S t r i n g s ){ Point2 p2 = new Point2 ( ) ; / / Instanz erzeugen p2. move (100, 200); / / Punkt p2 verschieben

Zugriff auf Elemente 22 / 39 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.Komponente Instanzname.Komponente auch möglich: Instanzname.Komponente Beispiel (erweiterte Klasse Point2) bei Klassenkomponenten bei Instanzkomponenten bei Klassenkomponenten... / / im Hauptprogramm : System. out. p r i n t l n ( x Koodinate von p + p. getx ( ) ) ; System. out. p r i n t l n ( p. x ) ; / / s y n t a k t i s c h r i c h t i g, / / aber Z u g r i f f verboten!

Gliederung 23 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

24 / 39 Konstruktoren Beim letzten Beispiel gab es die Möglichkeit, Werte für die Variablen x und y über die Methode move vorzugeben. Beispiel... / / im Hauptprogramm : Point2 p2 = new Point2 ( ) ; / / erzeuge Instanz p2. move(1000, 1000); / / belegt x, y mit 1000... Achtung Nachteil: Die Methode move muss für jedes neue Objekt aufgerufen werden! Besser ist die Verwendung eines Konstruktors.

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 dürfen nicht static sein und keine return-anweisung enthalten. Ein Konstruktor ohne Argumente wird Standardkonstruktor genannt. Werden keine Konstruktoren definiert, so erzeugt der Kompiler automatisch den Standardkonstruktor, andernfalls nicht. Ein Konstruktor kann einen anderen Konstruktor mit der Notation this(...) aufrufen. Dieser Aufruf ist allerdings nur als erste Anweisung eines Konstruktors erlaubt. 25 / 39

26 / 39 Konstruktoren: Aufruf Aufruf von Konstruktoren: Ein Konstruktor wird mit dem Zusatz new ähnlich wie eine Methode aufgerufen. Als Ergebnis liefert er eine Referenz auf die neue Instanz. Diese Referenz kann in einer Referenzvariablen vom passenden Typ gespeichert werden. new beschafft den benötigten Speicher für die Instanzvariablen, diese werden initialisiert, dann werden die angegebenen Anweisungen im Konstruktor ausgeführt. Syntax Konstruktoraufruf new Klassenname (Wert,...)

Beispiel zur Verwendung von Konstruktoren 27 / 39 Beispiel, Ergänzung zu Point public Point ( double x, double y ) { / / 1. Konstruktor this. x = x ; this. y = y ; public Point ( ) { / / 2. Konstruktor = Standardkonstruktor x = 0; / / a l t e r n a t i v ueber A u f r u f y = 0; / / des 1. Konstruktors : t h i s ( 0, 0 ) ; public Point ( double xy ) { / / 3. Konstruktor this ( xy, xy ) ; / / A u f r u f des 1. Konstruktors / / a l t e r n a t i v : x = y = xy ; / / im Hauptprogramm : public s t a t i c void main ( S t r i n g [ ] args ) { Point q = new Point ( 1, 2 ) ; / / A u f r u f des 1. Konstr. Point r = new Point ( ) ; / / A u f r u f des 2. Konstr. Point s = new Point ( 5 ) ; / / A u f r u f des 3. Konstr.

class Fehler { i n t x, y ; Fehler ( i n t x ) { / / K1 x = this. x ; / / Unsinn! Fehler ( i n t x, i n t y ) { / / K2 this. y = y ; / / Z e i l e 1 this ( x ) ; / / Z e i l e 2 r u f t K1, h i e r verboten! / / Z e i l e n 1 und 2 v e r t a u s c h t : waere okay Fehler ( i n t x, boolean diag ) { / / K3 i f ( diag ) this ( x, x ) ; / / r u f t K2, h i e r verboten! else this ( x ) ; / / r u f t K1, h i e r verboten! / / t h i s (... ) i n bedingter Anweisung etc. n i c h t moeglich public s t a t i c void main ( S t r i n g [ ] args ) { Fehler f = new Fehler ( ) ; / / Standardkonstruktor / / d i e s e r Konstruktor e x i s t i e r t n i c h t! 28 / 39 Beispiel: Fehlerhafte Konstruktoren Beispiel zu fehlerhaften Konstruktoren

Gliederung 29 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

Garbage Collection 30 / 39 In Java gibt es kein Gegenstück zum Konstruktor etwa einen Destruktor wie in manchen anderen Programmiersprachen. Der Speicher von nicht mehr referenzierten Objekten wird früher oder später automatisch freigegeben, im schlimmsten Fall erst am Programmende Garbage collection. Expliziter Aufruf der Garbage Collection System.gc(); Beispiel S t r i n g s = blub ;... s = null ; / / Ref. auf blub geht verloren, / / sofern keine weitere Referenz ex.

31 / 39 Garbage Collection Beispiel class Demo {... Demo d = new Demo ( ) ; / / Instanz der Klasse Demo... d = new Demo ( ) ; / / neue Instanz, a l t e geht v e r l o r e n Achtung Selbst beim expliziten Aufruf des Garbage collectors muss der Speicher nicht komplett freigegeben werden!

finalize 32 / 39 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 f i n a l i z e ( ) throws Throwable {...

33 / 39 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).

Gliederung 34 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

35 / 39 Variable Argumentliste Syntax Typ... Bezeichner Wird in der Methode als Feld vom angegebenen Typ interpretiert class F l e x i b e l { void ausgeben ( i n t... x ) { for ( i n t i =0; i <x. l e n g t h ; i ++) System. out. p r i n t l n ( x [ i ] ) ;... F l e x i b e l f = new F l e x i b e l ( ) ; f. ausgeben ( 1, 2, 3 ) ; / / d r e i einfache i n t / / 1 2 3

Gliederung 36 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

37 / 39 Laufanweisung für Felder Syntax for (Komponententyp Bezeichner : Feldname )... Der Bezeichner durchläuft alle Feldelelemente. double [ ] x = {1.5, 2.3, 3. 7 ; / / bekannte Variante : for ( i n t i =0; i <x. l e n gth ; i ++) System. out. p r i n t l n ( x [ i ] ) ; / / neue Variante : for ( double x i : x ) System. out. p r i n t l n ( x i ) ; In dieser Variante: kein Zugriff auf Index i möglich bzw. nötig.

Gliederung 38 / 39 1 Überblick: Klassen und Objektorientierung 2 Philosophie der Objektorientierten Programmierung 3 Definition von Klassen 4 Datenkapselung 5 Instanzen 6 Zugriff auf Elemente 7 Konstruktoren 8 Speicherverwaltung 9 Variable Argumentliste 10 Laufanweisung für Felder 11 Methode tostring()

class Punkt { double x, y ; public S t r i n g t o S t r i n g ( ) { return x +, + y ;... Punkt p = new Punkt ( ) ; System. out. p r i n t l n ( p ) ; / / r u f t t o S t r i n g ( ) auf / / Ausgabe : 0, 0 39 / 39 Methode tostring() Syntax public String tostring() { return...; // Attribute als Text tostring() wird automatisch aufgerufen, wenn eine String-Darstellung eines Objekts gebraucht wird z.b. bei der Ausgabe.