3 Objektorientierte Konzepte in Java



Ähnliche Dokumente
3 Objektorientierte Konzepte in Java

Programmieren in Java

Java: Vererbung. Teil 3: super()

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Vorkurs C++ Programmierung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Java Einführung Abstrakte Klassen und Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces

Javakurs zu Informatik I. Henning Heitkötter

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Java Kurs für Anfänger Einheit 5 Methoden

Objektorientierte Programmierung OOP

Große Übung Praktische Informatik 1

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

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

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Vererbung, Polymorphie

Objektorientierte Programmierung

Einstieg in die Informatik mit Java

Innere Klassen in Java

Algorithmen und Datenstrukturen

5.6 Vererbung. Vererbung

5. Abstrakte Klassen

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Javakurs 2013 Objektorientierung

Vererbung & Schnittstellen in C#

Java Einführung Methoden in Klassen

Grundlagen von Python

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Software Engineering Klassendiagramme Einführung

Einstieg in die Informatik mit Java

Objektorientierte Programmierung

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Einführung in die. objektorientierte Programmierung

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Einführung in die Programmierung für NF

Klassenbeziehungen & Vererbung

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

Einführung in die Java- Programmierung

Einführung in die Programmierung

Applet Firewall und Freigabe der Objekte

3. Konzepte der objektorientierten Programmierung

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

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

Folge 18 - Vererbung

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

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

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Kapselung und Methodenbindung: Javas Designprobleme und ihre Korrektur. Dipl.-Inform. Peter Müller Prof. Arnd Poetzsch-Heffter Fernuniversität Hagen

Typumwandlungen bei Referenztypen

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Probeklausur: Programmierung WS04/05

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Abschnitt 9: Schnittstellen: Interfaces

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Java Schulung (Java 2 Java Development Kit 5 / 6)

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Java Virtual Machine (JVM) Bytecode

Vorkurs Informatik WiSe 15/16

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Algorithmen und Datenstrukturen 07

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

Objektorientierte Programmierung

Prinzipien Objektorientierter Programmierung

Gebundene Typparameter

Programmieren in Java

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

C# im Vergleich zu Java

Java für Computerlinguisten

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

Client-Server-Beziehungen

5.5.8 Öffentliche und private Eigenschaften

Objektorientierte Programmierung und Klassen

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Themen. Web Service - Clients. Kommunikation zw. Web Services

Klassendiagramm. (class diagram)

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

Objektorientierung: Klassen und Objekte

Programmieren Tutorium

Einstieg in die Informatik mit Java

Propädeutikum Programmierung in der Bioinformatik

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einstieg in die Informatik mit Java

Software Engineering Klassendiagramme weiterführende Konzepte

5. Tutorium zu Programmieren

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Programmierkurs Java

Java Einführung Packages

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Transkript:

3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und sterben sind u.u. Spezialfälle allgemeinerer Objekte (Superklassen Subklassen) kommunizieren über definierte Schnittstellen stehen in Beziehung zu anderen Objekten Umsetzung in Java? 1

