Klassen und Konstruktoren in Java

Ähnliche Dokumente
Arten von Klassen-Beziehungen

Objektorientierte Programmierung

OOP. Tagesprogramm. Beziehungen zwischen Typen Vererbung Sichtbarkeit

Untertypen, Vererbung, Sichtbarkeit A01 OOP. Untertypen, Vererbung, Sichtbarkeit

Faustregeln zu Zusicherungen

Paket umfaßt alle Dateien bzw. Klassen im selben Ordner. Kürzer durch Import-Deklaration (am Dateianfang)

Ersetzbarkeit und Verhalten

Client-Server-Beziehungen

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmierung Nachklausurtutorium

Arten von Klassen-Beziehungen

6. Globalübung (zu Übungsblatt 8)

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

Einstieg in die Informatik mit Java

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Einführung in C# Teil 3. Matthias Nübling

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Objektorientierte Programmierung Studiengang Medieninformatik

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Programmieren in Java

Vorkurs Informatik WiSe 15/16

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Programmieren in Java

II.4.1 Unterklassen und Vererbung - 1 -

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

II.4.1 Unterklassen und Vererbung - 1 -

Programmieren in Java

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Vererbung, Polymorphie

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

3 Objektorientierte Konzepte in Java

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

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl

Algorithmen und Datenstrukturen 07

1. In welchen Formen (mindestens zwei) kann man durch das Ersetzbarkeitsprinzip Wiederverwendung erzielen?

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

Wiederholung. Klassenhierarchie:

II.4.1 Unterklassen und Vererbung - 1 -

Einstieg in die Informatik mit Java

II.4.1 Unterklassen und Vererbung - 1 -

Kapitel 4: Klassen und Unterklassen

Praxis der Programmierung

Algorithmen und Datenstrukturen

Java Grundlagen 2 - OOP

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

Tafelübung 07 Algorithmen und Datenstrukturen

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Einführung in die Programmierung I. 11. Vererbung. Stefan Zimmer

Teil 2: OOP und JAVA (Vorlesung 11)

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Programmierkurs Java

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

1 Abstrakte Klassen, finale Klassen und Interfaces

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Java Einführung Vererbung und Polymorphie. Kapitel 13

Geschachtelte Klassen

Programmieren in Java

Informatik II Übung 6

Einführung in die Programmierung

Objektorientierte Programmierung. Kapitel 14: Interfaces

Info B VL 11: Innere Klassen/Collections

Vererbung, Polymorphismus

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

Einführung in die Programmiersprache Java II

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Ein Vortrag im Rahmen des Wahlpflichtmoduls Fortgeschrittene Programmierung mit JAVA

Programmierkurs C++ Abstrakte Klassen und Methoden

Einführung in die Programmiersprache Java II

Einführung in die Programmierung für NF. Vererbung

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

Interfaces und Vererbung

Kapitel 6. Vererbung

10. Pakete. Ein Paket (package) bündelt thematisch zusammengehörige Klassen und Schnittstellen zu einer Klassenbibliothek.

3 Objektorientierte Konzepte in Java

Polymorphie. 15. Java Objektorientierung II

Info B VL 8: Abstrakte Klassen & Interfaces

Polymorphie. 15. Java Objektorientierung II

Propädeutikum Programmierung in der Bioinformatik

Theorie zu Übung 8 Implementierung in Java

Teil 2-3. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

Algorithmen und Datenstrukturen 06

Implementieren von Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Abstrakte Basisklassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Einstieg in die Informatik mit Java

Transkript:

