n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

Ähnliche Dokumente
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

II.4.1 Unterklassen und Vererbung - 1 -

II.1.1. Erste Schritte - 1 -

Objektorientierte Programmierung. Kapitel 19: Wrapper-Klassen

Ein erstes Java-Programm

II.4.1 Unterklassen und Vererbung - 1 -

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

II.1.1. Erste Schritte - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

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

Abschnitt 6: Klassen, Objekte und Methoden in Java

II.1.1. Erste Schritte - 1 -

Methoden und Wrapperklassen

Einfache Datentypen in JAVA

Informatik II. Woche 15, Giuseppe Accaputo

Vorkurs Informatik WiSe 16/17

II.4.1 Unterklassen und Vererbung - 1 -

Abschnitt 10: Klassen, Objekte und Methoden in Java

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1)

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

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Beispiel: die Klasse Brüche

Philipp Güttler Objektorientierung und komplexe Datentypen

Liste Programmieren Java Überblick

Martin Unold INFORMATIK. Geoinformatik und Vermessung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Objektorientierte Programmierung. Kapitel 20: Wrapper-Klassen

Objektorientierte Programmierung. Kapitel 20: Wrapper-Klassen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Vorkurs Informatik WiSe 17/18

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Einführung in die Programmierung

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

II.4.4 Exceptions - 1 -

Fragenkatalog ESOP WS 16/17

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen

4. Vererbung Die Klasse Object. Die Klasse Object

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Javakurs für Anfänger

Repetitorium Informatik (Java)

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Programmieren in Java

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

Einstieg in die Informatik mit Java

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

Einstieg in die Informatik mit Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

12 Abstrakte Klassen, finale Klassen und Interfaces

AuD-Tafelübung T-B5b

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Praxis der Programmierung

Grundelemente objektorientierter Sprachen (1)

Theorie zu Übung 8 Implementierung in Java

Informatik II Prüfungsvorbereitungskurs

Wie entwerfe ich ein Programm?

II.4.6 Collections - 1 -

Einstieg in die Informatik mit Java

Java für Computerlinguisten

Programmierung für Mathematik HS11

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

7. Objektorientierung. Informatik II für Verkehrsingenieure

II.1.1. Erste Schritte - 1 -

Informatik II. Woche 10, Giuseppe Accaputo

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Übersicht. Vorstellung des OO-Paradigmas

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

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 2. Mai 2003

Einführung in C. EDV1-04C-Einführung 1

Java-Schulung Grundlagen

Java I Vorlesung Imperatives Programmieren

Vorkurs Informatik WiSe 15/16

Computeranwendung und Programmierung (CuP)

Tag 8 Repetitorium Informatik (Java)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Algorithmen und Datenstrukturen

Organisatorisches. Ersatztermine UE: - Gruppe 1: Di, , 18:00-19:30 - Gruppe 2: Mi, , 18:00-19:30. VO am

Übung Programmierung WS 2007/08 - Blatt 6

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Transkript:

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 -

