Vererbung, Polymorphismus

Größe: px
Ab Seite anzeigen:

Download "Vererbung, Polymorphismus"

Transkript

1 Vererbung, Polymorphismus Einführung Beispiel Automobilbau: Eine Firma produziert eine Limousine Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus Ein Kunde möchte einen solchen PW, aber als Kombi? Was macht die (gute) EntwicklungsingenieurIn? Mögliche Alternativen: Sie/er baut ein neues Auto von Grund auf Sie/er übernimmt möglichst viel von der bestehenden Limousine Am besten ist sie/er dran, wenn sie bereits das erste Auto so modular (mit Hilfe von Komponenten) entwickelt hat, dass die Umwandlung in einen Kombi einfach möglich ist 2 von 48 Lösung Ziele bei der Softwareentwicklung Beispiel Automobilbau: Autokonzern entwickelt eine Grundplattform Auf dieser Plattform können verschiedene Modelle verschiedener Marken aufgebaut werden Individualisierung geschieht über unterschiedliche Ausrüstung (=Erweiterung) Motorisierung (=Anpassung), etc. Vorteile: Hohe Entwicklungskosten können besser amortisiert werden Neue Modelle können schneller zur Marktreife gebracht werden Ziele bei der Softwareentwicklung: A) Software möglichst aus bestehenden Bausteinen (Klassen) zusammenbauen Steuerung B) Bei Bedarf diese Bausteine an die spezifischen Anforderungen anpassen selten passen die Bausteine zu 100% Anpassen von Software erweitern und modifizieren Lösung 1: Anpassen in der Quelle, oft möglich aber: Quelle kann nicht (mehr) vorhanden sein Symbol Symbol für für Aggregation Aggregation ("Bestandteil ("Bestandteil von") von") Ampel Änderungen sind schwierig, weil Quellen sehr umfangreich und Zusammenhänge u.u. nicht klar Änderungen (z.b. Bug Fix) müssen später u.u. an verschiedenen Quellen nachgeführt werden Änderungen können Einfluss auf bestehende Systeme haben 3 von 48 4 von 48

2 Objektorientierte Programmierung Die Objektorientiert Programmierung ermöglicht die Anpassung von Klassen, ohne dass man die Quellen benötigt Open-Closed Prinzip: Software-Einheiten sollten offen für Erweiterungen, aber geschlossen für Modifikationen sein Bestehende Bausteine dürfen nicht verändert werden Die Modifikation der Funktionalität sollte immer eine Erweiterung sein Bsp: z.b. eine Ampel unterstützt 3 statt 2 Phasen -> bestehende Steuerungen müssen nicht angepasst werden. Vererbung zur Erweiterung Der Mechanismus für die Erweiterung und Modifikation von Klassen heisst Vererbung 5 von 48 6 von 48 Vererbung zur Erweiterung Vererbung in Java Die Klasse Ballon ist gleich wie die Klasse, mit dem Unterschied, dass die Position nachträglich verändert werden kann. Die Klasse Ballon erweitert die Klasse (Klasse Ballon ist von der Klasse abgeleitet) Terminologie: Die Klasse heisst entsprechend Oberklasse (superclass) von der Klasse Ballon Die Klasse Ballon heisst Unterklasse (subclass) von der Klasse superclass, superclass, Oberklasse Oberklasse Basisklasse Basisklasse Symbol Symbol für für Vererbung Vererbung Es seien zwei Klassen gegeben: Klasse Klasse Ballon // gleich wie aber Position kann nachträglich verändert werden public class { private int x, y; public draw(graphics g) { g.filloval(..) public (int x, int y) {... public class Ballon { private int x, y; public draw(graphics g) { g.filloval(..) Code Code Verdoppelung Verdoppelung public Balloon(int x, int y) {... public void setpos(int newx, int newy){ x = newx; y = newy; Ballon subclass subclass Unterklasse Unterklasse abgeleitete Klasse abgeleitete Klasse 7 von 48 8 von 48

