13. Tutorium zu Programmieren



Ähnliche Dokumente
5. Tutorium zu Programmieren

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

Programmieren Tutorium

Java: Vererbung. Teil 3: super()

Typumwandlungen bei Referenztypen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Tutorium 5 - Programmieren

Programmieren in Java

Objektorientierte Programmierung. Kapitel 12: Interfaces

Java Kurs für Anfänger Einheit 5 Methoden

Was meinen die Leute eigentlich mit: Grexit?

14. Tutorium zu Programmieren

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

1 Vom Problem zum Programm

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Programmierkurs Java

4 Vererbung, Polymorphie

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Kapitel 6. Vererbung

5. Abstrakte Klassen

Java Einführung Abstrakte Klassen und Interfaces

Einführung in die Java- Programmierung

Professionelle Seminare im Bereich MS-Office

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Vorkurs C++ Programmierung

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Prinzipien Objektorientierter Programmierung

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Einführung in die Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

SEMINAR Modifikation für die Nutzung des Community Builders

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Objektorientierte Programmierung

Wirtschaftsinformatik I

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Eine Anwendung mit InstantRails 1.7

Grundlagen von Python

Objektorientierte Programmierung OOP

Einführung in die Programmierung (EPR)

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

! " # $ " % & Nicki Wruck worldwidewruck

Software Engineering Klassendiagramme Assoziationen

Kurzanleitung MAN E-Learning (WBT)

Übungen zu C++ Kapitel 1

Objektorientierte Programmierung

Anleitung zur Benutzung des jobup.ch Stellensuchendekontos

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

TYPO3 Super Admin Handbuch

Graphic Coding. Klausur. 9. Februar Kurs A

Das Leitbild vom Verein WIR

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Was ich als Bürgermeister für Lübbecke tun möchte

EINFACHES HAUSHALT- KASSABUCH

Zählen von Objekten einer bestimmten Klasse

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Javakurs zu Informatik I. Henning Heitkötter

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

s zu Hause lesen

Vererbung & Schnittstellen in C#

SEP 114. Design by Contract

Dokumentation für das Spiel Pong

Überblick. Lineares Suchen

Bauteilattribute als Sachdaten anzeigen

FIS: Projektdaten auf den Internetseiten ausgeben

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Übungen Programmieren 1 Felix Rohrer. Übungen

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

3 Objektorientierte Konzepte in Java

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Das Persönliche Budget in verständlicher Sprache

Zimmertypen. Zimmertypen anlegen

Übung 9 - Lösungsvorschlag

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Regeln für das Qualitäts-Siegel

Anwendungsbeispiele Buchhaltung

Leichte-Sprache-Bilder

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

OO Softwareentwicklung

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einführung in die Programmierung

Spam filtern mit dem Webmail-Interface

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Anleitung über den Umgang mit Schildern

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Algorithmen und Datenstrukturen

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Transkript:

13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting / Universität Karlsruhe (TH)

Was machen wir heute? 1 Rückblick 2 Allgemeines 3 Abschlußaufgabe 2 4 Fortsetzung Vererbung Was bisher geschah... Heute: Fortsetzung 5 Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 2 / 27

Übersicht Rückblick 1 Rückblick 2 Allgemeines 3 Abschlußaufgabe 2 4 Fortsetzung Vererbung 5 Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 3 / 27

Rückblick Was haben wir letzte Woche gemacht? Vererbung Fragen dazu? Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 4 / 27

Übersicht Allgemeines 1 Rückblick 2 Allgemeines 3 Abschlußaufgabe 2 4 Fortsetzung Vererbung 5 Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 5 / 27

Allgemeines Anmeldung Übungsschein Meldet euch für den Übungsschein an! Anmeldung bis 13.02. über das KIT Studierendenportal (ehem. Selbstbedienungsfunktion) Wer sich nicht sicher ist, ob er den Schein schafft: Trotzdem anmelden, Schein kann beliebig oft wiederholt werden! Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 6 / 27