public class Rechteck { Selektoren //Objektattribute double laenge, breite; //Selektoren public void setlaenge (double l) { laenge = l; public double getlaenge () { return laenge;... int strichstaerke; Rechteck r, s;... r.laenge = s.laenge + 2; r.setlaenge (s.getlaenge() + 2); II.2.3 Datenabstraktion - 2 -

public class Rechteck { Selektoren //Objektattribute double flaeche, breite; //Selektoren public void setlaenge (double l) { flaeche = l * breite; public double getlaenge () { return flaeche / breite;... int strichstaerke; Rechteck r, s;... r.setlaenge (s.getlaenge() + 2); II.2.3 Datenabstraktion - 3 -

Zugriffsspezifikationen Einschränkung des Zugriffs auf Attribute und Methoden: n private: Komponente nur innerhalb der Klasse bekannt n kein Schlüsselwort: Komponente nur innerhalb des Pakets bekannt n protected: Komponente in Klasse und Unterklassen bekannt n public: Komponente überall bekannt II.2.3 Datenabstraktion - 4 -

public class Rechteck { Zugriffsspezifikationen //Objektattribute private double laenge,breite; private int strichstaerke; //Selektoren public void setlaenge (double l) { laenge = l; public double getlaenge () { return laenge;... Rechteck r, s;... r.laenge = s.laenge + 2; nicht mehr möglich! r.setlaenge (s.getlaenge() + 2); II.2.3 Datenabstraktion - 5 -

Geheimnisprinzip (Information Hiding) n Client / Server - Prinzip: l Anbieter publiziert Katalog der Dienstleistungen als öffentliche Schnittstelle. l Kunde interessiert nur die Schnittstelle, nicht wie die Leistung erbracht wird. l Bsp: API der Java-Bibliotheken n Abstrakter Datentyp: l Daten (Attribute) und die darauf ausführbaren Operationen (Methoden) l abstrakte Schnittstellendefinition nach außen (konkrete Realisierung und Implementierung bleibt verborgen) l Datenabstraktion und Datenkapselung n Vorteile: l besseres Verständnis l leichtere Änderbarkeit l bessere Modularisierung II.2.3 Datenabstraktion - 6 -

Schnittstellendokumentation II.2.3 Datenabstraktion - 7 -

Beispiel: Datentyp Ordner n "Ordner " als Konzept l enthält Texte l Texte können abgelegt und entnommen werden l ein Ordner kann beschriftet werden l ein Ordner kann leer oder voll sein Abstrakte Beschreibung des Konzepts Ordner n Schnittstelle: Datenkapselung als Entwurfsprinzip! void legetextab (String t) String entnehmetext () boolean istvoll () boolean istleer () void beschrifte (String t) String liesbeschriftung () II.2.3 Datenabstraktion - 8 -

Verwendung des Datentyps Ordner Ordner o = new Ordner (); o.beschrifte ("Kleine Gedichte"); if (o.istvoll()) System.out.println("Ordner ist bereits voll"); else o.legetextab ("Herr Ribeck auf Ribeck..."); if (o.istvoll()) System.out.println("Ordner ist bereits voll"); else o.legetextab ("Von drauss vom Walde komm ich her..."); System.out.println (o.liesbeschriftung ()); System.out.println ("------------------------------"); if (!o.istleer()) System.out.println (o.entnehmetext ()); if (!o.istleer()) System.out.println (o.entnehmetext ()); II.2.3 Datenabstraktion - 9 -

Implementierung des Datentyps Ordner /** Datentyp Ordner zur Speicherung von Texten * @author Juergen Giesl */ public class Ordner { private static final int maxtexte = 20; private String [] ordnerinhalt = new String [maxtexte]; private int anzahltexte = 0; private String beschriftung = ""; /** @return true, falls der Ordner voll ist, sonst false */ public boolean istvoll () { return anzahltexte = = maxtexte; Es wird ein Array verwendet /** @return true, falls der Ordner leer ist, sonst false */ public boolean istleer () { return anzahltexte = = 0; II.2.3 Datenabstraktion - 10 -

Implementierung des Datentyps Ordner /** @param t Text, der vorne im Ordner abgelegt wird */ public void legetextab (String t) { ordnerinhalt [anzahltexte] = t; anzahltexte ++; /** Liest zuletzt eingegebenen Text und loescht ihn. * @return letzten abgelegten Text */ public String entnehmetext () { String t = ordnerinhalt [anzahltexte-1]; ordnerinhalt [anzahltexte-1] = ""; anzahltexte --; return t; /** @param t Beschriftung des Ordners */ public void beschrifte (String t) { beschriftung = t; /** @return Beschriftung des Ordners */ public String liesbeschriftung () { return beschriftung; II.2.3 Datenabstraktion - 11 -

Schnittstellendokumentation II.2.3 Datenabstraktion - 12 -

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 13 -

public class Rechteck { Konstruktoren //Objektattribute double laenge, breite; int strichstaerke; //Konstruktor 1 public Rechteck () { laenge = breite = 1.0; strichstaerke = 1; //Konstruktor 2 public Rechteck (double l, double b) { laenge = l; breite = b; strichstaerke = 1;... Rechteck r = new Rechteck (); Rechteck s = new Rechteck (2.1,1.5); II.2.3 Datenabstraktion - 14 -

Konstruktordeklaration Variablendeklaration Konstruktordeklaration Klassendeklaration class Name { Methodendeklaration Schlüsselwort Konstruktordeklaration, Name ( Typ Name ) Block Schlüsselwort II.2.3 Datenabstraktion - 15 -

Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck ) Infix-Operator Methodenaufruf new Name [ Ganzzahl ] Ausdruck? Ausdruck : Ausdruck II.2.3 Datenabstraktion - 16 -

Überladene Methoden n Verschiedene Methoden können den gleichen Namen haben, falls ihre Parameterlisten verschieden sind n Parameterlisten gelten als verschieden, falls: l unterschiedliche Anzahl von Parametern oder l unterschiedliche Datentypen bei den Parametern n Unterschiedliche Parameterbezeichner oder unterschiedliche Resultattypen reichen nicht! l Rechteck ( ) l Rechteck (double l, double b) l Rechteck (double kantenlaenge) l Rechteck (int seitenlaenge) l Rechteck (int... seiten) n Es wird die speziellste passende Methode ausgeführt. II.2.3 Datenabstraktion - 17 -

Überladene Konstruktoren public Rechteck () { laenge = breite = 1.0; strichstaerke = 1; public Rechteck (double l, double b) { laenge = l; breite = b; strichstaerke = 1; public Rechteck (double kantenlaenge) { laenge = breite = kantenlaenge; strichstaerke = 1; public Rechteck (int s) { laenge = breite = 1.0; strichstaerke = s; public Rechteck (int... a) { laenge = a[0]; breite = a[1]; strichstaerke = 5; Rechteck r = new Rechteck (); Rechteck s = new Rechteck (1,2); Rechteck t = new Rechteck (3.0); Rechteck u = new Rechteck (3); Rechteck v = new Rechteck (1,2,3); vararg Methoden möglichst nicht überladen! II.2.3 Datenabstraktion - 18 -

Selbstverweis; Schlüsselwort this public Rechteck () { laenge = breite = 1.0; strichstaerke = 1; public Rechteck (double laenge, double breite) { this.laenge = laenge; this.breite = breite; strichstaerke = 1; public Rechteck (double laenge) { this.laenge = breite = laenge; strichstaerke = 1; public Rechteck (int strichstaerke) { laenge = breite = 1.0; this.strichstaerke = strichstaerke; II.2.3 Datenabstraktion - 19 -

Kopier - Konstruktor public Rechteck (Rechteck original) { if (original!= null) { laenge = original.laenge; breite = original.breite; strichstaerke = original.strichstaerke; else { // kein Original vorhanden laenge = breite = 1.0; strichstaerke = 1; II.2.3 Datenabstraktion - 20 -

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 21 -

Hüllklassen n Primitive Typen (boolean, char, int, double,...) passen nicht ins Konzept von Klassen und Objekten. n Nachteil: l unsystematisch l keine Referenzparameter für Objekte primitiver Typen l manche Methoden verlangen Klassentypen als Parameter n Daher existieren für alle primitive Datentypen sogenannte Hüllklassen: l Boolean l Character l Byte, Short l Integer, Long l Float l Double II.2.3 Datenabstraktion - 22 -

Attribute und Methoden von Integer n Objekt-Attribut (nicht public): der eingehüllte int-wert n Klassen-Attribute (statisch): l MIN_VALUE : kleinster Wert vom Typ int (-2.147.483.648) l MAX_VALUE : größter Wert vom Typ int (2.147.483.647) n Konstruktoren: l Integer (int value), l Integer (String s) n Statische Methoden: l static int parseint (String s) l static String tostring (int i) n Methoden: l String tostring () l boolean equals (Integer i) l byte bytevalue(), int intvalue (), float floatvalue (),... II.2.3 Datenabstraktion - 23 -

Beispiel zur Verwendung von Integer Integer x = new Integer (123); Integer y = new Integer ("123"); int z = Integer.parseInt("123"); String s1 = Integer.toString (123); String s2 = x.tostring (); System.out.println("x: " + x); System.out.println("y: " + y); System.out.println("z: " + z); System.out.println("s1: " + s1); System.out.println("s2: " + s2); System.out.println ("x = = y: " + (x = = y)); System.out.println ("x.equals(y) : " + x.equals(y)); System.out.println ("x.intvalue () = = z: " + (x.intvalue () = = z)); II.2.3 Datenabstraktion - 24 -

Autoboxing und Unboxing Integer x = 123; Integer x = new Integer(123); int i = x; int i = x.intvalue(); Integer y = x + 2; Integer y = new Integer(x.intValue() + 2); Double z = Math.sqrt(y); Double z = new Double(Math.sqrt(y.intValue())); Double d = 4; Double d = new Integer(4); Typfehler! Double d = new Double(4); Double e = 4.0; Double e = new Double(4.0); II.2.3 Datenabstraktion - 25 -

Beispiel zur Verwendung von String String s = "Wort"; String t = "Wort"; String u = new String("Wort"); String v = new String("Wort"); System.out.println ("s = = t: " + (s = = t)); System.out.println ("s = = u: " + (s = = u)); System.out.println ("s.equals(u): " + s.equals(u)); System.out.println ("u = = v: " + (u = = v)); System.out.println ("u.equals(v): " + u.equals(v)); System.out.println ("Zeichen in " + u + " an Index 2: " + u.charat(2)); System.out.println ("Laenge von " + u + ": " + u.length()); System.out.println ("Zeichen in " + u + " an Index 2: " + u.tochararray() [2]); II.2.3 Datenabstraktion - 27 -