3 Vererbung in Java: extends Vererbung in Java Es seien zwei Klassen gegeben: Klasse (ev.vorbereitet für Vererbung) Klasse Ballon // gleich wie aber Position kann nachträglich verändert werden Ballon erbt von ; sämtliche protected: protected: sind sind in in abgeleiteten Ballon erbt von ; sämtliche abgeleiteten public und protected Methoden und Klassen Klassen sichtbar sichtbar (aber (aber nicht nicht in public und protected Methoden und in Attribute können innerhalb der andern andern Klassen) Attribute können innerhalb der Klassen) Klasse angesprochen werden Klasse angesprochen werden Klasse Ballon erbt Attribute (Instanzvariablen und Klassesnvariablen) und Operationen (Methoden) von der Klasse Attribute und Operationen der Klasse sind auch in der Klasse Ballon (wie die eigenen) zugreifbar. In Java kann nur von einer Klasse geerbt werden (Einfachvererbung ) im Gegensatz zu z.b. C++ (siehe Anhang) public class { protected int x, y; public class Ballon extends { public draw(graphics g) { g.filloval(..) public (int x, int y) { this.x = x; this.y = y; public void setpos(int newx, int newy){ x = newx; y = newy; public Ballon (int x, int y) { Ballon Methoden Methoden Ballon 9 von von 48 Vererbung in Java Die Unterklasse erhält keine Kopien der Variablen und Methoden, sondern den Zugriff auf die Attribute und Methoden der Oberklasse Die Unterklasse kann sodann beliebig zusätzliche Methoden und Instanzvariablen deklarieren (wie bei jeder Klasse) Allgemeine Deklaration einer Unterklasse: Vererbung zur Anpassung class Unterklassenname extends Oberklassenname { Instanzvariablendeklarationen Konstruktorendeklarationen Methodendeklarationen 11 von von 48

4 Vererbung zur Anpassung Überschreiben von Methoden Es seien zwei Klassen gegeben: Klasse Klasse Billard // gleich wie aber es wird noch eine Zahl angezeigt Falls eine Methode in der Unterklasse genau den gleichen Namen und die gleichen Parameter (Signatur) aufweist, wie eine Methode in der Oberklasse, so wird die Methode der Oberklasse überschrieben. Konkret: die Methode draw soll angepasst werden Wie die Funktionalität damit angepasst werden kann, wird im Abschnitt Polymorphismus genauer beschrieben Billardkugel Methoden Methoden Billardkugel Vorsicht: Falls die Deklaration nicht genau mit der in der Oberklasse übereinstimmt, wird die Methode überladen statt überschrieben! D.h. beide Methoden würden dann in der Unterklasse nebeneinander existieren, die geerbte und die neu geschriebene Überladen (overloading)!= Überschreiben (overriding) (siehe Anhang) 13 von von 48 Vererbung in Java Klassendiagramm (class diagram) Es seien zwei Klassen gegeben: Klasse Klasse Billardkugel // gleich wie aber sie wird anders gezeichnet public class { protected int optional optional aber aber empfohlen empfohlen public void draw(graphics g) { g.filloval(..) public (int x, int y) { public class Billardkugel extends public void draw(graphics g) { g.filloval(..); g.drawstring (..); public Billardkugel (int x, int y) { Vererbungs-Hierarchie Eine Klasse ohne explizite Oberklasse erbt in Java implizit von der Klasse Object Jede Unterklasse kann seinerseits von weiteren Unterklassen erweitert werden Dadurch entsteht eine baumartige Hierarchie von Unterklassen (Baum steht aber auf dem Kopf) Diese Vererbungs-Hierarchie kann in einem sog. Klassendiagramm dargestellt werden Beispiel UML-Klassendiagramm: Vererbungs-Hierarchie der Klasse Ballon void setpos() Zeppelin Object equals() int x,y Billardkugel void move() 15 von von 48

