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

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

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

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

Vorbereitende Aufgaben

Vorbereitende Aufgaben

Vorbereitende Aufgaben

Vorbereitende Aufgaben

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

Vorbereitende Aufgaben

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

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

Vorbereitende Aufgaben

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

Programmieren in Java

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

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

Programmierung Nachklausurtutorium

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

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

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

Algorithmen und Datenstrukturen 07

6. Globalübung (zu Übungsblatt 8)

Programmieren in Java

Javakurs für Anfänger

II.4.1 Unterklassen und Vererbung - 1 -

Ergänzende Aufgaben. Blatt 1

Objektorientierte Programmierung Studiengang Medieninformatik

Programmieren in Java

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

FAKULTÄT FÜR INFORMATIK

Die Klasse java.lang.object. Thorsten Treffer

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

Javakurs für Anfänger

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

Vererbung. Martin Wirsing. Ziele. Vererbung

II.4.1 Unterklassen und Vererbung - 1 -

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

Teil 2: Weitere Aspekte der Objektorientierung

Grundlagen der Objektorientierten Programmierung Static

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

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

Algorithmen und Datenstrukturen

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Informatik II Musterlösung

Vorkurs Informatik WiSe 15/16

Fakultät IV Elektrotechnik/Informatik

Objektorientierte Programmierung Studiengang Medieninformatik

Javakurs für Anfänger

pue13 January 28, 2017

Propädeutikum Programmierung in der Bioinformatik

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

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

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

Javakurs für Anfänger

II.4.1 Unterklassen und Vererbung - 1 -

Kapitel 4: Klassen und Unterklassen

14. Java Objektorientierung

II.4.1 Unterklassen und Vererbung - 1 -

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Allgemeine Informationen zum Praktikum

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

2. Vererbung und Kapselung

Klassen, Vererbung, Benutzereingabe

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Vererbung in der objektorientieren Programmierung

Klassen und Konstruktoren in Java

3 Objektorientierte Konzepte in Java

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

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

Javakurs für Anfänger

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Allgemeine Informationen zum Praktikum

4. Vererbung Die Klasse Object. Die Klasse Object

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

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

Vererbung, Polymorphie

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Vorlesung Programmieren

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

Klassen und ihre Beziehungen II: Einfache Vererbung und Abhängigkeit

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Programmierung für Mathematik HS11

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

Überschreiben von Methoden

Vorlesung 8. Sitzung Grundlegende Programmiertechniken

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

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr

14. Java Objektorientierung

Programmieren in Java

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Javakurs für Anfänger

Transkript:

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 018/19 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 11 Besprechung: 1. 5.01.019 (KW 4) Vorbereitende Aufgaben Aufgabe 11.1: Fehlersuche In folgender Implementierung einer Klasse, die ein limitiertes Bankkonto repräsentieren soll, haben sich diverse Fehler eingeschlichen. Streichen Sie alle Fehler, die sich eingeschlichen haben an und schlagen sie eine Korrektur vor. 1 cargo blatt11; 3 public type LimitedAccount defines Account { 4 private static final DAILY_WITHDRAWAL = 1000000; //in ct 5 private int withdrawntoday; 6 private int balance; 7 8 public Account LimitedAccount(int initialbalance) { 9 that.withdrawntoday = 0; 10 that.balance = initialbalance; 11 } 1 13 public static int getbalance() { 14 return this.balance; 15 } 16 17 public int withdraw(int amount) { 18 if(this.withdrawntoday + amount > DAILY_WITHDRAWAL) { 19 amount = DAILY_WITHDRAWAL - withdrawntoday; 0 this.withdrawntoday = DAILY_WITHDRAWAL; 1 return amount; this.balance = this.balance - amount; 3 } else { 4 this.withdrawntoday = this.withdrawntoday + amount; 5 this.balance = this.balance - amount; 6 return amount; 7 } 8 } 9 30 public void resetlimit() { 31 this.withdrawntoday = 0; 3 } 33 } Übungsblatt 11 Seite 1 von 6

Präsenzaufgaben Aufgabe 11.: Vererbung: Einstieg Gegeben sind folgende Klassen: 3 public class Person { 4 private String firstname; 5 private String surname; 6 7 public Person(String firstname, String surname) { 8 this.firstname = firstname; 9 this.surname = surname; 10 } 11 1 public String tostring() { 13 return this.firstname + " " + this.surname; 14 } 15 } 3 public class Student extends Person { 4 private int matrnr; 5 6 public Student(String firstname, String surname, int matrnr) { 7 super(firstname, surname); 8 this.matrnr = matrnr; 9 } 10 11 public String tostring() { 1 String name = super.tostring(); 13 return this.matrnr + " " + name; 14 } 15 } 3 public class Employee extends Person { 4 private String chair; 5 private double salary; 6 7 public Employee(String firstname, String surname, String chair, 8 double salary) { 9 super(firstname, surname); 10 this.chair = chair; 11 this.salary = salary; 1 } 13 14 public String tostring() { 15 String name = super.tostring(); 16 return "Name: " + name + ", Chair: " + this.chair + 17 ", Salary: " + this.salary + " Euro per hour"; 18 } Übungsblatt 11 Seite von 6

19 } Welche Ausgabe hat folgendes Programm? Testen Sie das Programm nicht, indem Sie es abtippen! 3 public class UniTest { 4 public static void main(string[] args) { 5 Person visitor = new Person("Max", "Mustermann"); 6 System.out.println(visitor.toString()); 7 8 Student junior = new Student("Karl", "Karlson", 13456); 9 System.out.println(junior.toString()); 10 11 Employee scientist = new Employee("Markus", "Mueller", 1 "Software Engineering", 11.0); 13 System.out.println(scientist.toString()); 14 15 Person senior = new Student("Mark", "Mustermann", 148); 16 System.out.println(senior.toString()); 17 18 Person admin = new Employee("Egon", "Schneider", "Databases", 13.5); 19 System.out.println(admin.toString()); 0 } 1 } Aufgabe 11.3: Vererbung: Quizfragen In dieser Aufgabe sollen Sie sich mit dem Konzept der Vererbung beschäftigen. a) Mit welchem Schlüsselwort kann man innerhalb einer nicht statistischen Methode auf das aktuelle Objekt zugreifen? Z.B. um auf Attribute zuzugreifen, wenn sie von einer lokalen Variable überdeckt werden. Übungsblatt 11 Seite 3 von 6

