Programmieren in Java

Ähnliche Dokumente
Programmieren in Java

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

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

3 Objektorientierte Konzepte in Java

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einstieg in die Informatik mit Java

Programmieren in Java

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

Pakete Software Entwicklung 1

3 Objektorientierte Konzepte in Java

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

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen 07

Vererbung und Polymorphie

1 Abstrakte Klassen, finale Klassen und Interfaces

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

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

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

JAVA - Methoden

Vererbung, Polymorphie

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

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

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

7. Übung Informatik II - Objektorientierte Programmierung

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

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

Objektorientierte Programmierung Studiengang Medieninformatik

Javakurs für Anfänger

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

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

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

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

Einstieg in die Informatik mit Java

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Klausur Grundlagen der Programmierung

Objekt-Orientierte Programmierung

4. Vererbung Die Klasse Object. Die Klasse Object

Teil 2: OOP und JAVA (Vorlesung 11)

12 Abstrakte Klassen, finale Klassen und Interfaces

Objektorientierte Programmierung Studiengang Medieninformatik

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 28. Februar 2003

Einstieg in die Informatik mit Java

Einführung in die Programmierung für NF MI. Übung 07

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Exceptions und Vererbung

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

Einführung in die. objektorientierte Programmierung

Einstieg in die Informatik mit Java

Programmieren in Java -Eingangstest-

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

Programmieren in Java

Geschachtelte Klassen

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

5. Tutorium zu Programmieren

Javakurs für Anfänger

Umsetzung einer Klassenkarte in einer Programmiersprache

Algorithmen und Datenstrukturen 06

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Musterlösung Stand: 5. Februar 2009

Programmieren I + II Regeln der Code-Formatierung

Kapitel 5: Interfaces

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

JAVA - Methoden - Rekursion

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Repetitorium Informatik (Java)

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

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Klassenvariablen, Klassenmethoden

Programmieren I + II Regeln der Code-Formatierung

Objektorientierte Programmierung Studiengang Medieninformatik

Anweisungen zur Ablaufsteuerung

Vorkurs C++ Programmierung

Aufgabenblatt Nr. 5 Generizität und TicTacToe

pue13 January 28, 2017

Vorbereitende Aufgaben

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Repetitorium Informatik (Java)

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

Fragen zur OOP in Java

Primitive Datentypen

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

Wie entwerfe ich ein Programm?

Einführung in die Informatik

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Java: Vererbung. Teil 3: super()

5.6 Vererbung. Vererbung

Einführung in die Programmierung für NF MI. Übung 04

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

Theorie zu Übung 8 Implementierung in Java

Java-Schulung Grundlagen

Objekt-Orientierte Programmierung

Transkript:

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

2 Übersicht der heutigen Inhalte Pakete Beispiel zur Verdeckung Polymorphie Modifikatoren bei Klassenelementen