5 Die Klasse Object Überschreiben (shadowing( shadowing) ) von Attributen Jede Klasse in Java erbt automatisch und implizit von der Klasse java.lang.object Zwei Methoden somit in allen Klassen vorhanden (später mehr) Object String tostring() // Returns a string representation of the object. boolean equals(object obj) // Indicates whether some other object is "equal to" this one. Falls in der Unterklasse eine (public oder protected) Instanzvariable mit gleichem Namen wie in der Oberklasse deklariert wird, ist die Instanzvariable der Oberklasse in der Unterklasse nicht mehr zugreifbar. Dies wird auch als "Überschatten" (shadowing) bezeichnet public class { protected int x, y;... public class Billardkugel extends { private int x, y;... Führt oft zu Problemen Das Überschreiben von Attributen sollte vermieden werden! 17 von von 48 Zugriffsmodifikator: protected Zugriffsmodifikatoren Übersicht protected-methoden/instanzvariablen sind sichtbar in allen Unterklassen der Klasse, in der die Variable/Methode deklariert ist Zugriffsmodifikator Sichtbarkeit gleiche Klasse Unterklasse andere Klasse Zur Erinnerung: lokale Variablen (innerhalb Methoden deklariert) sind nur innerhalb derselben Methode sichtbar private ja nein nein protected ja ja nein Billardkugel 19 von 48 public ja ja ja Grundsatz: Variablen immer mit den minimal möglichen/sinnvollen Sichtbarkeit deklarieren. Laufvariablen: for (int i = 0; lokale Variablen: void foo() {int i;... private Instanzvariablen: public class T {private int i; protected Instanzvariablen: public class T {protected int i; public Instanzvariablen: public class T {public int i; von 48

