Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. 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 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

Vorbereitende Aufgaben

Vorbereitende Aufgaben

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

Vorbereitende Aufgaben

Vorbereitende Aufgaben

Vorbereitende Aufgaben

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

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 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 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 2017/18. Vorbereitende Aufgaben

Programmieren in Java

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

Algorithmen und Datenstrukturen 07

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 LogWings und WiMas Wintersemester 2013/14

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

Ergänzende Aufgaben. Blatt 1

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

Programmierung Nachklausurtutorium

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

Teil 2: Weitere Aspekte der Objektorientierung

Die Klasse java.lang.object. Thorsten Treffer

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

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

Repetitorium Informatik (Java)

Algorithmen und Datenstrukturen

6. Globalübung (zu Übungsblatt 8)

Objektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

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

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

Tag 7 Repetitorium Informatik (Java)

Javakurs für Anfänger

Programmierung für Mathematik HS11

Programmieren in Java

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

Android will doch nur spielen. Java Übung

Java für Bauingenieure

Javakurs für Anfänger

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

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom bis zum 4.6.

Javakurs für Anfänger

Erste Java-Programme (Java Wiederholung & Vererbung)

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

Tag 4 Repetitorium Informatik (Java)

Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.

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

FAKULTÄT FÜR INFORMATIK

Propädeutikum Programmierung in der Bioinformatik

Klausur Grundlagen der Programmierung

Objektorientierte Programmierung Studiengang Medieninformatik

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

Vorkurs Informatik WiSe 15/16

Tag 8 Repetitorium Informatik (Java)

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

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

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

pue13 January 28, 2017

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Objektorientierte Programmierung Studiengang Medieninformatik

Programmieren in Java

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Statische Methoden, Vererbung, Benutzereingabe

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

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

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

Methoden und Wrapperklassen

Grundlagen der Objektorientierten Programmierung Static

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

Statische Methoden, Vererbung, Benutzereingabe

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

Statische Methoden, Vererbung, Benutzereingabe

Vererbung in der objektorientieren Programmierung

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

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

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

Javakurs für Anfänger

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

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Javakurs für Anfänger

Objektorientiertes Programmieren (Java)

Wiederholung. Klassenhierarchie:

Anregungen zu Übung 2

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

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

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

Transkript:

Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 016/17 Übungsblatt 10 Besprechung: 3.01. 7.01.017 (KW 4) Vorbereitende Aufgaben Aufgabe 10.1: Wiederholung: Klammern Geben Sie an, wofür folgende Klammern in Java verwendet werden. [... ] (... ) {... } Übungsblatt 10 Seite 1 von 9

Aufgabe 10.: Wiederholung: Funktionsparameter Geben Sie einen geeigneten Methodenkopf für die folgenden öffentlichen, statischen Funktionen an. Eine Funktion average, die den Durchschnitt eines double-arrays berechnet. Beispielantwort: public static double average(double[] array) Eine Funktion plus, die zwei rationale Zahlen miteinander addiert und die Summe zurückgibt. Eine Funktion countwords, die die Wörter in einem String zählt und zurückgibt. Eine Funktion printmaximum, die das Maximum eines int-arrays mit System.out.println auf dem Bildschirm ausgibt. Eine Funktion times, die einen Integer n und einen Integer x entgegen nimmt und ein n Elemente langes Array, gefüllt mit dem Wert x zurückgibt. Übungsblatt 10 Seite von 9

Präsenzaufgaben Aufgabe 10.3: Objektvariablen und -methoden vs. Klassenvariablen und -methoden In dieser Aufgabe sollen Sie sich mit der unterschiedlichen Verwendung von Objekt- und Klassenelementen vertraut machen. Manche Zuweisungen und Methodenaufrufe sind im unteren Programm nicht erlaubt (vgl. dazu Folien 39 4 in Kapitel 6). Notieren Sie auf den Linien neben dem Programmtext, ob die jeweilige Zuweisung oder der jeweilige Methodenaufruf erlaubt ist oder nicht. 1 class Tester { int var1; 3 static int var; 4 5 void test1() { 6 var1++; 7 var--; 8 } 9 10 static void test() { 11 var1++; 1 var--; 13 } 14 15 public static void main(string[] args) { 16 var1 = 1; 17 var = 1; 18 test1(); 19 test(); 0 1 Tester testobjekt = new Tester(); testobjekt.var1 = ; 3 testobjekt.var = ; 4 testobjekt.test1(); 5 testobjekt.test(); 6 7 Tester.var1 = 3; 8 Tester.var = 3; 9 Tester.test1(); 30 Tester.test(); 31 } 3 } Übungsblatt 10 Seite 3 von 9

