Raphael Fischer fischrap@student.ethz.ch 03.04.2014 Informatik II - Übung 06 Raphael Fischer fischrap@student.ethz.ch 03.04.2014.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Einführung in die Programmierung Zusammenfassung
Zusammenfassung des Kapitels 8
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Einführung in die OOP in Java
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Informatikunterricht mit Java
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Mittwoch Informatik II, 1. Teil
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Klassen in Java.
Schnittstellen.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Einführung in die Programmierung mit Java
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Allgemeine Befehle für die allgemeine Liste
Einführung in die Programmierung mit Java
Raphael Fischer Informatik II - Übung 07 Raphael Fischer
Raphael Fischer Informatik II - Übung 03 Raphael Fischer
Cäsar-Verschlüsselung
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
Objektorientierte Programmierung und Vererbung
Raphael Fischer Informatik II - Übung 08 Raphael Fischer
Grundkurs Informatik mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Cäsar-Verschlüsselung
Polymorphie Überladen
Interfaces Definition von Interfaces Verwendung von Interfaces
Raphael Fischer Informatik II - Übung 10 Raphael Fischer
2. Vererbung und Kapselung
«Delegierter» Methoden Schablone Funktionszeiger
Definition Felder Konstruktor Methoden Beispiel
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Implementieren von Klassen
Statische und Nichtstatische Methoden Properties / Eigenschaften
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
 Präsentation transkript:

Raphael Fischer fischrap@student.ethz.ch 03.04.2014 Informatik II - Übung 06 Raphael Fischer fischrap@student.ethz.ch 03.04.2014

Objektorientierte Programmierung Raphael Fischer 27.11.2018

Klassenhierarchie public class Fahrzeug { … } public class Auto extends Fahrzeug {…} public class Lastwagen extends Auto { … } Raphael Fischer 27.11.2018