6 Aufruf von Methoden der Oberklasse Innerhalb einer Klasse kann jede beliebige Methode einer Oberklasse (wie eine eigene) aufgerufen werden. sofern sie public oder protected ist Oberklassen Methodenaufruf Beispiel: innerhalb der Klasse Zeppelin kann ich setpos() der Oberklasse (Ballon) aufrufen public void move (int dx) { setpos(x+dx, y); 21 von von 48 Überschriebene Methoden Aufruf Eine Methode einer Oberklasse ist überschrieben, wenn in einer ihrer Unterklassen eine Methode mit demselben Methodenkopf (Signatur) steht Falls die ursprüngliche Methode in der Oberklasse von der Unterklasse aus aufgerufen werden soll, so muss der Objektname super verwendet werden: super.methodenname(...); super.super.methodenname ist nicht erlaubt! super.super.methodenname ist nicht erlaubt! Konstruktoren super bezeichnet das aktuelle Objekt, das aber als Objekt der Oberklasse interpretiert wird entsprechend wird die Methode der Oberklasse aufgerufen Beispiel: innerhalb der Klasse Billardkugel kann die draw Methode der Oberklasse aufgerufen werden public void draw (g) { super.draw(g); g.drawstring(..); 23 von von 48

7 Konstruktoren Konstruktor ohne Parameter Repetition: Beim Erzeugen eines Objekts wird der entsprechende Konstruktor ausgeführt Instanzvariablen des erzeugten Objekts werden initialisiert kugel = new ( ); Jede Klasse hat einen oder mehrere Konstruktoren (heissen gleich wie Klasse) mit unterschiedlichen Parameterlisten Neu: Beim Erzeugen eines Objekts der Unterklasse, muss der entsprechende Konstruktor der Oberklasse ausgeführt werden, um dessen Instanzvariablen zu initialisieren public class { protected int x, y; public (int x, int y) { this.x = x; this.y = y;? public class Billardkugel extends { private int zahl; public Billardkugel (int x, int y, int zahl) {... Automatismus: Instanz- und Klassenvariablen werden automatisch d.h. von der Java Laufzeitumgebung zu 0 (null, false) initialisiert. Automatismus: Falls ein Konstruktor ohne Parameter (=Standardkonstruktor) in der Oberklasse vorhanden ist, dann wird dieser automatisch vor der Ausführung des Konstruktors der Unterklasse aufgerufen public class { protected int x, y; public () { this.x = 100; this.y = 100; automatisch, automatisch, implizit implizit public class Billardkugel extends { private int zahl; public Billardkugel (int x, int y, int zahl) { this.zahl = zahl; Initialisierung der Initialisierung der Unterklasse Unterklasse 25 von von 48 Konstruktoren: super Konstruktoren Falls ein anderer als der Standardkonstruktor in der Oberklasse ausgeführt werden soll, so muss der Programmierer selbst diesen Oberklassen Konstruktur aufrufen. public class { protected int x, y; public (int x, int y;) { this.x = x; this.y = y; explizit explizit public class Billardkugel extends { private int zahl; public Billardkugel (int x, int y, int zahl) { super(x,y); this.zahl = zahl; Und zwar als erste Anweisung im Konstruktor der Unterklasse Automatismus: Falls eine Klasse keinen Konstruktor aufweist, wird von Java automatisch ein Standard-Konstruktor eingefügt. Wird aber wieder entfernt, sobald ein eigener Konstruktor vorhanden ist Dieser macht nichts anderes, als den Oberklassen Konstruktor aufzurufen und sieht dementsprechend folgendermassen aus: Klassenname(){ super(); Mit diesen Mechanismen garantiert Java, dass beim Erzeugen eines Objekts einer Klasse die Konstruktoren aller Oberklassen der Klasse ausgeführt werden, bevor der Konstruktor der Klasse selbst ausgeführt wird. Der erste Konstruktor, der immer ausgeführt wird ist also der Konstruktor der Oberklasse Object. Danach werden die Konstruktoren der direkten Unterklassen der Reihe nach ausgeführt bis zur aktuellen Klasse. 27 von von 48

8 Konstruktoren Kontrollfrage Aufruf- Reihenfolge Ausführungs- Reihenfolge Object equals() Beispiel: Wird im Klassendiagramm ein Objekt der Klasse Zeppelin Was passiert, wenn die Unterklasse keinen Konstruktor hat und die Oberklasse hat einen, aber keinen ohne Aufrufparametern??!! int x,y erzeugt, so werden der Reihe nach folgende Konstruktoren ausgeführt: 1.Object(); 2.(); 3.Ballon(); Ballon Billardkugel 4.Zeppelin(); void setpos() Zeppelin void move() Die Konstruktoren werden von unten nach oben aufgerufen (explizit oder impliziert). Die Ausführungsreihenfolge ist dann aber von oben nach unten! 29 von von 48 final bei Attributen und Methoden final bei Klassen Manchmal möchte man vermeiden, dass Instanzvariablen oder Methoden einer Klasse überschrieben werden können. Vorgehen: Variable oder Methode als final deklarieren final-methode oder -Variable kann nicht mehr überschrieben werden. public final static int DEFAULTX = 100; public final void setpos(int newx, int newy){ x = newx; y = newy; Es können auch ganze Klassen als final deklariert werden: Klasse kann nicht mehr erweitert (subclassed) werden Alle Methoden der Klasse sind dann automatisch auch final public final class Billardkugel extends { private int zahl;.. Erschwert/verhindert Erweiterbarkeit: sparsam einsetzen static final Variablen: entsprechen Konstanten in anderen Sprachen Klassenvariablen, die nicht überschrieben werden können. Java-Konvention: Namen von Konstanten in GROSSBUCHSTABEN schreiben Beispiel: Die Konstante Pi = ist in der Klasse Math definiert und kann von überall her mit dem Namen Math.PI verwendet werden Beispiel: Die Klasse System ist als final deklariert. 31 von von 48

9 Erweitern von Java-Bibliotheksklassen Entwurfsgrundsatz: Vererbung Auch (alle nicht final) Klassen in Java-Bibliotheken können durch selbst programmierte Klassen erweitert werden (ohne den Java-Code kennen zu müssen!) Beispiel: Klasse Applet Um ein Applet zu schreiben, haben wir jeweils eine Unterklasse der Klasse Applet geschrieben: public MyProgram extends Applet {... MyProgram erbt alle Methoden von der Klasse Applet und deren Oberklassen Die Methoden add() und repaint() z.b. werden von den Oberklassen von Applet zur Verfügung gestellt Die Methoden init() und paint(graphics g) der Klasse Applet müssen in MyProgram überschrieben werden Wie findet man die nötigen Informationen über Bibliotheksklassen? In der Online-Dokumentation nachschauen In Java-Büchern (z.b. Java in a Nutshell ) Vererbung sollte nur verwendet werden, wenn eine "ist-ein"-beziehung zur Oberklasse besteht Bsp: Billarkugel ist eine Aber d.h. gesamte Funktionalität der macht auch bei der Billardkugel einen Sinn. Bsp: Billardkugel ist kein Ballon: Ballon kann Grösse verändern, steigen und sinken "Zeppelin ist Ballon" ist eigentlich schon ein Grenzfall 33 von von 48 Übung Vererbungen in der Praxis Wiederverwendung von Software Entwickeln Sie aus: Fahrzeug, PKW, Taxi, Nutzfahrzeug, Bus, Bagger, Lastwagen, VW, Golf, Ferrari, Testerossa einen Vererbungsbaum. Zeichnen Sie das dazugehörige Klassendiagramm. spart Zeit (z.b. die Klassen von AWT und Klasse Math) Meist existiert schon Software, die einen Teil der Funktionalität aufweist Ändern einer bestehenden Software in der Quelle ist aufwendig: Quellen muss zuerst verstanden werden Neue Fehler, Inkompatibilitäten mit anderen Komponenten können entstehen Umfangreiche Tests auch der bestehenden Teile werden daher nötig Lösungsansatz der OOP: Die verwendeten Teile der Software werden belassen wie sie sind Nötige Änderungen und Ergänzungen erreicht man durch Vererbung und Erweiterung 35 von von 48

10 Die Prinzipien der OOP Die zentralen Konzepte von OOP sind: Kapselung (encapsulation): Zusammengehörige Informationen in Objekten gruppieren und sie gegenüber der Aussenwelt abschirmen: letzte Vorlesung Polymorphismus Erweiterung durch Vererbung (inheritance): Neue Klassen können aus existierenden Klassen abgeleitet werden, ohne dass die Integrität der Originalklasse beeinträchtigt wird (Open-closed Prinzip): die vorhergehenden Folien dieser Vorlesung Polymorphismus (polymorphism): folgende Folien dieser Vorlesung 37 von von 48 Casting up Casting down Erzeugen von Objekten und Zuweisen an Variable Figure fig = new Figure(.); Rectangle rect = new Rectangle(.); Upcast Fig fig = new Rectangle( ); In der Klassenhierarchie eine Referenz nach oben geben(casting up) Da jede erbende Klasse alle Methoden der Oberklassen besitzt ist das "sicher". Rectangle Line int x2,y2 Figure int x,y,w,h Circle int mx,my es kann nicht zu es kann nicht zu Fehlern führen Fehlern führen In der Klassenhierarchie eine Referenz nach unten geben (casting down, unsafe casting ) Fig fig = new Rectangle( ); in in fig fig könnte könnte auch auch Line, Line, Circle Circle oder oder Figure Figure sein sein Rectangle rect = fig; Rectangle Der Downcast ist "unsicher" und muss deshalb explizit angeben werden Rectangle rect = (Rectangle) fig; Figure int x,y,w,h Line Circle int x2,y2 int mx,my 39 von von 48

11 ClassCastException, instanceof "Vielgestaltigkeit" Polymorphismus Folgende Sequenz führt zu einem Laufzeitfehler: ClassCastException Fig fig = new Circle( ); Rectangle rect = (Rectangle) fig; Polymorphismus ("Vielgestaltigkeit" ) beschreibt eine Eigenschaft objektorientierter Sprachen, bei der die korrekte Methode von mehreren gleichnamigen Methoden (im Bsp.: draw (Graphics g) ) durch den Objekttyp bestimmt wird, auf dem sie arbeiten soll. [Quelle: Java für Studenten] Vorher testen, ob ein Objekt zu einer bestimmten Klasse gehört oder nicht instanceof ist ein Schlüsselwort Verwendung if (fig instanceof Rectangle){Rectangle rect = (Rectangle) fig; class Circle extends Figure { public void draw(graphics g){ g.drawoval(x,y,w,h)... class Figure { protected int x,y,w,h; public void draw(graphics g){... class Rectangle extends Figure { public void draw(graphics g){ g.drawrect(x,y,w,h) von von 48 Dynamischer, statischer Typ Prinzipien des Polymorphismus Welche draw() Methode wird aufgerufen? Fig fig = new Rectangle( ); fig.draw(g); Ein Objekt behält immer die Identität der Klasse, aus der es erzeugt wurde. (Ein Objekt kann nie in ein Objekt einer anderen Klasse konvertiert werden!) Figure int x,y,w,h Antwort: Es wird die draw Methode von Rectangle aufgerufen Regel: es wird immer die Methode der Klasse aufgerufen, die (dynamisch) der Variablen zugewiesen wurde. Wenn eine Methode auf ein Objekt aufgerufen wird, wird immer die Methode verwendet, die mit der Klasse des Objekt verbunden ist Rectangle Line int x2,y2 Circle int mx,my Statischer Typ: Typ der Variablen, wie sie deklariert wurde Dynamischer Typ: Typ (Klasse) des Objekts, das der Variablen zugewiesen wurde; Referenztyp -> auf den die Variable zeigt. 43 von von 48

12 Beispiel einer Anwendung Zusammenfassung Ein kleines Zeichenprogramm (innerhalb einem Applet) Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Figure [] figs = new Figure[4]; void init () { figs[0] = new Circle(...); figs[1] = new Line(...); figs[2] = new Line(...); figs[3] = new Rectangle(...); Konstruktoren Polymorphismus void paint(graphics g) { for (int i = 0; i < figs.length; i++) { figs[i].draw(g)); 45 von von 48 Anhang: overloading und overriding Anhang: Einfach und Mehrfachvererbung Overloading bedeutet, dass es zwei oder mehr Methoden mit dem gleichen Namen (innerhalb einer Klasse) gibt, die sich durch Parameter unterscheiden. Der Unterschied kann in der Anzahl der Parameter oder dem Typ oder beidem bestehen. Der Java-Compiler wählt aufgrund der Parameter die richtige aufzurufende Methode aus ("most specific" algorithm) Einfachvererbung (single inheritence): Eine Unterklasse kann in Java nur von einer Oberklasse erben, nicht von mehreren wie z.b. in C++ Problem: diamond inheritance Transportmittel Overriding (Überschreiben) einer Methode in einer Unterklasse bedeutet, dass eine Methode mit dem gleichen Namen und Parameter wie in der Oberklasse geschrieben wird. Das Java-Laufzeitsystem nimmt immer die Methode, die zur Klasse des Objekts gehört. [Quelle: Java für Studenten] Erbt die Klasse Wasserflugzeug die Methoden von Flugzeug oder von Boot? Für Mehrfachvererbung gibt es in Java zu diesem Zweck das Konzept der Interfaces: Nur Deklaration der Schnittstelle, keine Implementation der Klasse Problem wird umgangen! Flugzeug Wasser- Flugzeug << Boot 47 von von 48

INE2 OOP mit Java 2 Vererbung, Polymorphismus. Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus

INE2 OOP mit Java 2 Vererbung, Polymorphismus. Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus INE2 OOP mit Java 2 Vererbung, Polymorphismus Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus Einführung Beispiel Automobilbau: Eine Firma produziert eine

Mehr

Vererbung, Polymorphismus

Vererbung, Polymorphismus Vererbung, Polymorphismus INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Automobilbau Firma produziert Limousine Kunde möchte Kombi Wielösen? Möglichkeiten Neudesign

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Kurs OPR. Objektorientierte Programmierung

Kurs OPR. Objektorientierte Programmierung Kurs OPR Objektorientierte Programmierung Lektion: 005-Vererbung, Polymorphismus Zürcher Hochschule für Angewandte Wissenschaften Mitglied der Fachhochschule Zürich Version 1.4 Inhaltsverzeichnis 1 Vererbung

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

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

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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 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

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

5. Tutorium zu Programmieren

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

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

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

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

Mehr

U08 Entwurfsmuster (II)

U08 Entwurfsmuster (II) U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

MCRServlet Table of contents

MCRServlet Table of contents Table of contents 1 Das Zusammenspiel der Servlets mit dem MCRServlet... 2 1 Das Zusammenspiel der Servlets mit dem MCRServlet Als übergeordnetes Servlet mit einigen grundlegenden Funktionalitäten dient

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

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

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

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

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

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

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

PHP Aufbaukurs. Tag 3. PHP5 & Klassen PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: olkhovskiy@rrzn.uni-hannover.de PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

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

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

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

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische

Mehr

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

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Klassendiagramm. (class diagram)

Klassendiagramm. (class diagram) : Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

S7-Hantierungsbausteine für R355, R6000 und R2700

S7-Hantierungsbausteine für R355, R6000 und R2700 S7-Hantierungsbausteine für R355, R6000 und R2700 1. FB90, Zyklus_R/W Dieser Baustein dient zur zentralen Kommunikation zwischen Anwenderprogramm und dem Modul R355 sowie den Geräten R6000 und R2700 über

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

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

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr