Programmieren 2 C++ Überblick
|
|
- Helga Adenauer
- vor 6 Jahren
- Abrufe
Transkript
1 Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 5. Behälter und Iteratoren 6. Templates und generische Programmierung 7. Standard Template Library 8. Vererbung 10. Fehlerbehandlung 11. Namensräume und Typinformation zur Laufzeit 12. Dateien und Ströme 13. Zusammenfassung objektorientierter Merkmale Prof. Dr. Björn Dreher Programmieren 2 C Programmieren 2 C++ Überblick: 9.1 Einleitung Prof. Dr. Björn Dreher Programmieren 2 C++ 556
2 9.1 Einleitung Objektorientierte Anwendung: Menge von Objekten, die zueinander in Beziehung stehen Diese Beziehungen können unterschiedlichster Natur sein: Vererbung, d.h. Spezialisierung (is-a Beziehung) Aggregation (Teil-Ganzes Beziehung) Assoziation Delegation ( Benutzt -Beziehung) Betrachten wir die einzelnen Fälle und ihre Realisierung in C++ Prof. Dr. Björn Dreher Programmieren 2 C Programmieren 2 C++ Überblick: 9.1 Einleitung Prof. Dr. Björn Dreher Programmieren 2 C++ 558
3 Vererbung wurde bereits ausführlich besprochen Hier: Besondere Grenzfälle Wichtig bei public Vererbung: Die Beziehung zwischen den Klassen muss auch semantisch wirklich eine is-a Beziehung sein Eine abgeleitete Klasse kann als Subtyp der Oberklasse angesehen werden. Ein Objekt einer abgeleiteten Klasse kann immer an die Stelle eines Objektes der Oberklasse treten (alle Methoden und Attribute der Oberklasse sind vorhanden) Prof. Dr. Björn Dreher Programmieren 2 C Nachdenkenswerte Fälle Ein Quadrat ist mathematisch ein Rechteck (wobei beide Seitenlängen gleich sind), also ein Spezialfall eines Rechtecks wie ein Kreis ein Spezialfall einer Ellipse ist Graphische Repräsentation dieses Beispiels: hoehe: int breite: int Rechteck hoeheaendern() breiteaendern() Quadrat hoeheaendern() breiteaendern() Prof. Dr. Björn Dreher Programmieren 2 C++ 560
4 Die Spezialisierung von Rechteck zu Quadrat drückt sich in der folgenden öffentlichen Vererbung aus: class Quadrat : public Rechteck ; Eine Klasse Rechteck wird wohl Methoden haben, die es erlauben, die Seiten unabhängig voneinander zu verändern: class Rechteck virtual void hoeheaendern(int neu) hoehe = neu; virtual void breiteaendern(int neu) breite = neu; private: int hoehe; int breite; ; Diese Methoden haben in der Klasse Quadrat nichts zu suchen Prof. Dr. Björn Dreher Programmieren 2 C Rechteck -> Quadrat Lösung aus Literatur: Vererbung bei einer Spezialisierung auch als Einschränkung (constraint) der Oberklasse benutzen (Booch: inheritance for restriction ) Wichtige Eigenschaft der objektorientierten Vorgehensweise: Begriffe aus dem Anwendungssprachraum werden über Analyse und Design weitgehend bis in die Implementierung übertragen Mathematisch ist ein Quadrat ein Rechteck Aber ist es sinnvoll bei der Implementierung dann auch für das Quadrat zwei Seitenlängen mitzuschleppen? Zusätzlich muss man dafür Sorge tragen, dass diese immer den gleichen Wert besitzen Prof. Dr. Björn Dreher Programmieren 2 C++ 562
5 Rechteck -> Quadrat Vertrag zwischen Klasse und Benutzer ( programming by contract ) Klasse muss diesen einhalten, also dafür sorgen, dass ein Quadrat auch immer ein Quadrat bleibt Dies lässt sich natürlich relativ leicht bewerkstelligen: class Quadrat : public Rechteck virtual void hoeheaendern(int neu) Rechteck::hoeheAendern(neu); Rechteck::breiteAendern(neu); virtual void breiteaendern(int neu) hoeheaendern(neu); ; Damit wird der mit Quadrat geschlossene Vertrag eingehalten, auch für alle möglichen Nachfahren. Prof. Dr. Björn Dreher Programmieren 2 C Rechteck -> Quadrat Alternative: Rechteckklasse wird benutzt, die Quadrat-Klasse delegiert an die Rechteck-Klasse: class Quadrat // Keine Vererbung Quadrat(const Ort& o, int seite) : r(o, seite, seite) // privates Rechteck // initialisieren virtual void seiteaendern(int neu) r.hoeheaendern(neu); r.breiteaendern(neu); // Weitere Methoden, die Methoden der Klasse // Rechteck benutzen private: Rechteck r; ; Prof. Dr. Björn Dreher Programmieren 2 C++ 564
6 Rechteck -> Quadrat Graphische Darstellung: r: Rechteck Quadrat Quadrat() seiteaendern() Komposition hoehe: int breite: int Rechteck hoeheaendern() breiteaendern() Prof. Dr. Björn Dreher Programmieren 2 C Rechteck -> Quadrat: Ergebnis: Der Benutzer von Quadrat sieht die Methoden der Klasse Rechteck nicht mehr Das eingebettete Rechteck ist voll gekapselt Dennoch wird der von der Klasse Rechteck zur Verfügung gestellte Code wieder verwendet, indem Aufgaben an die Klasse Rechteck delegiert werden Nachteil: Quadrat und Rechteck können nicht polymorph verwendet werden Ließe man Quadrat und Rechteck von einer gemeinsamen abstrakte Klasse GraphObject erben, hätte man das Problem, dass der dort definierte Mittelpunkt sowohl an Quadrat als auch an das benutzte Rechteck vererbt würde -> auch nicht schön! Prof. Dr. Björn Dreher Programmieren 2 C++ 566
7 Rechteck -> Quadrat Doch die bessere Idee (?) Beide Klassen unabhängig voneinander von GraphObject ableiten und in Kauf nehmen, dass ein Teil des Codes doppelt geschrieben werden muss, insbesondere wenn Quadrat nur wenig Code von Rechteck verwendet Prof. Dr. Björn Dreher Programmieren 2 C Ähnliches Problem: Stack und Liste Ist Stack eine Spezialisierung einer Liste? Hier ist Delegation sicher die bessere Lösung, da beide Listen höchst wahrscheinlich nicht als polymorphe Objekte behandelt werden müssen Ein Objekt einer abgeleiteten Klasse muss jederzeit an die Stelle eines Basisklassenobjektes treten können, um public Vererbung zu rechtfertigen Nur dann kann die abgeleitet Klasse als Subtyp der Basisklasse angesehen werden Quadrat und Rechteck: Rechteck habe eine Methode SeitenverhaeltnisAendern(). Auswirkung auf Quadrat? Prof. Dr. Björn Dreher Programmieren 2 C++ 568
8 Programmieren 2 C++ Überblick: 9.1 Einleitung Prof. Dr. Björn Dreher Programmieren 2 C Teil-Ganzes Beziehung (engl. part-of) Ein Objekt besteht aus mehreren anderen Objekten Die Teile sind in dem ganzen Objekt enthalten Dies kann in Form eingebetteter Objektinstanzen (strengere Form der Aggregation: Composition) oder in Form von Zeigern auf die Teilobjekte (Teilobjekte könne evtl. auch unabhängig vom Ganzen existieren) implementiert werden. Prof. Dr. Björn Dreher Programmieren 2 C++ 570
9 Eingebettet: Komposition Das Ganze sei eine Tastatur. Sie besteht aus einem Gehäuse, einem Kabel, einer Platine und 102 Tasten: class Tastatur private: Gehaeuse eingehaeuse; Kabel einkabel; Platine eineplatine; Taste tastenfeld[102]; ; Tastatur 102 Kabel Gehäuse Platine Taste Prof. Dr. Björn Dreher Programmieren 2 C Programmieren 2 C++ Überblick: 9.1 Einleitung Prof. Dr. Björn Dreher Programmieren 2 C++ 572
10 Allgemeinste Art der Beziehung zwischen zwei Objekten Aggregation kann als ein Spezialfall der Assoziation angesehen werden. Bestehende Assoziation heißt, dass die beteiligten Objekte sich kennen, d.h. sie haben i.a. als eines ihrer Attribute einen Zeiger oder eine Referenz auf das andere Objekt Dies kann in beide Richtungen gehen oder auch nur in eine, je nach Notwendigkeit des Navigierens von einem Objekt zum anderen Prof. Dr. Björn Dreher Programmieren 2 C Beispiel Person Firma bekanntenkreis * name: String arbeitgeber: Firma* bekanntenkreis list<person*> Person() lerntkennen(person&) wieheisstdu(): String findetarbeitbei(firma&) kuendigt() ist beschäftigt bei * mitarbeiter: list<person*> Firma() einstellen(person*) Prof. Dr. Björn Dreher Programmieren 2 C++ 574
11 class Person; // Vorwärtsdeklaration class Firma einstellen(person* p); private: list<person*> mitarbeiter; ; bekanntenkreis * Person name: String arbeitgeber: Firma* bekanntenkreis list<person*> Person() lerntkennen(person&) wieheisstdu(): String findetarbeitbei(firma&) kuendigt() ist beschäftigt bei * Firma mitarbeiter: list<person*> Firma() einstellen(person*) Prof. Dr. Björn Dreher Programmieren 2 C class Person void lerntkennen(person& p) bekanntenkreis.hinzufuegen(&p); String wieheisstdu() return name; void findetarbeitbei(firma& f) arbeitgeber = &f; f.einstellen(this); void kuendigt() arbeitgeber->entlassen(this); arbeitgeber = NULL; private: String name; Firma *arbeitgeber; list<person*> bekanntenkreis; bekanntenkreis * Person name: String arbeitgeber: Firma* bekanntenkreis list<person*> Person() lerntkennen(person&) wieheisstdu(): String findetarbeitbei(firma&) kuendigt() ist beschäftigt bei * Firma mitarbeiter: list<person*> Firma() einstellen(person*) Prof. Dr. Björn Dreher Programmieren 2 C++ 576
12 Ein mögliches Hauptprogramm: Firma is_bremen_gmbh; Person walter, thomas, sonja; thomas.findetarbeitbei(is_bremen_gmbh); walther.findetarbeitbei(is_bremen_gmbh); thomas.lerntkennen(sonja); thomas.lerntkennen(walter); thomas.kuendigt(); Prof. Dr. Björn Dreher Programmieren 2 C Programmieren 2 C++ Überblick: 9.1 Einleitung Prof. Dr. Björn Dreher Programmieren 2 C++ 578
13 Benutzt -Beziehung Ein Objekt A macht sich die Dienste eines anderen Objektes B nutzbar Es delegiert Aufgaben an dieses andere Objekt Dazu besitzt A i.a. einen Zeiger auf B als Attribut Damit kennt es Objekt B und kann dessen öffentliche Methoden benutzen Prof. Dr. Björn Dreher Programmieren 2 C Beispiel Ein Heizregler benutzt einen Temperaturfühler zum Messen der Temperatur: class Heizregler // Konstruktoren bool warmgenug() return (dasthermometer->wiewarm() > 20); private: Temperaturfuehler* dasthermometer; ; Auch diese Beziehung ist eine Assoziation Prof. Dr. Björn Dreher Programmieren 2 C++ 580
Programmieren in C++ Überblick
Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung
Mehr5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren
Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel Alina Stürck WS2016/17 11. Oktober 2016 Objektorientierte Programmierung OOP 1 Was ist das? 2 Wie geht das? 3 Warum
MehrBeziehungen zwischen Objekten
1/19 Beziehungen zwischen Objekten Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/19 Outline 1 Vererbung (Wiederholung)
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
Mehr3. 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
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrPrinzipien der objektorientierten Programmierung (OOP)
Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm
MehrVererbung und Polymorphie
Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrLösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell
Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Aufgabe 3. Assoziation
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
Mehr11 Vererbung und Klassenhierarchie
11 Vererbung und Klassenhierarchie Bestandteile objektorientierter Programmierung: Bestehende Klassen können durch Spezialisierung und Erweiterung weiterentwickelt werden, ohne den Programmcode der alten
MehrVererbung und Polymorphie
page1 Vererbung und Polymorphie Florian Adamsky, B Sc florianadamsky@iemthmde http://florianadamskyit/ cbd So wareentwicklung im SS 2014 page2 Outline 1 Ein ührung 2 Vererbung Formen der Vererbung 3 Polymorphie
MehrHSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2
HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3
MehrGrundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.
Mehrfache Vererbung Daniel Beneckenstein 21. August 2006 Mehrfache Vererbung Ableitung einer Klasse von beliebig vielen Basisklassen: class A {... }; class B {... }; class C {... }; class D: public A,
MehrObjektorientiertes Programmieren
JL Ute Claussen Objektorientiertes Programmieren Mit Beispielen und Übungen in C++ Zweite, überarbeitete und erweiterte Auflage Mit 24 Abbildungen Springer Inhaltsverzeichnis 1 Einleitung 1 1.1 Was ist
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben
MehrProgrammieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
Mehr01. Grundprinzipien der Vererbung
01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen
MehrÜberblick. Überblick zum weiteren Inhalt
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrJava für Bauingenieure
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen
MehrObjektorientiertes Programmieren mit C++ für Fortgeschrittene
BEREICH DATENTECHNIK I CQ 300 00 TH 02 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 3 3. Mehrfachvererbung 3.1. Eigenschaften und Problematik 3.2. Virtuelle Basisklassen BEREICH
MehrLösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Aufgabe 3. Assoziation zwischen
MehrUML -Klassendiagramme
UML -Klassendiagramme UML - offline: ArgoUML http://argouml.stage.tigris.org/ UML online: Links genmymodel.com umlet.com/umletino/umletino.html Arten von UML-Diagrammen Diagramm Strukturdiagramm Verhaltensdiagramm
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation
MehrRückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren
Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
Mehr7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik
7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
Mehr8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure
8. Objektorientierte Programmierung Informatik II für Verkehrsingenieure Grundbegriffe ALAN KAY, ERFINDER DER SPRACHE SMALLTALK, HAT DIE GRUNDBEGRIFFE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG WIE FOLGT ZUSAMMENGEFASST:
MehrÜberblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
MehrProgrammierkurs C++ Abstrakte Klassen und Methoden
Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double
Mehr10. Programmierungs-Phase: Objektorientierung Software Engineering
10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext
MehrListe MI / Liste I Programmieren in C++
Liste MI / Liste I Programmieren in C++ Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Medieninformatik WS 2007/2008 Kapitel 1-4 1 Ziele Kennenlernen einer weiteren objektorientierten
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrVon der UML nach C++
22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete
MehrInhaltsverzeichnis. Vorwort
Inhaltsverzeichnis Vorwort XI 1 C/C++-Grundlagen 1 1.1 Einführung................................ 1 1.1.1 Entwicklungsgeschichte: Von K&R-C nach C++........ 1 1.1.2 Beispielprogramme.......................
MehrObjektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrEinführung in die Programmierung Wintersemester 2008/09
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 : Virtuelle Methoden Vererbung bisher: Definition
MehrObjekt-orientierte Programmierung
Objekt-orientierte Programmierung Eine (sehr) kurze Einführung Daniel Lübke Gliederung Motivation Grundlagen (Objekte, Klassen, Vererbung) Interfaces Klassenvariablen
MehrBlöcke. Block Definitionsdiagramm. Dr. Beatrice Amrhein
Blöcke Strukturelemente Block Definitionsdiagramm Dr. Beatrice Amrhein Definition: Block (Systembaustein) Eine Block beschreibt den Aufbau, die Eigenschaften und das Verhalten einer Komponente (eines Systems)
MehrAssoziation und Aggregation
Assoziation und Aggregation Prof. Dr. Christian Böhm in Zusammenarbeit mit Michael Eckert und Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfows WS 07/08 2 Ziele Verstehen der Begriffe Assoziation und
MehrBegriffe 1 (Wiederholung)
Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.
MehrKapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt
MehrObjektorientierung. Objekte
Eine Einführung G. Futschek Objekte Objekte Fragen: Wie unterscheiden sich Objekte? Wie sind Objekte einander ähnlich? Was können Objekte? Wie stehen Objekte zueinander in Beziehung? Objekte Im täglichen
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 16. Dezember 2015 Modellierung Konzept Ein Modell ist die formale Darstellung
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrEinstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrSilke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Objektorientierung Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrSommersemester Implementierung I: Struktur
Sommersemester 2003 Implementierung I: Struktur 2 Aufgabe 3 Implementierung I: Struktur Umfang: 1 Woche Punkte: 50 P. In den ersten beiden Aufgaben wurden die Struktur und das Verhalten des Systems modelliert.
MehrInformatik II Übung, Woche 17
Giuseppe Accaputo 28. April, 2016 1. Vererbung 2. Vorbesprechung Übung 8 Plan für heute 3. Erweiterung des Vorlesungsverzeichnis (VVZ) (Live-Programmierung) Informatik II (D-BAUG) Giuseppe Accaputo 2 Vererbung
MehrVorkurs Informatik: Erste Schritte der Programmierung mit C++
Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Tag 3: Objektorientiere Programmierung 8. Oktober 2014 Vorkurs Informatik WS 14/15 > Einführung Agenda 1 Einführung
MehrObjektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrEinführung in C# Teil 1. Matthias Nübling
Einführung in C# Teil 1 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrObjektorientierte Programmierung und Klassen
Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP
MehrExceptions und Vererbung
Exceptions und Vererbung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 2. Exceptions Eigene Exceptions Handling
MehrMethoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrSilke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode
Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen
MehrProgrammieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:
MehrVererbung. Oberklassen und Unterklassen
Vererbung Oberklassen und Unterklassen Vererbung ist ein zentrale Bestandteil der Objektorientierung. Man beschreibt damit die Möglichkeit, Eigenschaften und Methoden vorhandener Klassen auf andere (neue)
MehrVererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus
Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur
MehrC++ - Objektorientierte Programmierung Vererbung
C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.
MehrEinführung in C# Teil 3. Matthias Nübling
Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrBeispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
MehrBlöcke Strukturelemente. Dr. Beatrice Amrhein
Blöcke Strukturelemente Block Definitionsdiagramm Dr. Beatrice Amrhein Definition Ein Block Definitionsdiagramm (oder Blockdiagramm) o zeigt die statische Struktur des Systems, o beschreibt, welche Systembausteine
MehrProgrammieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von
MehrInformationsverarbeitung im Bauwesen
1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8
MehrDie abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,
Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang
MehrWahlpflichtfach Design Pattern
Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338
MehrEinführung in die Objektorientierung
Rainer Schmidberger Rainer.Schmidberger@informatik.uni-stuttgart.de Objektorientiert daisy : Kunde 2. angebot Nein Prozedural Schleife über alle Projekte Noch was zu tun? Manager informieren... Ja Daten
MehrVorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3
Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil
MehrGrundlagen der Objektorientierung :
Grundlagen der Objektorientierung : Objektorientierung ermöglicht (unter anderem), daß man Software, die von einem selbst, meist aber von Anderen geschrieben ist, komfortabel nochmal verwenden kann. Diese
MehrTh. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen
Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren
MehrObjektorientierte Programmierung Teil 1: Einführung
Objektorientierte Programmierung Teil 1: Einführung Prof. Dr. Schoop FHT Esslingen, Sommersemester 2005 Agenda Beispielszenario Eigenschaften des objektorientierten Ansatzes Konzepte des objektorientierten
MehrUniversität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit
MehrA&R TECH C++ Chess Challenge
Willkommen zur A&R TECH C++ Chess Challenge! Wir freuen uns, dass du an dieser Herausforderung teilnimmst. Bevor es losgeht, möchten wir dich noch auf einige Dinge aufmerksam machen: Die Challenge besteht
MehrJava Einführung Vererbung und Polymorphie. Kapitel 13
Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrObjektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen
Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung
MehrPolymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
Mehr