Grundkonstrukte der Objektorientierung in Java, C# und C++



Ähnliche Dokumente
Software Entwicklung II (SS12)

Prinzipien Objektorientierter Programmierung

Java Einführung Abstrakte Klassen und Interfaces

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

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Programmieren in Java

Vererbung & Schnittstellen in C#

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

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

Abschnitt 9: Schnittstellen: Interfaces

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

Typumwandlungen bei Referenztypen

MCRServlet Table of contents

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger

Whitebox-Vererbung vs. Blackbox-Vererbung. - Begriffsbestimmung - Vererbung öffentliche Vererbung private Vererbung - Zusammenfassung

Objektorientierte Programmierung. Kapitel 12: Interfaces

4. AuD Tafelübung T-C3

Objektorientiertes JavaScript

5. Abstrakte Klassen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Einführung in die Programmierung

Gezielt über Folien hinweg springen

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Java: Vererbung. Teil 3: super()

IT-SICHERHEIT IM UNTERNEHMEN Mehr Sicherheit für Ihre Entscheidung

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

WebService in Java SE und EE

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Objektorientierte Programmierung OOP

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

Factory Method (Virtual Constructor)

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

Der lokale und verteilte Fall

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Kapitel 4. Mehrfachvererbung. Beispiel 1: typische Diamant Struktur. Person. Hiwi

Aktivierung von Makros in den Erfassungshilfen

Wir machen neue Politik für Baden-Württemberg

U08 Entwurfsmuster (II)

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Versandtaschen - dm Folien

Drucken in den Pools

So gehts Schritt-für-Schritt-Anleitung

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Objektorientierte Programmierung

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Objektorientierte Programmierung

Leitfaden: geoport in FlowFact

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

Sehr geehrte Damen und Herren

Anleitung zur Verwendung der VVW-Word-Vorlagen

Um unsere Gemeindewebseite für Ihre Zwecke zu nutzen, haben Sie folgende Möglichkeiten:

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Weiterbildungen 2014/15

Erfahrungen mit Hartz IV- Empfängern

Barcodedatei importieren

Webalizer HOWTO. Stand:

Praktikum: Einstieg: Arbeitsplatz, JCreator

Skript Pilotphase für Arbeitsgelegenheiten

1. Das Team. 1.1 Jonathan Thierron

E-Finance Java de PF

Nathan Burgener. Design by Contract. Modul SWE

Reservistenkameradschaft Limburg -»Nassauer Löwe«im Verband der Reservisten der Deutschen Bundeswehr e.v.

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

Erste Schritte ANLEITUNG Deutsche Sportausweis Vereinsverwaltung Schnittstelle zum Portal des Deutschen Sportausweises unter

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

united-domains.de Jetzt Partner werden!

Objektorientierung: Klassen und Objekte

Großbeerener Spielplatzpaten

Simon die linke Hand des Handwerks

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

Avenue Oldtimer Liebhaber- und Sammlerfahrzeuge. Ihre Leidenschaft, gut versichert

Objektbasierte Entwicklung

ADDISON Aktenlösung Automatischer Rewe-Import. Technische Beschreibung

Vorankündigung Die Verlagsleitung und der Erfolgsautor der Blauen Business-Reihe ist auf der Frankfurter Buchmesse 2007 vertreten.

C# im Vergleich zu Java

Programmierkurs Java

Schuljahreswechsel im Schul-Webportal

Wege zur Patientensicherheit - Fragebogen zum Lernzielkatalog für Kompetenzen in der Patientensicherheit

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Klausur GUI-Entwicklung WS10/11 1.Termin

«Die praktische letzte Seite: Piktogramme» Mario Somazzi, Nr. 3/2013-2/2014, S. 40

Was macht Layer2 eigentlich? Erfahren Sie hier ein wenig mehr über uns.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Anleitung für die Hausverwaltung

Anzeige von eingescannten Rechnungen

Wareneingangsbuchung und Rechnungsprüfung. Tipps & Tricks

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Forum des Freundeskreises der Flüchtlinge Rutesheim:


Große Übung Praktische Informatik 1

Transaktionsempfehlungen im ebase Online nutzen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Übungen zu Softwaretechnik

Folge 18 - Vererbung

SMS-Tool. Seite 1 von 8

Transkript:

Grundkonstrukte der Objektorientierung in Java, C# und C++ 2 Viele Patterns basieren auf einer Kombination einiger zentraler Modellierungskonstrukte, namentlich auf Schnittstellen- und Implementierungsvererbung sowie abstrakten und konkreten Klassen. In diesem Abschnitt zeigen wir Ihnen zu diesen Konstrukten einige Möglichkeiten zur Implementierung in den Sprachen Java, C# und C++ auf. Die kleine, aber feine Smalltalk-Gemeinde möge uns diese Auswahl verzeihen die normative Kraft des Faktischen siegt eben häufig über den Sachverstand. 2.1 Vererbung Java und C# unterstützen einfache Implementierungsvererbung, aber mehrfache Schnittstellenvererbung. Java kennzeichnet Schnittstellenvererbung durch das Schlüsselwort implements, Implementierungsvererbung durch extends. C++ unterstützt echte Mehrfachvererbung. 2.2 Abstrakte Klassen Von abstrakten Klassen können niemals Instanzen erzeugt werden. Sie dienen dazu, ihren Unterklassen sowohl Schnittstellen als auch Implementierung vorzugeben. K. Eilebrecht, G. Starke, Patterns kompakt, IT kompakt, DOI 10.1007/978-3-642-34718-4_2, Springer-Verlag Berlin Heidelberg 2013 19

20 2 Grundkonstrukte der Objektorientierung in Java, C# und C++ Java und C# kennen abstrakte Klassen, gekennzeichnet durch den abstract-modifier. C++ kennzeichnet abstrakte Klassen durch pure virtual methods. Genauer: Der Zweck von pure virtual methods ist es, dass abgeleitete Klassen ausschließlich die Schnittstelle dieser Methoden erben (und die erste nicht abstrakte Unterklasse sie zwangsläufig implementieren muss). 2.3 Beispiel: Ein Modell von Fahrzeugen Wir verwenden an dieser Stelle ein einfaches Beispiel, um Ihnen die Umsetzbarkeit der Konstrukte in den drei Programmiersprachen zu zeigen (siehe Abb. 2.1). Sie sind an dieser Stelle herzlich eingeladen, die Abstraktionen unseres Beispiels kritisch zu betrachten und das Design zu verbessern (denken Sie etwa an Amphibienfahrzeuge). Nachfolgend finden Sie exemplarische Code-Fragmente, um die in der Abbildung gezeigten Elemente Fahrzeug, Wasserfahrzeug und Fischerboot in verschiedenen Programmiersprachen zu implementieren. Unabhängig von den üblichen Programmierkonventionen für einzelne Programmiersprachen orientieren wir uns bei der Namensgebung im Code an unserem Modell. Beispielcode in Java public interface Fahrzeug { void fahren(); float getgewicht(); public abstract class Wasserfahrzeug implements Fahrzeug { public abstract float geteigengewicht(); public abstract float getzuladung(); public float getgewicht() { return (geteigengewicht()+getzuladung());

2.3 Beispiel: Ein Modell von Fahrzeugen 21 <<interface>> AnkerSupport ankerlichten() ankerwerfen() <<interface>> Fahrzeug fahren() getgewicht() <<abstract >> Wasserfahrzeug getgewicht() getzuladung() geteigengewicht() Fischerboot fahren() getzuladung() ankerlichten() fahren() Tretroller Abb. 2.1 Modell einer Ableitungshierarchie public class Fischerboot extends Wasserfahrzeug implements AnkerSupport { public float geteigengewicht() { return eigengewicht; public float getzuladung() { return zuladung; public void fahren() {

22 2 Grundkonstrukte der Objektorientierung in Java, C# und C++ public void ankerlichten() { Beispielcode in C++ Datei fahrzeug.h: class Fahrzeug { public: virtual void fahren (void) = 0; virtual float getgewicht(void) = 0; ; Datei wasserfahrzeug.h: #include <fahrzeug.h> class Wasserfahrzeug : public Fahrzeug { public: virtual float getgewicht(void); virtual float geteigengewicht(void) = 0; virtual float getzuladung(void) = 0; ; Datei fischerboot.h #include <wasserfahrzeug.h> class Fischerboot : public Wasserfahrzeug { public: void fahren(void); void ankerlichten(void); virtual float getzuladung(void); virtual float geteigengewicht(void); ; Datei fischerboot.cpp #include "fischerboot.h" void Fischerboot::fahren(void) { void Fischerboot::ankerLichten(void) {

2.3 Beispiel: Ein Modell von Fahrzeugen 23 float Fischerboot::getZuladung() { return zuladung; float Fischerboot::getEigengewicht() { return eigengewicht; Datei wasserfahrzeug.cpp #include "wasserfahrzeug.h" float Wasserfahrzeug::getGewicht(void) { return(geteigengewicht()+getzuladung()); ; Beispielcode in C# public interface Fahrzeug { void fahren(); float getgewicht(); public abstract class Wasserfahrzeug : Fahrzeug { public abstract void fahren(); public abstract float geteigengewicht(); public abstract float getzuladung(); public float getgewicht() { return (geteigengewicht()+getzuladung()); public class Fischerboot : Wasserfahrzeug, AnkerSupport { public float geteigengewicht() { return eigengewicht; public float getzuladung() { return zuladung; public override void fahren() {

24 2 Grundkonstrukte der Objektorientierung in Java, C# und C++ public void ankerlichten() {

http://www.springer.com/978-3-642-34717-7