Aufgabe 10.4: 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 } 19 } Übungsblatt 10 Seite 4 von 9

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 } Übungsblatt 10 Seite 5 von 9

Aufgabe 10.5: Vererbung: Quizfragen In dieser Aufgabe sollen Sie sich mit dem Konzept der Vererbung beschäftigen. 1. Mit welchem Schlüsselwort kann man auf das aktuelle Objekt zugreifen? Z. B. um auf dessen Attribute zuzugreifen, wenn sie von einer lokalen Variable überlagert werden.. Welches Schlüsselwort wird verwendet um in der Klassendeklaration das Erben von einer anderen Klasse zu kennzeichnen? 3. Welche Methoden und Attribute sind innerhalb einer Unterklasse von der Oberklasse sichtbar? 4. Mit welchem Schlüsselwort können Sie (unter Umständen überschriebene) Methoden der Oberklasse aufrufen? 5. 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) 6. Ist entsprechend eine Zuweisung BachelorStudent maria = new Student("Maria", "Musterfrau"); gültig? (Unter der Annahme, dass der Konstruktor korrekt aufgerufen wird) Übungsblatt 10 Seite 6 von 9

Aufgabe 10.6: Vererbung: Erste Anwendung In dieser Aufgabe sollen Sie eine Unterklasse schreiben und verwenden. Sie benötigen hierzu eine funktionierende Lösung der Aufgaben aus Blatt 9. Auf dem letzten Blatt haben Sie Klassen für Vehikel und Autos geschrieben. Diese besitzen eine offensichtliche ist ein -Eigenschaft zueinander. Kopieren Sie die Quellcode-Dateien der beiden Klassen in das Paket blatt10 und ändern Sie die Klasse Car so ab, dass sie nun von Vehicle erbt! Der Konstruktor von Car ist nun unvollständig. Erweitern Sie den Konstruktor mit Hilfe des Schlüsselwortes super so, dass neu erzeugte Autos Vehikel mit vier Reifen sind, die Benzin als Treibstoff verwenden. Aufgabe 10.7: Vererbung: Methoden Überschreiben In dieser Aufgabe sollen Sie Methoden überschreiben um so ihre Funktionalität zu erweitern. Überschreiben Sie die tostring-methode der Vehikel-Klasse, so dass der Text, den Sie bisher in der print-methode ausgeben nun als Zeichenkette zurückgeben. Überschreiben Sie die tostring-methode der Auto-Klasse, so dass der Text der tostring- Methode der Oberklasse (Vehicle) um eine neue Zeile (\n) und dem Text, den Sie bisher in der print-methode ausgegeben haben, erweitert und zurückgegeben wird. Schreiben Sie eine Testklasse mit main-methode, in der Sie verschiedene Objekte vom Typ Vehicle und Car erstellen und direkt an die Funktion System.out.println() übergeben. Übungsblatt 10 Seite 7 von 9

Aufgabe 10.8: Vererbung: abstrakte Klassen In dieser Aufgabe sollen Sie sich mit dem Konzept abstrakter Klassen auseinandersetzen: Wenn Sie die Klasse Vehicle als Abstrakt deklarieren wollen würden, wie müsste dann die Deklaration der Klasse aussehen? Vehikel sollen nun grundsätzlich eine getpower()-methode, wie die Auto-Klasse, haben. Die Unterklassen sollen gezwungen werden eine Implementierung anzugeben. Wie sieht die Deklaration dieser Methode aus? Können Sie nach diesen Änderungen noch Objekte vom Typ Vehicle instanziieren? Worin läge der Vorteil dieser Änderungen? Übungsblatt 10 Seite 8 von 9

Ergänzende Aufgaben Aufgabe 10.9: Umsetzung Setzen Sie die Änderungen der Aufgabe 10.8 in die Praxis um. Ändern Sie entsprechend auch Ihre Testfälle in der Testklasse. Aufgabe 10.10: Fehlersuche Betrachten Sie folgendes Programm, das auf die Klassen aus Aufgabe 10.4 zurückgreift. Welche Fehler haben sich eingeschlichen? 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 = new Student("Paul", "Thomas", 11386); 18 people[3] = admin; 19 System.out.println(people[3].toString()); 0 } 1 } Übungsblatt 10 Seite 9 von 9