FAKULTÄT FÜR INFORMATIK

Ähnliche Dokumente
Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Institut fu r Informatik

6. Globalübung (zu Übungsblatt 8)

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

Objektorientierung II

Javakurs für Anfänger

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

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Java für Bauingenieure

Tafelübung 07 Algorithmen und Datenstrukturen

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Schrägbilder von Körpern Quader

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

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

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt

1 Abstrakte Klassen, finale Klassen und Interfaces

FAKULTÄT FÜR INFORMATIK

Probeklausur: Programmierung WS04/05

Programmierkurs Java

Einführung in die Programmierung Wintersemester 2008/09

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

JAVA - Methoden

Vorlesung Datenstrukturen

Programmieren in Java

Vorbereitende Aufgaben

Kapitel 4: Klassen und Unterklassen

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

II.4.5 Generische Datentypen - 1 -

Objektorientierte Programmierung Studiengang Medieninformatik

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in das Programmieren Probeklausur Lösungen

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Teil 2: OOP und JAVA (Vorlesung 11)

JAVA - Methoden - Rekursion

14. Java Objektorientierung

Sortieren von Objekten

4. Vererbung Die Klasse Object. Die Klasse Object

12 Abstrakte Klassen, finale Klassen und Interfaces

Objekt-orientierte Programmierung

1. Abstrakte Klassen

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces

Einstieg in die Informatik mit Java

Programmierkurs C++ Abstrakte Klassen und Methoden

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

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

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

II.4.1 Unterklassen und Vererbung - 1 -

Algorithmen und Datenstrukturen

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

Kapitel 6. Vererbung

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

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

Vererbung und Polymorphie

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

Programmieren in Java -Eingangstest-

Info B VL 8: Abstrakte Klassen & Interfaces

Tag 8 Repetitorium Informatik (Java)

5.6 Vererbung. Vererbung

EINI LW. Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Konzepte der Programmiersprachen

Kapitel 6. Vererbung

Tücken der dynamischen Bindung

Einführung in die Programmierung Wintersemester 2016/17

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Objektorientierte Programmierung Studiengang Medieninformatik

Kapitel 6. Vererbung

Java Vererbung. Inhalt

Programmieren 1 09 Vererbung und Polymorphie

Programmieren in Java

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

13. Tutorium zu Programmieren

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

7. Übung Informatik II - Objektorientierte Programmierung

Programmiermethodik 3. Klausur Lösung

Statische Methoden, Vererbung, Benutzereingabe

Prinzipien Objektorientierter Programmierung

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

Oberfläche von Körpern

Raum- und Flächenmessung bei Körpern

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

Vererbung, Polymorphismus

Vererbung. Oberklassen und Unterklassen

Algorithmen und Datenstrukturen 07

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

Wiederholungsklausur "ADP" WS 2016/2017

3 Objektorientierte Konzepte in Java

Javakurs für Anfänger

Javakurs für Anfänger

Transkript:

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 8 F. Forster, T. Gawlitza, A. Flexeder 7. Dezember 2007 Übungen zu Praktikum Grundlagen der Programmierung Aufgabe 40 Vererbung (Lösungsvorschlag) a) Eine geeignete Modellierung würde folgendermaÿen aussehen: Prisma # hoehe: Double + mantelflaeche(): Double + oberflaeche(): Double + mvolumen(): Double + comparevolumento(prisma p): Integer RegelmaessigesPrisma # seite: Double Wuerfel Quader! laenge: Double! breite: Double Zylinder! radius: Double RegelmaessigesDreiecksPrisma QuadratischerQuader RegelmaessigesSechsecksPrisma b) Die Operationen inhaltgrundflaeche() und umfanggrundflaeche() sind von der Grundäche des konkreten Prismas abhängig und können erst dort implementiert werden. Alle anderen Operationen können bereits in der Klasse Prisma implementiert werden und diese Implementierung an alle Unterklassen zur Wiederverwendung vererben. Dabei stützen sie sich teilweise auf die beiden Operationen inhaltgrundflaeche() und umfanggrundflaeche() ab. c) Die Oberklasse Prisma für beliebige gerade Prismen:

Lösung 8/ Seite 2 public class Prisma { // Gemeinsames Attribut aller Prismen ist die Hoehe: protected double hoehe; public Prisma (double h) { hoehe = h; // Die Operationen umfanggrundflaeche() und inhaltgrundflaeche() // sind abhaengig von der Form des konkreten Prismas und werden // hier nur aus technischen Gruenden definiert; // In den verschiedenen Unterklassen muessen diese Methoden dann // ueberschrieben werden. Später werden sie // durch abstrakte Methoden ersetzt: public double umfanggrundflaeche(){ public double inhaltgrundflaeche(){ // Die anderen Operationen koennen bereits in dieser Klasse implementiert // werden: public double mantelflaeche() { return umfanggrundflaeche() * hoehe; public double oberflaeche() { return mantelflaeche() + 2 * inhaltgrundflaeche(); public double volumen() { return inhaltgrundflaeche() * hoehe; public int comparevolumento(prisma p) { double v1 = volumen(); double v2 = p.volumen(); if (v1 < v2) return -1; else if (v1 > v2) return 1; else Die Klasse Wuerfel als Unterklasse von Prisma: public class Wuerfel extends Prisma {

Lösung 8/ Seite 3 public Wuerfel(double h) { return 4 * hoehe; return hoehe * hoehe; Die Klasse Quader als Unterklasse von Prisma: public class Quader extends Prisma { // Zusaetzlich sind die Attribute Laenge und Breite der Grundflaeche // noetig: private double laenge; private double breite; public Quader(double h, double l, double b) { laenge = l; breite = b; return 2 * (laenge + breite); return laenge * breite; Die Klasse Zylinder als Unterklasse von Prisma: public class Zylinder extends Prisma { // Zusaetzlich ist das Attribute Radius Grundflaeche noetig: private double radius;

Lösung 8/ Seite 4 public Zylinder (double h, double r) { radius = r; return 2 * radius * Math.PI; return radius * radius * Math.PI; Die Klasse RegelmaessigesPrisma als Unterklasse von Prisma und Oberklasse für alle regelmäÿigen Prismen: public class RegelmaessigesPrisma extends Prisma { // alle Grundflaechen regelmaessiger Prismen sind gleichseitige // Vielecke. Als zusaetzliches Attribut genuegt die Seitenlaenge: protected double seite; public RegelmaessigesPrisma(double h, double s) { seite = s; Die Klasse RegelmaessigesSechsecksPrisma als Unterklasse von RegelmaessigesPrisma: public class RegelmaessigesSechsecksPrisma extends RegelmaessigesPrisma { public RegelmaessigesSechsecksPrisma(double h, double s) { super(s, h); return 6 * seite; return 3 * seite * seite * Math.sqrt(3) / 2;

Lösung 8/ Seite 5 Aufgabe 41 Überladen vs. Überschreiben (Lösungsvorschlag) a) zur Compilierzeit: betrachte die Signatur der Funktion: Funktionsname und Typ der Parameter (nur die Deklaration ist entscheidend) b) zur Laufzeit: Entscheidung welche Funktion (welcher Klasse) aufgerufen wird Folgende Ausgaben werden produziert: bin Methode f in Klasse A bin Methode g in Klasse A bin Methode f in Klasse B bin Methode g in Klasse A bin Methode g in Klasse C; bin Methode f in Klasse A bin Methode g in Klasse C; bin Methode f in Klasse B bin Methode f in Klasse A; bin Methode f in Klasse D mit Typ A bin Methode f in Klasse B; bin Methode f in Klasse D mit Typ A bin Methode f in Klasse B; bin Methode f in Klasse D mit Typ B