Klassen und Konstruktoren in Java class Circle { int r; Circle(int r) { this.r = r; // 1 Circle(Circle c) { this.r = c.r; // 2 Circle() { r = 1; // 3...... Circle a = new Circle(2); // Konstruktor 1 Circle b = new Circle(a); // Konstruktor 2 Circle c = new Circle(); // Konstruktor 3 Objektorientierte Programmierung, 6. Teil 1

Konstruktoren in Java Default-Konstruktor, falls kein expliziter Konstruktor: class Classname { // public Classname() {;... super(...) führt Konstruktor der Oberklasse aus this(...) führt anderen Konstruktor derselben Klasse aus Konstruktor beginnt nicht mit super(...) oder this(...): super() implizit am Anfang des Konstruktors eingefügt Objektorientierte Programmierung, 6. Teil 2

Verdecken versus Überschreiben Variablen gleichen Namens in Ober- und Unterklasse: Variable in Unterklasse verdeckt Variable in Oberklasse verdeckte Variable zugreifbar: super.var ((Oberklasse)this).var Methoden gleichen Namens in Ober- und Unterklasse: Unterklassenmethode überschreibt Oberklassenmethode überschriebene Methode zugreifbar: super.method(...) kein Zugriff über ((Oberklasse)this).method(...) Objektorientierte Programmierung, 6. Teil 3

Final Überschreiben einer Methode verhinderbar: final method (... ) {... final Methoden sollen meist vermieden werden Ableitung einer Unterklasse verhinderbar: final class FinalClass {... final class FinClass extends NonFinalClass {... in einigen oo Programmierstilen sind final Klassen häufig: Instanzen werden nur von final Klassen erzeugt dadurch Ersetzbarkeit einfacher zuzusichern Objektorientierte Programmierung, 6. Teil 4

Pakete eine public Klasse pro Datei Paket umfaßt alle Dateien bzw. Klassen im selben Ordner explizite Paketdeklaration: package paketname; Aufruf von foo() in der Datei myclasses/test/aclass.java: myclasses.test.aclass.foo() Kürzer durch Import-Deklaration (am Dateianfang) import myclasses.test;... test.aclass.foo()... import myclasses.test.aclass;... AClass.foo()... import myclasses.test.*;... AClass.foo()... Objektorientierte Programmierung, 6. Teil 5

Sichtbarkeit public protected default private lokal sichtbar ja ja ja nein global sichtbar ja nein nein nein lokal vererbbar ja ja ja nein global vererbbar ja ja nein nein lokal = im selben Paket, auch außerhalb der Klasse global = auch außerhalb des Pakets Objektorientierte Programmierung, 6. Teil 6

Anwendung der Sichtbarkeit Public: Bei der Verwendung der Klasse und deren Instanzen benötigte Methoden, Konstanten und (selten) Variablen Private: Methoden und Variablen, die nur innerhalb der Klasse verwendet werden sollen vor allem, wenn Bedeutung außerhalb der Klasse nicht klar Protected: Methoden und Variablen für Verwendung nicht benötigt, aber hilfreich bei Erweiterungen der Klasse Default: Eng zusammenarbeitende Klassen im selben Paket sollen auf Methoden und Variablen zugreifen können, die sonst privat wären Objektorientierte Programmierung, 6. Teil 7

Interfaces interface X { static final double PI = 3.14159; double foox(); interface Y { double fooy(); interface Z extends X, Y { double fooz(); Objektorientierte Programmierung, 6. Teil 8

Unterschiede zu abstrakten Klassen Schlüsselwort interface statt abstract class alles implizit public daher public nicht nötig alle Methoden abstrakt daher abstract nicht nötig keine Variablen, nur Konstanten (static final...) static und final in Methodendeklarationen verboten nach extends können mehrere Namen von Interfaces stehen Mehrfachvererbung Objektorientierte Programmierung, 6. Teil 9

Klassen implementieren Interfaces class A implements X, Y { double factor = 2.0; public double foo() { return PI; public double foox() { return factor * PI; public double fooy() { return factor * foox(); class B extends A implements Z { public double fooy() { return 3.3 * foo(); public double fooz() { return factor / foox(); Objektorientierte Programmierung, 6. Teil 10

Interfaces und Untertyprelationen Interfaces für Untertyprelationen gut geeignet interface X interface Y interface Z class A class B Abstrakte Klassen gegenüber Interfaces nur dann zu bevorzugen, wenn Code vererbt werden soll Zusicherungen auf abstrakten Methoden (Interfaces) wichtig! Objektorientierte Programmierung, 6. Teil 11