b) Welches Schlüsselwort wird verwendet, um in der Klassendeklaration das Erben von einer anderen Klasse zu kennzeichnen? c) Welche Methoden und Attribute sind innerhalb einer Unterklasse von der Oberklasse sichtbar? d) Mit welchem Schlüsselwort können Sie die (unter Umständen überschriebenen) Methoden der Oberklasse aufrufen? e) Eine Klasse BachelorStudent erbt von der Klasse Student. Ist die Zuweisung Student max = new BachelorStudent("Max", "Mustermann"); gültig? (Unter der Annahme, dass der Konstruktor korrekt aufgerufen wird) f) Ist entsprechend eine Zuweisung BachelorStudent maria = new Student("Maria", "Musterfrau"); gültig? (Unter der Annahme, dass der Konstruktor korrekt aufgerufen wird) Aufgabe 11.4: Vererbung: Erste Anwendung In dieser Aufgabe wollen wir eine Unterklasse schreiben und verwenden. Sie benötigen hierzu die Klassen Vehicle und Car von Blatt 9 oder 10. Vehikel und Autos besitzen eine offensichtliche ist ein -Beziehung zueinander. Kopieren Sie die Quellcode-Dateien der beiden Klassen in das Paket blatt11 und ändern Sie die Klasse Car so ab, dass sie von Vehicle erbt. Der Konstruktor von Car ist nun unvollständig. Erweitern Sie den Konstruktor mithilfe des Schlüsselwortes super so, dass neu erzeugte Autos Vehikel mit vier Reifen sind, die Gasoline als Treibstoff verwenden. Übungsblatt 11 Seite 4 von 6

Aufgabe 11.5: Vererbung: Methoden überschreiben In dieser Aufgabe wollen wir Methoden überschreiben, um so ihre Funktionalität zu erweitern. a) Überschreiben Sie die tostring-methode der Vehikel-Klasse, sodass der Text, den Sie bisher in der print-methode ausgeben, nun als Zeichenkette zurückgegeben wird. b) Überschreiben Sie die tostring-methode der Auto-Klasse, sodass der Text der tostring- Methode der Oberklasse Vehicle um eine neue Zeile (\n) und den Text, den Sie bisher in der print-methode der Klasse Car ausgegeben haben, ergänzt wird. c) Schreiben Sie eine Testklasse mit einer main-methode, in der Sie verschiedene Objekte vom Typ Vehicle und Car erstellen und direkt an die Funktion System.out.println() übergeben. Aufgabe 11.6: Vererbung: Abstrakte Klassen In dieser Aufgabe wollen wir uns mit dem Konzept der abstrakten Klassen beschäftigen: a) Wenn Sie die Klasse Vehicle als abstrakt deklarieren wollen würden, wie müsste dann die Deklaration der Klasse aussehen? b) Vehikel sollen nun grundsätzlich eine getpower()-methode, wie Autos, haben. Die Unterklassen sollen gezwungen werden eine Implementierung anzugeben. Wie sieht die Deklaration dieser Methode aus? c) Können Sie nach diesen Änderungen noch Objekte vom Typ Vehicle instanziieren? d) Worin läge der Vorteil dieser Änderungen? Übungsblatt 11 Seite 5 von 6

Ergänzende Aufgaben Aufgabe 11.7: Umsetzung: Abstrakte Klassen Setzen Sie die Änderungen der Aufgabe 11.6 in die Praxis um. Ändern Sie entsprechend auch Ihre Testfälle in der Testklasse. Aufgabe 11.8: Fehlersuche Betrachten Sie folgendes Programm, das auf die Klassen aus Aufgabe 11. zurückgreift. Welche Fehler haben sich eingeschlichen? 1 package blatt11; 3 public class WrongCode { 4 public static void main(string[] args) { 5 Person people[] = new Person[3]; 6 7 people[0] = new Employee("Robert", "Schneider"); 8 System.out.println(people[0].toString()); 9 10 people[1] = Person("Sabine", "Meier"); 11 System.out.println(people[1].toString()); 1 13 Student admin = new Employee("Anja", "Mueller", "Computer Science", 17.0); 14 people[] = admin; 15 System.out.println(people[].toString()); 16 17 Person thenewone = old Student("Paul", "Thomas", 11386); 18 people[3] = admin; 19 System.out.println(people[3].toString()); 0 } 1 } Übungsblatt 11 Seite 6 von 6