Übersicht Abschlußaufgabe 2 1 Rückblick 2 Allgemeines 3 Abschlußaufgabe 2 4 Fortsetzung Vererbung 5 Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 7 / 27

Abschlußaufgabe 2 Es ist soweit! Die 2. Abschlußaufgabe ist verfügbar! Testfälle in Tests.txt abgeben Umfassende Tests machen, die möglichst viele Fälle abdecken! Abgabe bis zum 31. März, 10 Uhr! Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 8 / 27

Übersicht Fortsetzung Vererbung 1 Rückblick 2 Allgemeines 3 Abschlußaufgabe 2 4 Fortsetzung Vererbung Was bisher geschah... Heute: Fortsetzung 5 Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 9 / 27

Code Fortsetzung Vererbung Was bisher geschah... class Hund { int anzahlbeine = 4; void bellen() { Terminal.println("wau"); class Dackel extends Hund { @override void bellen() { Terminal.println("wiff"); class Bullterrier extends Hund { @override void bellen() { Terminal.println("kläff"); void angreifen() {... Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 10 / 27

Fortsetzung Vererbung Was bisher geschah... Vererbung Dackel und Bullterrier erben nun von Hund. Das bedeutet, sie übernehmen (erben) von der Klasse Hund die Methoden Attribute und ergänzen diese. Ein Dackel ist zeitgleich auch vom Typ Hund. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 11 / 27

Umgang - Code Fortsetzung Vererbung Was bisher geschah... Beispiel Hund h = new Bullterrier(); Bullterrier b = new Bullterrier(); Terminal.println(b.anzahlBeine); Terminal.println(h.anzahlBeine); b.angreifen(); Ein Dackel ist ein Hund, aber kein Bullterrier. Die Anweisung: Bullterrier b = new Dackel(); ist also nicht möglich. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 12 / 27

Ober- und Unterklasse Fortsetzung Vererbung Was bisher geschah... Hund ist Oberklasse von Dackel und Bullterrier. Dackel und Bullterrier sind Unterklassen von Hund. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 13 / 27

Fortsetzung Vererbung Überschreiben von Methoden Was bisher geschah... Methoden der Oberklasse können überschrieben werden. Dazu annotiert man die überschriebene Methode mit @override. Beispiel class Dackel extends Hund { @override void bellen() { Terminal.println("wiff"); Attribute können nicht überschrieben werden. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 14 / 27

Dynamische Bindung Fortsetzung Vererbung Was bisher geschah... Es wird immer die Methode des Laufzeittyps ausgeführt. Wird die Methode dort nicht gefunden, wird in der Klassenhierarchie nach oben weitergesucht. Beispiel Hund h = new Hund(); h.bellen(); Hund h = new Dackel(); h.bellen(); Hund h = new Bullterrier(); h.bellen(); Was wird hier ausgegeben? Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 15 / 27

super Fortsetzung Vererbung Heute: Fortsetzung Mit super kann innerhalb einer Klasse, die von einer anderen erbt, auf ihre Oberklasse zugegriffen werden. Syntaktisch wird super dabei ähnlich wie this verwendet. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 16 / 27

Beispiel zu super Fortsetzung Vererbung Heute: Fortsetzung class Hund { Hund() { Terminal.println("Ein Hund ist geboren!"); void bellen() { Terminal.println("wau"); class Dackel extends Hund { Dackel() { super(); Terminal.println("...und siehe da: Es ist ein Dackel!"); void bellen() { super.bellen(); Terminal.println("wiff"); Was wird bei Ausführung der folgenden Codezeilen ausgegeben? Hund h = new Hund(); Hund hd = new Dackel(); Dackel d = new Dackel(); d.bellen(); Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 17 / 27

instanceof Fortsetzung Vererbung Heute: Fortsetzung Mit instanceof kann man überprüfen, ob ein Objekt eine Instanz einer bestimmten Klasse ist, ob dieses Objekt also (auch) von diesem Typ ist. void testehund(hund h) { if (h instanceof Dackel) { Terminal.println("Ich bin ein Dackel"); else { Terminal.println("Ich bin irgendein Hund"); Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 18 / 27

Fortsetzung Vererbung Heute: Fortsetzung Beispiel zu instanceof Sei folgendes Code-Fragment gegeben: Hund h = new Hund(); Hund hd = new Dackel(); Dackel d = new Dackel(); Bullterrier b = new Bullterrier(); Was wird jeweils bei Aufruf von testehund(...) mit einem der Objekte als Parameter ausgeben? Kommt es zu einem Fehler? Was liefern folgende Vergleiche zurück? h instanceof Hund h instanceof Dackel d instanceof Hund d instanceof Bullterrier hd instanceof Dackel Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 19 / 27

Type-Casting Fortsetzung Vererbung Heute: Fortsetzung Typ1 objekt1 = new Typ1(); Typ2 objekt2 = (Typ2) objekt1; Ein Objekt eines Typs kann so in ein Objekt eines anderen Typs verwandelt verwandelt werden. Achtung: Keine Überprüfung, ob Umwandlung möglich ist! Vorher mit instanceof überprüfen, ob Objekt vom jeweiligen Typ ist Es wird nur der statische Typ der Variablen geändert. Up-Cast: (Oberklassentyp) objektunterklasse ist immer möglich Down-Cast: (Unterklassentyp) objektoberklasse Gefährlich, wenn nicht geprüft, kann zu Laufzeitfehlern führen. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 20 / 27

Das Schlüsselwort final Fortsetzung Vererbung Heute: Fortsetzung Schreibt man final vor eine Klasse, kann man von dieser nicht weiter erben. Würde man also die Klasse Hund final deklarieren: final class Hund... könnten keine andere Klasse mehr von Hund erben, class Dackel extends Hund... würde also zu einem Fehler führen. Vergleiche Utility-Klasse, hier ist genau dieses Verhalten gewünscht (warum?). Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 21 / 27

Fortsetzung Vererbung Vererbung und Generics Heute: Fortsetzung In Zusammenhang mit Generics kann man Vererbung dazu nutzen, einen variablen Datentyp auf alle Klassen einzuschränken, die von einer bestimmten Klasse erben. Erinnerung: Die generische Point-Klasse aus Tutorium 11 war unbrauchbar, weil sie Punkte aus jeder Art von Objekten erzeugen konnte. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 22 / 27

Fortsetzung Vererbung Heute: Fortsetzung Beispiel: Point als generische Klasse class Point<T extends Number> { T x; T y; Point(T x, T y) { this.x = x; this.y = y; public T getx() { return x; public T gety() { return y; public String tostring() { return "("+x.tostring()+","+y.tostring()+")"; Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 23 / 27

Fortsetzung Vererbung Heute: Fortsetzung Beispiel: Point als generische Klasse In der Zeile class Point<T extends Number> wird der unbekannte (generische) Datentyp T auf alle Klassen eingeschränkt, die von Number erben. Das sind z. B. Integer, Double usw. Point<Integer> p1 = new Point<Integer>(2, 3); funktioniert also weiterhin, während Point<String> p1 = new Point<String>(...); zu einem Fehler führt. Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 24 / 27

Übersicht Schluss 1 Rückblick 2 Allgemeines 3 Abschlußaufgabe 2 4 Fortsetzung Vererbung 5 Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 25 / 27

Schluss Ausblick Was machen wir nächste Woche? Besprechung des 6. Übungsblattes Letzte Fragen und Schwierigkeiten klären Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 26 / 27

Schluss Dennis Ewert (Gruppe 6) Programmieren 13. Tutorium WS 2008/2009 27 / 27