Hierarchie class Auto extends Fahrzeug { class Fahrzeug { int Radzahl; String toString() { return "Fahrzeug. Radzahl = " + Radzahl; } } class Auto extends Fahrzeug {     double Hubraum;     String toString() {       return "Auto. Radzahl = " +  Radzahl + ", Hubraum = "  + Hubraum;     }   }  Raphael Fischer 27.11.2018

Raphael Fischer 27.11.2018

Typen-Cast (Kann Exception auslösen) Instanceof und casts Was, wenn man Fahrzeug bekommt, aber eigentlich weiss, dass es ein Auto ist? Auf Hubraum zugreifen Typen-Cast (Kann Exception auslösen) if (f instanceof Auto)       System.out.println(((Auto)f).Hubraum);      else        System.out.println("f ist kein Auto!");  Raphael Fischer 27.11.2018

Aufgabe 1: Vererbung Raphael Fischer 27.11.2018

Abstrakte Klassen abstract class ClassName Dienen nur als Oberklasse für andere Klassen new AbstractClass() geht nicht Können abstrakte Methoden definieren public abstract double flaeche(); Müssen überschrieben werden! Raphael Fischer 27.11.2018

Abstrakte Klassen - Beispiel GeomObject g = new GeomObject(); GeomObject g = new Kreis(); abstract class GeomObject public abstract double flaeche(); class Rechteck class Kreis private lengthY; private lengthX; public double flaeche(); private radius; public double flaeche(); Raphael Fischer 27.11.2018

Abstrakte Klassen - Beispiel Was nützt das jetzt? Wir können z.B. Listen von GeomObjects bauen Listen durchlaufen und auf jedem Objekt System.out.println(obj.flaeche()) aufrufen Oder Flächenwerte addieren... Es ist EGAL, was genau der statische Typ der Objekte ist – egal ob Rechteck oder Kreis! Wir können GeomObjects auch mittels flaeche() sortieren! Raphael Fischer 27.11.2018

Bemerkung abstract class Object Jede Klasse erbt automatisch davon Enthält z.B. standard-Definition von toString() Raphael Fischer 27.11.2018

Interfaces Beschreiben «Eigenschaften» von Klassen Typische Beispiele: Comparable: Objekte sind vergleichbar Serializable: Objekte können sich in einen String schreiben und wieder daraus herstellen Beschreibt abstrakte Methode(n), die Klasse dann implementieren muss Eine Klasse kann mehrere Interfaces implementieren! Raphael Fischer 27.11.2018

Kein abstract, weil sowieso alles abstract in Interface Interfaces - Beispiel Interface Comparable { public boolean smallerThan(Comparable other); } Fahrzeug implements Comparable { public double weight; public boolean smallerThan(Comparable other) { return this.weight < ((Fahrzeug)other).weight; } Kein abstract, weil sowieso alles abstract in Interface Raphael Fischer 27.11.2018

Aufgabe 2: Abstract classes und Interfaces Raphael Fischer 27.11.2018

Vergleich abstract classes - Interfaces Mehrfachvererbung nur bei Interfaces Parameter nur in abstract classes Funktions-Implementierungen nur in abstract classes Raphael Fischer 27.11.2018

Hinweise zu Blatt 06 Raphael Fischer 27.11.2018

U6.A1 Papieraufgabe zu Vererbung Raphael Fischer 27.11.2018

Factories: Wieso? Zwei Informatiker Arbeiten mit Bäumen. Damit sie gleichzeitig Arbeiten können implementiert sie einer, der andere nutzt sie: Implementierung Nutzung Benutze: new ArrayTree() . Meinung geändert: Ändere alle new ArrayTree() zu new ListTree() Anfangs wird entschieden: Es wird ein ArrayTree Während der Entwicklung merkt man: ListTree wäre für diese Anwendung besser geeignet. Raphael Fischer 27.11.2018

Lösung: Interface und Factory Statt den Konstruktor direkt zu benutzen, wird dies über eine TreeFactory gemacht! Tree t = TreeFactory.makeTree(); Raphael Fischer 27.11.2018

Raphael Fischer 27.11.2018

U6.A2c) Programmiert eigenen Testcase Eclipse: Tests.java Codeboard: publicTest.java Nehmt euch z.B. diesen als Beispiel: /** * Check toString for empty stack. */ @Test public void toStringEmpty() { IStack stack = StackFactory.create(); Assert.assertEquals("string representation is wrong", "[]", stack.toString()); } Raphael Fischer 27.11.2018

U6.A3: Generische Listen Übungsserie 5 Übungsserie 6 Elemente der Liste: Ganzzahlen Value: int Übungsserie 6 Elemente der Liste: generische Objekte Value: Object Selbst eine Utility-Klasse erstellen: ListUtils implements IListUtils: handhabt generische Listen Vergleiche mit den Utility-Klassen aus A1 & A3 von Übung 5 Diesmal wird die Utility Klasse instantiiert (nicht mehr static) Raphael Fischer 27.11.2018

Neue Klassen erstellen Codeboard: Eclipse: Rechtsklick auf package -> New -> Class Raphael Fischer 27.11.2018

U6.A3b) abstract class GeometricObject implements Comparable{ abstract int area(); boolean smallerThan(Comparable) { … } } class Rectangle { int area(){ … } } class Triangle { int area(){ … } } Raphael Fischer 27.11.2018

Tipps zu U6.A3 U5.A3: sort in ListUtils (aus a)) Ähnliche Idee Minimale Anpassung, da es sich statt int um generische Object- Elemente handelt. Wie sortiere ich etwas, das ich nicht kenne? Lösung: Interface Comparable, cast nach Comparable möglich public interface Comparable { boolean smallerThan(Comparable rhs); } Raphael Fischer 27.11.2018

Tipps zu U6.A4 Schwere Aufgabe Selbsttest: Wer das kann, hat keine Programmierprobleme in der Prüfung  Vereint die Effizienz von Arrays mit dem aufwandslosen Wachsen von Listen Implementierung des Interface Istack  Es kann u6a2.StackFactory.create() benutzt werden Raphael Fischer 27.11.2018

…viel Spass! 10.04.2013 Informatik II - Übung 06