3.1 Klassen fassen Objekte zusammen. Java-Syntax: ClassModifiers opt class Identifier Super opt Interfaces opt ClassBody Beispiel: public class Tutor extends Student implements Korrektor, Klausuraufsicht { /* Attribute */ private String name ; /* Konstruktoren */ public Tutor ( String tutorname ){ name = tutorname; /* Methoden */ public String getname (){ return name ; public void korrigiere ( Uebungsblatt blatt ){ //... public void beaufsichtige ( Klausur klausur ){ //... /* Tutor */ 2

3.1.1 Identifier gibt Klassennamen an. Analog zu Variablennamen gilt: beginnt mit JavaLetter, gefolgt von JavaLetterOrDigit 3.1.2 ClassModifiers regeln die Zugreifbarkeit der Klasse public = von überall aus zugreifbar nichts = nur innerhalb des Pakets und die Instantiier- bzw. Ableitbarkeit. abstract = nicht instantiierbar, d.h. keine Objekte vom Typ der Klasse erzeugbar final = nicht ableitbar, d.h. keine Subklassen der Klasse erzeugbar 3

3.1.3 Super gibt genau eine Superklasse an. extends Identifier = deklarierte Klasse ist von der Klasse mit dem Namen Identifier abgeleitet 3.1.4 Interfaces gibt implementierte Schnittstellen (Interfaces) an. implements Interface1, Interface2,... = deklarierte Klasse implementiert die angegebenen Interfaces 3.1.5 ClassBody deklariert Attribute, Konstruktoren, Methoden, etc. 4

3.2 Attribute bilden Eigenschaften ab. Java-Syntax: AttrModifiers opt Type VarDeclarators Beispiel: public final int personalnummer; 3.2.1 AttrModifiers regeln die Zugreifbarkeit des Attributs, public = von überall aus zugreifbar nichts = innerhalb desselben Package protected = innerhalb desselben Package und in Subklassen private = nur innerhalb derselben Klasse seine Zugehörigkeit, static = Klassenvariable (existiert nur einmal pro Klasse) nichts = Objektvariable (einmal pro Objekt) 5

und seinen Status. nichts = normales variables Attribut final = symbolische Konstante, Wert nach Initialisierung nicht mehr änderbar 3.2.2 VarDeclarators Liste von Variablennamen mit optionalen Initialisierern 6

Beispiele für Attributdeklarationen: public class Angestellter{ private static int letztevergebenepersonalnr; public final Date geburtsdatum; private int fuehrerscheinnummer, ausweisnummer; 7

3.3 Methoden bilden Verhalten ab. Java-Syntax: MethodModifiers opt ResultType Identifier (FormalParameterList opt ) Throws opt MethodBody Beispiel: public static void main(string args[]) throws IOException{ //... 3.3.1 MethodModifiers regeln die Zugreifbarkeit public, nichts, protected, private wie bei Attributen 8

ihre Instantiierbarkeit nichts = Implementation der Methode definiert Objekterzeugung möglich abstract = nur Signatur der Methode (=Name sowie Anzahl und Typen der formalen Parameter) deklariert, keine Implementation Klasse ist implizit abstract ihre Zugehörigkeit static und nichts wie bei Attributen und ihre Überschreibbarkeit nichts = Methode in Subklassen überschreibbar final = Subklassen können Methode nicht überschreiben 9

3.3.2 ResultType gibt den Typ des Rückgabewerts der Methode an oder das Schlüsselwort void, falls die Methode keinen Wert zurückliefert. 3.3.3 FormalParameterList Liste der formalen Paramter mit Namen und Datentypen für jeden Parameter final deklarierte Parameter symbolische Konstanten in der Methode 3.3.4 Throws optionale Liste von Ausnahmen, die in der Methode erzeugt werden können 3.3.5 MethodBody Implementation der Methode (bei nicht abstract deklarierten Methoden) 10

3.4 Konstruktoren regeln die Geburt von Objekten. tragen den Namen der Klasse haben keinen Ergebnistyp werden bei der Erzeugung von Objekten aufgerufen (s.u.) weitere Eigenschaften: keine Klassenelemente, d.h. können nicht vererbt oder überschrieben werden nicht static, abstract oder final Beispiele: public class Person{ public final Date geburtsdatum; public Person(Date geburtsdatum){ this.geburtsdatum = geburtsdatum; 11

Für jede Klasse X ohne explizite Konstruktoren wird Standardkonstruktor X(){ super(); erzeugt, der den Konstruktor der Superklasse aufruft. super (...) = führt innerhalb eines Konstruktors den entsprechenden Konstruktor der Superklasse aus. Falls im Konstruktor kein super-aufruf angegeben ist, wird implizit super() als erste Anweisung ausgeführt. Im Beispiel: public Person(Date geburtsdatum){ super(); // implizit eingefuegt this.geburtsdatum = geburtsdatum; 12

3.5 Objektreferenzen und Erzeugung von Objekten Deklaration von Objektreferenzen mittels Type VarDeclarators; wie bei Attributen Beispiel: Person chef; Wirkung: chef referenziert ein Objekt vom Typ Person kein Initialisierer angegeben Initialwert null, d.h. Variable referenziert nichts Erzeugung eines Objekts: new Identifier(ActualParameterList opt ) reserviert Speicherplatz für das Objekt belegt die Objektvariablen mit Initialwerten ruft den zur übergebenen ActualParameterList passenden Konstruktor auf 13

Beispiel: Person chef = new Person(gebDatChef); Zugriff auf Attribute und Methoden von Objekten mit dem Punkt-Operator: Date chefsgeburtstag = chef.geburtsdatum; Beachte: Zugriffsversuch auf Attribute/Methoden über null-objektreferenzen führt zu einer NullPointerException! Beispiel: Person chef=null; Date chefsgeburtstag = chef.geburtsdatum; // NullPointerException 14

3.6 Finalizer regeln den Tod von Objekten. protected void finalize() throws Throwable{ //... aus der Superklasse geerbte Methode wird vom Garbage Collector unmittelbar vor der Zerstörung des Objekts aufgerufen Zweck: Aufräumarbeiten, z.b. Leeren von Puffern Schließen von Datei- und Datenbankverbindungen In eigenen finalize-methoden am Ende super.finalize() aufrufen! Aufräumarbeiten der Superklasse anstoßen 15

3.7 Super- und Subklassen Angabe (höchstens) einer Superklasse mittels extends in der Klassendeklaration, z.b. public class Angestellter extends Person Klasse Angesteller ist Subklasse von Person: erbt alle zugreifbaren Elemente von Person private-elemente nicht vererbt Konstruktoren nicht vererbt (sind keine Klassenelemente) Object ist Superklasse aller Klassen. 16

Wirkung: Jeder Angestellter ist eine Person (ist-ein Beziehung). technische Konsequenz: Mit einer Objektreferenz vom Typ Person kann man auf ein Objekt vom Typ Angestellter zugreifen. Beispiel: Angestellter leitereinkauf, leitermarketing; Person mitarbeiter; //... mitarbeiter = leitereinkauf; System.out.println( mitarbeiter.geburtsdatum); 17

3.8 Interfaces Interface = Schnittstelle, definiert Kommunikationsmöglichkeiten / Fähigkeiten / Verhalten Java-Syntax: InterfaceModifiers opt interface Identifier ExtendsInterfaces opt InterfaceBody Beispiel: public interface Rank{ public int compare(rank o); 3.8.1 InterfaceModifiers regeln die Zugreifbarkeit (wie bei Klassen) und die Instantiier- und Ableitbarkeit public oder nichts implizit abstract 18

3.8.2 InterfaceBody Methoden implizit abstract und public, nicht static und nicht final keine Implementation Variablen implizit public, static und final symbolische Konstanten 3.8.3 ExtendsInterfaces Angabe von (mehreren) Superinterfaces nach extends Vererbung ähnlich wie bei Klassen: Subinterface erbt alle Konstanten und die Methoden, die es nicht überschreibt. 19

3.8.4 Implementation von Interfaces Klassen, die ein Interface implementieren, müssen den Interfacenamen in der Klassendeklaration aufführen Implementationen für alle Methoden des Interface bereitstellen (sonst abstrakte Klasse) Beachte: Eine Klasse kann mehrere Interfaces implementieren. Die Klasse erbt die symbolischen Konstanten des Interface. 20

Beispiel: public interface Comparator{ public int compareto( Object o1, Object o2 ); public boolean equals ( Object o); Implementierende Klasse: public class PersonComp implements Comparator{ public boolean equals ( Object o){ Person p = ( Person )o; return ( this. gehalt () == p. gehalt ()); PersonComp muss abstract deklariert werden, sonst Übersetzungsfehler. Wann sind zwei Personen gleich? 21

3.9 Zusammenfassung Objekte in Java werden in Klassen zusammengefasst class Person besitzen Eigenschaften und Verhalten Attribute und Methoden verbergen private Informationen public, protected, private werden geboren, leben und sterben Konstruktoren, Objektreferenzen, Finalizer sind u.u. Spezialfälle allgemeinerer Objekte Angestellter extends Person kommunizieren über definierte Schnittstellen Interface Comparator stehen in Beziehung zu anderen Objekten nächste Große Übung (01.02.06) 22