Programmieren in Java

Ähnliche Dokumente
Programmieren in Java

Programmieren in Java

Programmieren in Java

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

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Vererbung, Polymorphie

6. Globalübung (zu Übungsblatt 8)

Objektorientierte Programmierung Studiengang Medieninformatik

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

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

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

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Javakurs für Anfänger

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Java für Bauingenieure

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

Javakurs für Anfänger

Programmierung Nachklausurtutorium

Algorithmen und Datenstrukturen 07

3 Objektorientierte Konzepte in Java

C++ - Objektorientierte Programmierung Vererbung

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

Javakurs für Anfänger

2. Vererbung und Kapselung

Vererbung und Polymorphie

Abstrakte Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces

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

Java Vererbung. Inhalt

Polymorphie. Überschreiben. Definition Eigene Methoden überschreiben Beispiele. Dr. Beatrice Amrhein

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Abstrakte Basisklassen

Vererbung, Polymorphismus

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

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

Algorithmen und Datenstrukturen

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Teil 2: OOP und JAVA (Vorlesung 11)

Javakurs für Anfänger

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Begriffe 1 (Wiederholung)

C++ - Objektorientierte Programmierung Polymorphie

Grundlagen der Objektorientierten Programmierung Static

Einführung in die Programmiersprache Java II

Die Klasse java.lang.object. Thorsten Treffer

Wiederholung zur Vorlesung Programmieren

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

Liste Programmieren Java Überblick

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

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

1. Abstrakte Klassen

Implementieren von Klassen

Praxis der Programmierung

Java - Vererbung. Personen. Leibniz Universität IT Services Anja Aue

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

Objektorientierte Programmierung Studiengang Medieninformatik

7. Übung Informatik II - Objektorientierte Programmierung

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

Propädeutikum Programmierung in der Bioinformatik

Überschreiben von Methoden

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Grundlagen der Objektorientierung

Repetitorium Informatik (Java)

3 Objektorientierte Konzepte in Java

Programmieren in Java

Programmierparadigmen

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Transkript:

Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2

2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von Methoden

3 Klassenhierarchien Klasse = Gruppierung von Objekten mit gleicher Schablone Einzelnes Objekt = Instanz einer Klasse Klasse Schuh int groesse; Instanz schuh1 groesse = 39; Instanz schuh2 groesse = 45; Klassen können in einer Hierarchie geordnet werden ( Ist-ein-Beziehung ) Musikinstrument Blasinstrument Flöte Saxophon

4 Abstrakte Klassen dienen zur Strukturierung von Klassenhierarchien ermöglichen das Zusammenfassen von Eigenschaften bei Klassen Methoden können ohne Rumpf erstmal abstrakt definiert werden Wenn eine Methode abstrakt ist, dann ist die Klasse auch abstrakt Instanzen können von abstrakten Klassen nicht erzeugt werden abstract Musikinstrument Blasinstrument Flöte Saxophon

5 Beispiel: Geometrie 1/5

6 Beispiel: Geometrie 2/5 abstract public class Form { public final static double PI = 3.1415926; abstract public double getflaeche(); abstract public double getumfang(); public String tostring() { return "die Fläche " + this.getflaeche() + " und den Umfang " + this.getumfang() + ".";

7 Beispiel: Geometrie 3/5 public class Kreis extends Form { private double radius; public Kreis(double radius) { this.radius = radius; public double getumfang() { return 2 * Kreis.PI * this.radius; public double getflaeche() { return Kreis.PI * this.radius * this.radius; public String tostring() { return "Der Kreis hat den Radius " + this.radius + ", " + super.tostring();

8 Beispiel: Geometrie 4/5 public class Quadrat extends Form { private double laenge; public Quadrat(double laenge) { this.laenge = laenge; public double getumfang() { return 4 * this.laenge; public double getflaeche() { return this.laenge * this.laenge; public String tostring() { return "Das Quadrat hat die Länge " + this.laenge + ", " + super.tostring();

9 Beispiel: Geometrie 5/5 public class Rechteck extends Form { private double breite; private double laenge; public Rechteck(double breite, double laenge) { this.breite = breite; this.laenge = laenge; public double getumfang() { return 2 * this.breite + 2 * this.laenge; public double getflaeche() { return this.breite * this.laenge; public String tostring() { return "Das Rechteck hat die Länge " + this.laenge + ", die Breite " + this.breite + ", " + super.tostring();

10 Prinzip der Vererbung Beziehung zwischen den Klassen einer Hierarchie: Superklasse: betrachtete Klasse wird davon abgeleitet Subklasse: wird abgeleitet von der betrachteten Klasse Dabei gilt: abgeleitete Klassen übernehmen die Eigenschaften und Methoden aller übergeordneten Klassen Ererbte Eigenschaften und Methoden werden wie eigene Eigenschaften und Methoden behandelt bei der Kommunikation mit einem Objekt einer Klasse Vererbungsregel: ist eine Methode/Eigenschaft in der aufgerufenen Klasse nicht vorhanden wird in der nächsthöheren Superklasse danach gesucht und dann in deren Superklasse usw. bis zum ersten Auffinden der Methode/Eigenschaft Superklasse Methode1 Klasse (Methode1) Methode2 Subklasse (Methode1) (Methode2) Methode3

11 Elemente mit gleichem Namen Überladung: Methode wird mit verschiedenen Parametern mehrfach implementiert Verdeckung: Attribut in der Basisklasse wird in der abgeleiteten Klasse von einem namensgleichen Attribut verdeckt Zugriff auf verdeckte Attribute kann mit einem Cast zu einem Objekt der Basisklasse erfolgen Überschreibung: Methode in der Basisklasse wird von Methode mit gleicher Signatur in der abgeleiteten Klasse überschrieben. Die Signatur besteht aus Methodenname und Parameterliste.

12 Beispiel: Student Subklasse von Person public class StudentenBeispiel { public static void main(string[] args) { Person person = new Person("Max", "Mustermann"); System.out.println(person); Student student = new Student("Erika", "Musterfrau", 1234567); System.out.println(student); run: Max Mustermann Erika Musterfrau (Matr-Nr.: 1234567) BUILD SUCCESSFUL (total time: 0 seconds)

13 Beispiel: Student Subklasse von Person public class Person { private String vorname; private String nachname; public Person(String vorname, String nachname) { this.vorname = voname; this.nachname = nachname; public String tostring() { return this.vorname + " " + this.nachname; public class Student extends Person { private int matrnr; public Student(String vorname, String nachname, int matrnr) { super(vorname, nachname); this.matrnr = matrnr; public String tostring() { return super.tostring() + " (Matri-Nr.: " + this.matrnr + ")";

14 Mehrfachvererbung Wird in Java nicht unterstützt kommt aber in der Natur durchaus vor Prinzip: Ein Objekt erbt von mehreren Superklassen die voneinander unabhängig sind Erlaubt eine einfache und vollständige Beschreibung von einzelnen Objekten Komplexität steigt unverhältnismäßig bei größeren Projekten Superklasse1 Eigenschaft a,b,c Superklasse2 Eigenschaft d Superklasse3 Eigenschaft g,h Superklasse4 Eigenschaft j Superklasse5 Eigenschaft k,l,m Klasse1 Eigenschaft a,b,c,d,g,h,j,k,l,m

15 Fakten zur Vererbung Schüsselwort extends dient zur Vererbung Basisklasse vererbt enthaltende Elemente (ohne Konstruktoren und private-elemente) Basisklasse wird durch Vererbung nicht verändert Eine Java-Klasse kann nur eine Basisklasse besitzen In den Methoden der abgeleiteten Klasse können die ererbten Elemente direkt verwendet werden Der Zugriff auf geerbte Attribute und Methoden erfolgt wie üblich über ein Objekt(bei statischen Elementen über den Klassennamen) Vererbte Elemente behalten ihren Zugriffsschutz Vererbte Attribute werden mit dem Standardkonstruktor der Basisklasse initialisiert

16 this und super this: ist ein Schlüsselwort liefert das aktuelle Objekt einer Klasse super: public class Test { int wert; Test(int wert) { wert = wert; // Das kann nicht funktionieren this.wert = wert; // Objektvariable den Wert zuweisen ist ein Schlüsselwort man erhält Zugriff auf ein Element der Oberklasse

17 Die Klasse Object Grundsätzliche Regel in objektorientierten Sprachen: alle Konstrukte werden als Objekte beschrieben. Das bedeutet dass auch Klassen selbst Objekte sein müssten Deshalb wird in Java die Metaklasse Object definiert Alle Klassen werden als Instanzen von Object abgeleitet Vererbt werden Methoden zum Erzeugen von Objekten oder zur Initialisierung von Klassenvariablen Object Klasse Klasse. Klasse

18 Klasse Object

19 Zusammenfassung Sie kennen die Fakten zur Vererbung bei Java Sie können von einer Basisklasse mit extends ableiten und kennen das Überladen von Methoden Überschreiben von Methoden Erweitern von Methoden Sie kennen die Bedeutung von: abstrakten Klassen Schlüsselwörter this und super

20 Aufgaben 1) Erstellen Sie die abstrakte Klasse Ware. a. Die Klasse Ware besitzt als Attribute String farbe, String marke, float preis und String zustand. Die 4 Attribute sind vom Zugriffsmodifizierer auf protected zu setzen, sodass Subklassen darauf zugreifen können. b. Geben Sie der Klasse Ware den Konstruktor: String farbe, int groesse, String marke, float preis, String zustand c. Die Klasse Ware soll die Methode getwert() mit float als Rückgabewert erhalten. In Abhängigkeit vom Zustand und Preis wird der Wert der Ware in einer switchcase-anweisung zurückgegeben. Beim Zustand "NEU" wird der volle Preis berechnet, bei "WIE NEU" 70 Prozent, bei "GEBRAUCHT" 25 Prozent und bei "KAPUTT" 0 Prozent. 2) Von der Klasse Ware wird die Klasse Handtasche und Hut abgeleitet: a. Schreiben Sie für Handtasche und Hut jeweils einen Konstruktor und rufen Sie in der ersten Zeile mit super( ), den Konstruktor der Oberklasse auf, wobei durch dessen Parameter ersetzt werden muss.

21 Aufgaben b. Die Klasse Hut erhält zusätzlich ein Attribut kopfumfang. c. Die Methode getwert() bei Hut wird überschrieben und liefert beim Zustand "GEBRAUCHT" 50 Prozent vom Preis. 3) Von der Klasse Ware wird auch die Klasse Schuhpaar abgeleitet: a. Überladen Sie den Konstruktor Schuhpaar mit den Parameterliste: String farbe, int groesse, String marke, float preis, String zustand b. In beiden Konstruktoren von Schuhpaar rufen Sie in der ersten Zeile mit super( ) der Konstruktor der Oberklasse auf, wobei durch dessen Parameter ersetzt werden muss. c. Ändern Sie in den Klassen Schuh und Schuhpaar ausgabe() zu tostring(). d. Die Methode istvollstaendig() wird erweitert um die Prüfung, ob das Attribut farbe und marke mit dem Inhalt gleichnamiger Attribute des linken Schuhs übereinstimmt. Verwenden Sie hierfür die Methoden getfarbe() und getmarke() in der Klasse Schuh an. e. Die Methode getwert() aus der Basisklasse wird erweitert um die Prüfung, ob das Schuhpaar vollständig ist. Verwenden Sie hierzu istvollstaendig().

22 Aufgaben 4) In der main-methode sollen folgende Objekte instanziiert werden, sodass folgende Ausgabe im Output-Fenster beim run erscheint. a. 4 Schuhpaare, 2 Hüte, 2 Handtaschen b. Ergänzen Sie hierzu die tostring()-methoden in den Klassen. run: Schuhpaar: { linker Schuh: schwarz, 45, Adidas, {rechter Schuh: schwarz, 45, Adidas schwarz, Adidas, 89.0, NEU, 89.0 Schuhpaar: { linker Schuh fehlt, {rechter Schuh: schwarz, 45, Adidas schwarz, Adidas, 89.0, NEU, 0.0 Schuhpaar: { linker Schuh: blau, 39, Nike, {rechter Schuh: blau, 40, Nike blau, Nike, 69.0, NEU, 0.0 Schuhpaar: { linker Schuh: blau, 39, Nike, {rechter Schuh: blau, 39, Nike blau, Puma, 59.0, NEU, 0.0 Hut: 58, braun, Mustang, 29.0, NEU, 29.0 Hut: 56, blau, Channel, 19.0, GEBRAUCHT, 9.5 Handtasche: grün, Puma, 49.0, NEU, 49.0 Handtasche: braun, Puma, 29.0, GEBRAUCHT, 7.25 BUILD SUCCESSFUL (total time: 0 seconds)

23 Klassendiagramm zu der Aufgabe