3 Objektorientierte Konzepte in Java



Ähnliche Dokumente
3 Objektorientierte Konzepte in Java

Programmieren in Java

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Vorkurs C++ Programmierung

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

Java: Vererbung. Teil 3: super()

Einstieg in die Informatik mit Java

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

Vererbung, Polymorphie

Java Einführung Methoden in Klassen

Java Kurs für Anfänger Einheit 5 Methoden

Java Einführung Abstrakte Klassen und Interfaces

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Einstieg in die Informatik mit Java

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

Innere Klassen in Java

Javakurs zu Informatik I. Henning Heitkötter

5. Abstrakte Klassen

5.6 Vererbung. Vererbung

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Objektorientierte Programmierung

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Algorithmen und Datenstrukturen

Objektorientierte Programmierung OOP

Grundlagen von Python

Javakurs 2013 Objektorientierung

Einführung in die Java- Programmierung

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

3. Konzepte der objektorientierten Programmierung

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Javakurs für Anfänger

Prinzipien Objektorientierter Programmierung

Klassenbeziehungen & Vererbung

Algorithmen und Datenstrukturen 07

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

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

Applet Firewall und Freigabe der Objekte

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Einstieg in die Informatik mit Java

Einführung in die Programmierung für NF

5.5.8 Öffentliche und private Eigenschaften

Große Übung Praktische Informatik 1

Typumwandlungen bei Referenztypen

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

Einführung in die. objektorientierte Programmierung

OO Softwareentwicklung

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

Probeklausur: Programmierung WS04/05

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

Software Engineering Klassendiagramme Einführung

Programmieren Tutorium

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

Vererbung & Schnittstellen in C#

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

Objektorientierung: Klassen und Objekte

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Programmieren in Java

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

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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

5. Tutorium zu Programmieren

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Software Engineering Interaktionsdiagramme

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Software Engineering Klassendiagramme weiterführende Konzepte

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

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

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

Einführung in die Java- Programmierung

Remote Method Invocation

Erreichbarkeit von Klassenelementen. Daten verstecken und kapseln

Objektorientierte Programmierung

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

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

Java Virtual Machine (JVM) Bytecode

Einführung in die Programmierung

Vorkurs Informatik WiSe 15/16

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

1 Abstrakte Klassen, finale Klassen und Interfaces

Algorithmen und Datenstrukturen 07

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

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

Objektorientierte Programmierung

Angewandte Mathematik und Programmierung

Grundelemente objektorientierter Sprachen (1)

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Computeranwendung und Programmierung (CuP)

Grundelemente objektorientierter Sprachen (1)

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

Implementieren von Klassen

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

Transkript:

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 Subklasse einer anderen Klasse? Welche Schnittstellen besitzt die Klasse? Welche Attribute und Methoden hat die Klasse? 1

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 Instantiierbar- 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 Deklaration von Attributen Java-Syntax: AttrModifiers opt Type VarDeclarators 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 = Klassenattribut (existiert nur einmal pro Klasse) nichts = Instanzattribut (einmal pro Instanz) 5

und seinen Status nichts = normales variables Attribut final = symbolische Konstante, Wert nach Initialisierung nicht mehr änderbar final-attribute eines Referenztyps verweisen immer auf dasselbe Objekt, das i.a. aber verändert werden kann. Referenz ist final, nicht das Objekt 3.2.2 VarDeclarators Liste von Variablennamen mit optionalen Initialisierern 6

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

3.3 Deklaration von Methoden 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 Überladen von Methoden gleicher Name, unterschiedliche Paramterliste überladener Methodenname Beim Methodenaufruf wird die spezifischste Methode ermittelt und ausgeführt. Beispiel: public int dividiere(int zaehler, int nenner){ // Ganzzahldivision return zaehler/nenner; public double dividiere(double zaehler, double nenner){ return zaehler/nenner; 11

3.5 Deklaration von Konstruktoren Konstruktoren = spezielle Methoden, die den Namen der Klasse tragen keinen Ergebnistyp besitzen bei der Erzeugung von Objekten aufgerufen werden (s.u.) weitere Eigenschaften: keine Klassenelemente, d.h. können nicht vererbt oder überschrieben werden nicht static, abstract oder final Für jede Klasse X ohne explizite Konstruktoren wird Standardkonstruktor X(){ super(); erzeugt, der den Konstruktor der Superklasse aufruft. 12

super (...) = führt als erste Anweisung innerhalb eines Konstruktors den entsprechenden Konstruktor der Superklasse aus. this referenziert innerhalb einer Methode oder eines Konstruktors das Objekt, für das die Methode aufgerufen wurde. Beispiele: public class Person{ public final Date geburtsdatum; private int ausweisnummer; public Person(Date geburtsdatum, int ausweisnummer){ this.geburtsdatum = geburtsdatum; this.ausweisnummer = ausweisnummer; public Person(Date geburtsdatum){ this(geburtsdatum, 0); 13

3.6 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 Instanzvariablen mit Initialwerten ruft den zur übergebenen ActualParameterList passenden Konstruktor auf 14

Beispiel: Person chef = new Person(gebDatChef, 14542); 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 15

3.7 Realisierung von Vererbungsbeziehungen 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) 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 (und anderen Subklassen von A) zugreifen. Beispiel: Angestellter leitereinkauf, leitermarketing; Person mitarbeiter; Person mitarbeiter = leitereinkauf; System.out.println( mitarbeiter.geburtsdatum); 17

3.8 Überschreiben von Methoden in Subklassen Idee: Subklassen stellen speziellere Versionen der in der Superklasse definierten Methoden bereit, z.b. Berechnung des Gehalts. Realisierung: Subklasse implementiert eine Methode mit derselben Signatur und demselben Rückgabewert wie in der Superklasse Beim Aufruf der Methode über eine Objektreferenz wird zur Laufzeit die Klasse des Objekts ermittelt, auf das die Objektreferenz aktuell verweist, und die spezifischste, in der Klassenhierarchie am weitesten unten definierte Methode wird ausgeführt. dynamisches Binden 18

Beispiel: public class Angestellter{ protected double grundgehalt = 3000; public double gehalt(){ return grundgehalt; public class Abteilungsleiter extends Angestellter{ protected double zulage = 1200; public double gehalt(){ return grundgehalt + zulage; 19

Die Anweisungen Angestellter lteinkauf = new Abteilungsleiter(); System.out.println(ltEinkauf.gehalt()); erzeugen die Ausgabe 4200 20