3 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können weitere Klassen in einer Java-Datei enthalten sein wobei die Konvention gilt, dass möglichst nur eine Klasse pro Datei definiert wird damit die Dateistruktur weitgehend deckungsgleich mit der Klassenstruktur ist Ausnahme sind innere Klassen. Diese sind sowieso nur innerhalb der Klasse in der Sie definiert werden sichtbar. Schuh.java: public class Schuh {

4 Paketstruktur Jede Java-Klasse hat ein sog. Package in dem Klassen die zu einem Projekt oder einer Programmieraufgabe gehören abgelegt werden Wird kein package definiert gehört die Klasse zum default-package Die Definition erfolgt am Anfang einer Java-Datei mit dem Schlüsselwort package Beispiel: package de.java.vorlesung; Die Punktnotation gibt hier eine Hierarchie wieder. Paketnamen werden klein geschrieben Konvention ist, dass Klassen in deutscher Sprache unterhalb des de-package abgelegt werden Jedes Package hat seinen eigenen Namensraum und nur darin müssen die Klassennamen eindeutig sein

5 Beispiel Paketstruktur Die Klassen packagetest.java und importtest.java package de.java.vorlesung.packagetest; public class Testklasse { public void hallo(){ System.out.println("Hallo!"); package de.java.vorlesung; import de.java.vorlesung.packagetest.*; public class Importtest { public static void main(string[] args) { Testklasse test = new Testklasse(); test.hallo();

6 Imports Importiert werden können Klassen und Pakete Schlüsselwort ist hier import Soll ein ganzes Paket importiert werden setzt man hinter den Paketnamen ein.* Zugriff auf statische Methoden anderer Klassen in anderen Paketen erfolgen mit der Punktnotation des packages.klassenname.methodenname Beispiel: de.java.vorlesung.packagetest.hallo(); Wenn die Klasse bereits vorher importiert wurde reicht der Klassenname

7 Wdh.: 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.

8 Beispiel Verdeckung: Autovermietung 1/7 Das Attribut rate wird von den Subklassen verdeckt.

9 Beispiel: Autovermietung 2/7 package de.wwu.ziv.vorlesung.java.autovermietung.fahrzeug public class Mietfahrzeug { protected float rate = 25.0f; private int dauer;... public Mietfahrzeug(int dauer) { this.dauer = dauer; public float getrate() { return this.rate; public int getdauer() { return this.dauer;

10 Beispiel: Autovermietung 3/7 public float getpreis(float rate) { switch ( this.dauer ) { case 1: case 2: return this.dauer * rate; case 3: case 4: return this.dauer * rate * 0.90f; case 5: case 6: return this.dauer * rate * 0.85f; default: return this.dauer * rate * 0.75f; public String tostring() { return "Mietfahrzeug: Rate=" + this.rate + ", Dauer= + this.dauer + ", Preis=" + this.getpreis(this.rate);

11 Beispiel: Autovermietung 4/7 package de.wwu.ziv.vorlesung.java.qutovermietung.fahrzeug public class Gelaendewagen extends Mietfahrzeug { protected float rate = 35.0f; public Gelaendewagen(int dauer) { super(dauer); public String tostring() { return "Gelaendewagen: Rate=" + this.rate + ", Dauer= + this.dauer + ", Preis=" + this.getpreis(this.rate);

12 Beispiel: Autovermietung 5/7 package de.wwu.ziv.vorlesung.java.autovermietung.fahrzeug public class Sportwagen extends Mietfahrzeug { protected float rate = 45.0f; public Sportwagen(int dauer) { super(dauer); public String tostring() { return "Sportwagen: Rate=" + this.rate + ", Dauer= + this.dauer + ", Preis=" + this.getpreis(this.rate);

13 Beispiel: Autovermietung 6/7 package de.wwu.ziv.vorlesung.java.autovermietung.fahrzeug public class Autovermietung { public static void main(string[] args) { Mietfahrzeug fahrzeug1 = new Mietfahrzeug(1); System.out.println(fahrzeug1); Mietfahrzeug fahrzeug2 = new Mietfahrzeug(7); System.out.println(fahrzeug2); Gelaendewagen fahrzeug3 = new Gelaendewagen(1); System.out.println(fahrzeug3); Gelaendewagen fahrzeug4 = new Gelaendewagen(7); System.out.println(fahrzeug4); Sportwagen fahrzeug5 = new Sportwagen(1); System.out.println(fahrzeug5); Sportwagen fahrzeug6 = new Sportwagen(7); System.out.println(fahrzeug6); System.out.println("Fahrzeug 6 ohne Cast: Rate=" + fahrzeug6.rate); System.out.println( "Fahrzeug 6 mit Cast: Rate=" + ((Mietfahrzeug)fahrzeug6).rate);

14 Beispiel: Autovermietung 7/7 run: Mietfahrzeug: Rate=25.0, Dauer=1, Preis=25.0 Mietfahrzeug: Rate=25.0, Dauer=7, Preis=131.25 Gelaendewagen: Rate=35.0, Dauer=1, Preis=35.0 Gelaendewagen: Rate=35.0, Dauer=7, Preis=183.75 Sportwagen: Rate=45.0, Dauer=1, Preis=45.0 Sportwagen: Rate=45.0, Dauer=7, Preis=236.25 Fahrzeug 6 ohne Cast: Rate=45.0 Fahrzeug 6 mit Cast: Rate=25.0 BUILD SUCCESSFUL (total time: 0 seconds) Zugriff auf verdecktes Attribut rate erfolgt mit einem Cast zu einem Objekt der Basisklasse: ((Mietfahrzeug)fahrzeug6).rate

15 Polymorphie Polymorphie (Vielgestaltigkeit) ist eine wichtige Eigenschaft der OOP Polymorphie von Objekten gibt es nur bei Vererbungshierarchien Objekttyp einer Subklasse kann mit Objekttyp einer Basisklasse ausgetauscht werden, wenn die Basisklasse nur erweitert wird und nur der Basisklasse bekannte Elemente verwendet werden Überschriebene Methoden in der Subklasse müssen identisch zur ihrer Basisklassenmethode aufrufbar sein

16 Beispiel zur Polymorphie: Geometrie 1/7

17 Beispiel zur Polymorphie: Geometrie 2/7 package de.wwu.ziv.vorlesung.java.beispiel6.geometrie import de.wwu.ziv.vorlesung.java.beispiel6.geometrie.formen.*; public class Geometrie { public static void main(string[] args) { Rechteck rechteck1 = new Rechteck(8, 9); Rechteck rechteck2 = new Rechteck(2, 6); Kreis kreis1 = new Kreis(4); Quadrat quadrat1 = new Quadrat(4); Quadrat quadrat2 = new Quadrat(8); Kreis kreis2 = new Kreis(5); Kiste kiste = new Kiste(10); kiste.hinzufuegen(rechteck1); // Anwendung der Polymorphie kiste.hinzufuegen(rechteck2); kiste.hinzufuegen(kreis1); kiste.hinzufuegen(kreis2);

18 Beispiel zur Polymorphie: Geometrie 3/7 kiste.hinzufuegen(quadrat1); kiste.hinzufuegen(quadrat2); kiste.formenauflisten(); // Form mit dem kleinsten Flächeninhalt ermitteln Form form = kiste.getkleinsteform(); if (form!= null) { System.out.println("Die kleinste Form ist: " + form); // Form mit dem größten Flächeninhalt ermitteln form = kiste.getgroessteform(); if (form!= null) { System.out.println("Die größte Form ist: " + form);

19 Beispiel zur Polymorphie: Geometrie 4/7 package de.wwu.ziv.vorlesung.java.beispiel6.geometrie import de.wwu.ziv.vorlesung.java.beispiel6.geometrie.form; public class Kiste { private Form[] formen; private int index; public Kiste(int anzahl) { formen = new Form[anzahl]; index = 0; public boolean hinzufuegen(form ware) { if (index < this.formen.length) { this.formen[index] = ware; index += 1; return true; return false;

20 Beispiel zur Polymorphie: Geometrie 5/7 public Form getgroessteform() { Form formmax = null; for (Form form : formen) { if (form!= null) { if (formmax == null formmax.getflaeche() < form.getflaeche()) { formmax = form; return formmax; public Form getkleinsteform() { Form formmin = null; for (Form form : formen) { if (form!= null) { if (formmin == null formmin.getflaeche() > form.getflaeche()) { formmin = form; return formmin;

21 Beispiel zur Polymorphie: Geometrie 6/7 public String tostring() { return "Regal: " + this.formen.length; public void formenauflisten() { System.out.println("Liste der Formen, die sich in der Kiste befinden: "); for (Form form : formen) { if (form!= null) { System.out.println(form.toString());

22 Beispiel zur Polymorphie: Geometrie 7/7 run: Liste der Formen, die sich in der Kiste befinden: Ein Rechteck mit einer Länge von 8.0, einer Breite von 9.0, einer Fläche von 72.0 und einem Umfang von 34.0. Ein Rechteck mit einer Länge von 2.0, einer Breite von 6.0, einer Fläche von 12.0 und einem Umfang von 16.0. Ein Kreis mit einem Radius von 4.0, einer Fläche von 50.2654816 und einem Umfang von 25.1327408. Ein Kreis mit einem Radius von 5.0, einer Fläche von 78.539815 und einem Umfang von 31.415926. Ein Quadrat mit einer Länge von 4.0, einer Fläche von 16.0 und einem Umfang von 16.0. Ein Quadrat mit einer Länge von 8.0, einer Fläche von 64.0 und einem Umfang von 32.0. Die kleinste Form ist: Ein Rechteck mit einer Länge von 2.0, einer Breite von 6.0, einer Fläche von 12.0 und einem Umfang von 16.0. Die größte Form ist: Ein Kreis mit einem Radius von 5.0, einer Fläche von 78.539815 und einem Umfang von 31.415926. BUILD SUCCESSFUL (total time: 0 seconds)

23 Modifikatoren bei Klassenelementen public: Es gibt keine Zugriffsbeschränkung und alle anderen Objekte können auf dieses Element zugreifen. protected: Bei protected haben neben der eigenen Klasse auch alle Subklassen Zugriff auf das Element. Des Weiteren haben die Elemente im gleichen Package Zugriff. default(keine Angabe): Wenn keine Angabe genannt wird, dann ist der Zugriff vom gleichen Package heraus erlaubt. private: Nur die Klasse selbst kann auf ihre private-elemente zugreifen => public > protected > default > private static: Anhand der Klasse kann mit dem Punktoperator auf eine Element zugegriffen werden. Es wird kein Objekt benötigt. final: Attribute und Methoden mit dem Schlüsselwort final können nicht mehr überschrieben werden

24 Zusammenfassung Sie kennen die folgenden Dinge und können diese anwenden: Pakete die Schlüsselwörter package und import die Verdeckung von Attributen Polymorphie bei Objekten die Modifikatoren bei Klassenelementen

25 Aufgaben 1. Erstellen Sie die Klasse Regal: a. Das Regal liegt im Paket de.wwu.ziv.vorlesung.java.aufgabe6 b. Die Klasse enthält zwei private-variablen, zum einen Ware[] waren und zum anderen int index. c. Schreiben Sie eine Methode hinzufuegen mit der Signatur: public boolean hinzufuegen(ware ware). Solange der index kleiner ist als die Länge des Arrays waren, wird die Ware dem Array hinzugefügt und true zurückgegeben. d. Schreiben Sie eine Methode public float inventur(), welche die Summe aller Warenwerte zurückliefert. e. Schreiben Sie eine Methode public String tostring(), welche als Ausgabe z. B. hat: "Regal: 10", wobei 10 die Größe des Waren-Arrays angibt. f. Schreiben Sie eine öffentliche Methode warenauflisten(), die keinen Rückgabewert hat, aber eine Auflistung der Waren vornimmt. Nutzen Sie hierzu die tostring()-methoden der einzelnen Waren. Zuvor erfolgt noch die Ausgabe "Liste der Waren:".

26 Aufgaben 2. Aufbau der Paketstruktur. a. Die Klassen Ware, Handtasche, Hut, Schuh und Schuhpaar sollen im Paket de.wwu.ziv.vorlesung.java.aufgabe6.waren liegen. b. Die Klasse mit der main-funktion liegt im Paket de.wwu.ziv.vorlesung.java.aufgabe6. c. In der main-methode werden wie in Aufgabe 5 die gleichen Waren-Objekte instanziiert. d. Instanziieren Sie ein Objekt vom Typ Regal mit 10 Plätzen. e. Anschließend werden die 8 Waren dem Regal hinzugefügt. f. Rufen Sie auf dem Objekt Regal die Methode warenauflisten() auf. g. Rufen Sie auf dem Objekt Regal die Methode inventur() auf und geben Sie das Ergebnis mit einer System.out.println() aus, sodass vor dem Ergebnis der String "Ergebnis der Inventur: " steht.

27 Klassendiagramm zur Aufgabe