01. Grundprinzipien der Vererbung
|
|
- Helga Lorenz
- vor 7 Jahren
- Abrufe
Transkript
1 01. Grundprinzipien der Vererbung
2 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 häufig vorkommen 8% an Daten/Funktionen selten vorkommen Basis-/Superklasse Eigenschaften Methoden Eigenschaften Subklasse Methoden Eigenschaften Spezialklasse Methoden Daten Funktionen 67% 25% 8% Modellierung einer Klasse mit allen Gemeinsamkeiten Basis- oder Superklasse Modellierung von Klassen mit vielen Gemeinsamkeiten unter Verwendung der Basis- /Superklasse usw. Dr. Norbert Spangler / Grundlagen der Informatik
3 Beispiele Basisklasse Geo_Figur Bauteil Artikel Konto (Superklasse) > Ist-Beziehung Ist-Beziehung Ist-Beziehung Ist-Beziehung abgeleitete Klasse Dreieck Lampe Druckerpapier Girokonto (Subklasse) > Ist-Beziehung Ist-Beziehung Spezielle Klasse gleichseitiges Geschäfts- Dreieck konto Ist-Beziehung: Ein Objekt vom Typ Dreieck ist ein spezielles Objekt der Klasse Geo_Figur Ein Objekt vom Typ Druckerpapier ist ein spezielles Objekt der Klasse Artikel usw. Dr. Norbert Spangler / Grundlagen der Informatik
4 Beispiele Geo_Figur Bauteil Artikel > > > Dreieck Viereck Ellipse Lampe Kabel Schalter Druckerpapier Toner Gut gewählte Basisklassen sind ein wichtiges Design-Element in der Gestaltung komplexer Systeme. Reale Objekte dieser Basisklassen werden oft nicht benötigt -> abstrakte Klassen Dr. Norbert Spangler / Grundlagen der Informatik
5 1.2 Definition abgeleiteter Klassen class Abgeleiteteklasse: public Basisklasse private: // hier kommen die zusätzlichen private-elemente // (Eigenschaften und Methoden)... public: // hier kommen die zusätzlichen public-elemente // (Eigenschaften und Methoden)... }; public-vererbung (es gibt noch andere ) Alle public-elemente der Basisklasse sind in der abgeleiteten Klasse auch wieder public-elemente Dr. Norbert Spangler / Grundlagen der Informatik
6 Beispiele class Girokonto: public Konto... }; class Druckerpapier: public Artikel... }; class Lampe: public Bauteil... }; class Toner: public Artikel... }; Dr. Norbert Spangler / Grundlagen der Informatik
7 Beispiel class Druckerpapier: public Artikel private: unsigned int paketgroesse;//neue Eigenschaft double paketpreis;//neue Eigenschaft public: Druckerpapier(unsigned int,string,unsigned int);//konstruktor void setpaketpreis(double);//neue Methode void anzeigen();// ersetzte Methode }; Dr. Norbert Spangler / Grundlagen der Informatik
8 Andere Vererbungen Private/protected-Vererbung Mehrfachvererbung Bauteil Bauteil Bauteil Schalter Schalter Lampe Schalter_mit_Kontrolleuchte Schalter_mit_Kontrolleuchte Dr. Norbert Spangler / Grundlagen der Informatik
9 Elemente der abgeleiteten Klassen Die abgeleitete Klasse - besitzt alle Eigenschaften der Basisklasse - kann neue private-elemente festlegen; auf die kann in der abgeleiteten Klasse zugegriffen werden. Auf die private-elemente der Basisklasse kann nicht direkt zugegriffen werden (nicht sichtbar). -kann neue public-elemente festlegen -Elementen der Basisklasse eine neue Bedeutung geben (Redefinition) Beispiel: die Methode anzeigen für die Anzeige aller Eigenschaften wird angepasst. Diese überdeckt die entsprechende Methode der Basisklasse, d.h. die Methode anzeigen der abgeleiteten Klasse wird dann verwendet. Will man dennoch die Methode der Basisklasse verwenden muss der Bereichsoperator :: verwendet werden : namederbasisklasse::anzeigen() -kann mit den Methoden (der abgeleiteten Klasse) auf alle Elemente (public+private) der abgeleiteten Klasse zugreifen. Dr. Norbert Spangler / Grundlagen der Informatik
10 1.3 UML Bisher: Klassendiagramme und Objektdiagramme als "Stand-alone" Diagramm Beziehungen können zwischen 2 Klassen existieren Bezeichnung Klasse 1 Name Klasse 2 Generalisierung: Drucker- ist ein Artikel papier Assoziation Mitarbeiter arbeitet für Firma Aggregation Lampe ist Teil von Schaltung (1) Komposition Rechnungs- ist Teil von Rechnung (2) position (1) Klasse 1 kann ohne Klasse 2 existieren (2) Klasse 1 kann ohne Klasse 2 nicht existieren Dr. Norbert Spangler / Grundlagen der Informatik
11 UML: Vererbung/Generalisierung Artikel -artikelnummer: unsigned int -bezeichnung: string -bestand: unsigned int -stueckpreis: double +Artikel(unsigned int, string) +reserviere(unsigned int):unsigned int +zugang(unsigned int):void +anzeigen():void Eine abgeleitete Klasse wird mit der Basisklasse durch einen Pfeil mit durchgezogener Linie und nicht ausgefüllter Spitze verbunden is a (ist ein) Beziehung Verwandte Begriffe: Generalisierung, Spezialisierung Druckerpapier -paketgroesse: unsigned int -paketpreis: double +Druckerpapier(uns. int, string,uns. int) +anzeigen():void Dr. Norbert Spangler / Grundlagen der Informatik
12 UML: Vererbung Artikel -artikelnummer: unsigned int -bezeichnung: string -bestand: unsigned int -stueckpreis: double +Artikel(unsigned int, string) +reserviere(unsigned int):unsigned int +zugang(unsigned int):void +anzeigen():void mehrere abgeleitete Klassen Druckerpapier Toner -paketgroesse: unsigned int -paketpreis: double +Druckerpapier(uns. int, string,uns. int) +anzeigen():void +Toner(unsigned int, string) +anzeigen():void Dr. Norbert Spangler / Grundlagen der Informatik
13 UML: Beziehung Klasse-Objekt Artikel -artikelnummer: unsigned int -bezeichnung: string -bestand: unsigned int -stueckpreis: double +Artikel(unsigned int, string) +reserviere(unsigned int):unsigned int +zugang(unsigned int):void +anzeigen():void ^ Ein Objekt kann mit einer Klasse durch einen gestrichelten Pfeil verbunden werden instance of (ist abhängig von) - Beziehung a1: Artikel artikelnummer= bezeichnung=bueroklammern bestand=75 Preis=1,25 Dr. Norbert Spangler / Grundlagen der Informatik
14 1.4 protected Die abgeleitete Klasse kann nicht direkt auf die privaten Elemente der Basisklasse zugreifen sondern nur mittels public-methoden der Basisklasse. Beispiel: bezeichnung aus Artikel steht in Toner nur mittels der Methode getbezeichnung() der Basisklasse zur Verfügung Lösung: Einführung von protected-elementen Auf protected-elemente der Basisklasse kann in den abgeleiteten Klassen direkt (d.h. ohne Methoden) zugegriffen werden. In anderen Klassen ist nach wie vor kein Direkt-Zugriff möglich. Dr. Norbert Spangler / Grundlagen der Informatik
15 class Artikel protected: unsigned int artikelnummer; string bezeichnung; unsigned int bestand; double stueckpreis; }; Beispiel protected public: //Prototypen der Methoden Artikel(); Artikel(unsigned int,string); void zugang(unsigned int); unsigned int reserviere(unsigned int); void anzeigen(); unsigned int getbestand(); void setstueckpreis(double); Damit kann etwa in einem Objekt der Klasse Toner oder Druckerpapier direkt auf bestand, stueckpreis etc. zugegriffen werden.. Ohne protected geht es nur mit getbestand usw. Dr. Norbert Spangler / Grundlagen der Informatik
16 Beispiel protected void Druckerpapier::anzeigen() cout << "\nartikel " <<setw(6)<<setfill('0')<< artikelnummer; cout << "\t"; cout << setw(20) << setfill(' ')<<bezeichnung; cout << " Bestand "<<setw(4)<<bestand<< " Stueck Preis/Stueck "; cout <<setprecision(2)<<fixed<<setw(6)<<stueckpreis<<endl; cout<< "\t\t\tpaketgroesse "<<setw(4)<<paketgroesse; cout << "\t\t Paketpreis "; cout <<setprecision(2)<<fixed<<setw(6)<<paketpreis<<endl; } Ohne protected müssten hier Methoden wie getartikelnummer(), getbezeichnung(), getbestand, getstueckpreis() aufgerufen werden Dr. Norbert Spangler / Grundlagen der Informatik
17 1.5 Redefinierte Methoden Eine Redefinition ist die Vereinbarung einer Methode in der abgeleiteten Klasse, zu der es eine Methode gleichen Namens in der Basisklasse gibt. class Artikel private: public: void anzeigen(); }; class Druckerpapier: public Artikel private: public: void anzeigen();//redefinition }; Problem beim Aufruf: x.anzeigen(); Welche Methode wird genommen? Dr. Norbert Spangler / Grundlagen der Informatik
18 Beispiel void Artikel::anzeigen() // Basisklassenmethode cout << "\nartikel " <<setw(6)<<setfill('0')<< artikelnummer; cout << "\t"; cout << setw(20) << setfill(' ')<<bezeichnung; cout << setw(4) << right; cout << " Bestand "<<setw(4)<<bestand<< " Stueck Preis/Stueck "; cout <<setprecision(2)<<fixed<<setw(6)<<stueckpreis<<endl; } void Druckerpapier::anzeigen()//redefinierte Methode cout << "\npapier " <<setw(6)<<setfill('0')<< artikelnummer; cout << "\t"; cout << setw(20) << setfill(' ')<<bezeichnung; cout << setw(4) << right; cout << " Bestand "<<setw(4)<<bestand<< " Stueck Preis/Stueck "; cout <<setprecision(2)<<fixed<<setw(6)<<stueckpreis<<endl; cout<< "\t\t\tpaketgroesse "<<setw(4)<<paketgroesse; cout << "\t\t Paketpreis"; cout <<setprecision(2)<<fixed<<setw(9)<<paketpreis<<endl; } Dr. Norbert Spangler / Grundlagen der Informatik
19 Redefinierte Methoden Es entscheidet der Typ des Objekts, welche Methode verwendet wird. Die Methode der Basisklasse kann für Objekte der abgeleiteten Klasse nur durch Verwendung des Bereichsoperators :: herangezogen werden. Beispiel: Artikel a1; Druckerpapier d1(117, Office Jet,5); a1.anzeigen(); // anzeigen der Basisklasse Artikel wird verwendet d1.anzeigen(); // anzeigen der abgeleiteten Klasse Druckerpapier wird verwendet d1.artikel::anzeigen(); // anzeigen aus der Basisklasse Artikel wird verwendet Dr. Norbert Spangler / Grundlagen der Informatik
20 Beispielprogramm void main() Artikel a1; Druckerpapier d1(110,"office", 5); a1.anzeigen(); d1.anzeigen(); d1.artikel::anzeigen(); } Dr. Norbert Spangler / Grundlagen der Informatik
21 Namenssuche Wie wird die Methode xyz() in einer Klasse gefunden? Es wird gesucht, ob die aktuelle Klasse eine Methode xyz() besitzt. Falls gefunden : Methode wird gewählt. Falls nicht gefunden : Es wird eine public-methode xyz in der nächsthöheren Basisklasse gesucht. Dieser Vorgang wird gegebenenfalls wiederholt. Dr. Norbert Spangler / Grundlagen der Informatik
22 1.6 Konstruktoren der abgeleiteten Klasse Es müssen prinzipiell alle Eigenschaften der Basisklasse und der abgeleiteten Klasse belegt werden. Hierzu gibt es zunächst 3 Vorgehensweisen (später noch eine) für einen Konstruktor einer abgeleiteten Klasse: a) Man belegt alle Eigenschaften der Basisklasse (mit Methoden der Basisklasse!!!) und die der abgeleiteten Klasse direkt. b) Sofern die Eigenschaften der Basisklasse als protected deklariert wurden lassen sich alle Eigenschaften direkt belegen. c) Man verwendet einen Konstruktor der Basisklasse und belegt die Eigenschaften der abgeleiteten Klasse direkt. Dr. Norbert Spangler / Grundlagen der Informatik
23 Beispiel Konstruktoren der Basisklasse Artikel::Artikel() cout<<"test: Aufruf Defaultkonstruktor Artikel"<<endl; //fuer Test artikelnummer=0; bezeichnung="leer"; bestand=0; stueckpreis=0.0; } Artikel::Artikel(unsigned int nr,string bez) cout<< Test Aufruf Konstruktor Artikel ;//fuer Test artikelnummer=nr; bezeichnung=bez; bestand=0; stueckpreis=0.0; } Dr. Norbert Spangler / Grundlagen der Informatik
24 Beispiel Konstruktor der abgeleiteten Klasse (a) Druckerpapier::Druckerpapier (unsigned int p_nummer, string p_bezeichnung, unsigned int p_paketgroesse) cout<< Test: Aufruf Konstruktor Druckerpapier ;//fuer Test setartikelnummer(p_nummer); //erforderliche Methode der Basisklasse setbezeichnung(p_bezeichnung); //erforderliche Methode der Basisklasse setbestand(0); //erforderliche Methode der Basisklasse setstueckpreis(0.0); //erforderliche Methode der Basisklasse paketgroesse= p_paketgroesse; paketpreis=0.0; }; Problem: Es wurde nur die Methode setstueckpreis vorgesehen. Die anderen gibt es (noch nicht) nicht. Dr. Norbert Spangler / Grundlagen der Informatik
25 Beispiel abgeleitete Klasse/protected- (b) Druckerpapier::Druckerpapier (unsigned int p_nummer, string p_bezeichnung, unsigned int p_paketgroesse) cout<< Test: Aufruf Konstruktor Druckerpapier ;//fuer Test artikelnummer=p_nummer; //erlaubt wenn protected bezeichnung=p_bezeichnung; //erlaubt wenn protected bestand=0; //erlaubt wenn protected stueckpreis=0.0; //erlaubt wenn protected paketgroesse= p_paketgroesse; paketpreis=0.0; }; Was passiert Dr. Norbert Spangler / Grundlagen der Informatik
26 Beispiel main: Aufruf Defaultkonstruktoren void main() Druckerpapier k1(110,"office", 5); k1.anzeigen(); } -> Der Defaultkonstruktor der Basisklasse wird im Konstruktor der abgeleiteten Klasse zuerst aufgerufen. ACHTUNG: Es wird immer ein Konstruktor der Basisklasse aufgerufen. Eigenschaften der Basisklasse werden also doppelt initialisiert -> ungeschickt. Dr. Norbert Spangler / Grundlagen der Informatik
27 Konstruktor mit Basisklassenkonstruktor-( c ) Idee: Verwendung eines Konstruktor der Basisklasse für Eigenschaften der Basisklasse und direkte Belegung der Eigenschaften der abgeleiteten Klasse Druckerpapier::Druckerpapier(unsigned int nr,string bez,unsigned int pk): Artikel(nr,bez) cout<<"test: Aufruf Konstruktor Druckerpapier"<<endl; paketgroesse=pk; paketpreis=0.0; } : KonstruktorBasisklasse( ) Dr. Norbert Spangler / Grundlagen der Informatik
28 Konstruktor mit Basisklassenkonstruktor Allgemein AbgeleiteteKlasse::AbgeleiteteKlasse( ): Basisklasse( ) neueeigenschaft1=parameterx;. } Dr. Norbert Spangler / Grundlagen der Informatik
29 Beispiel main: Aufruf Konstruktor c void main() Druckerpapier k1(110,"office", 5); k1.anzeigen(); } Der ausgewählte Konstruktor der Basisklasse wird nun aufgerufen -> keine doppelte Initialisierung Dr. Norbert Spangler / Grundlagen der Informatik
30 #include "artikel.h" #include "Druckerpapier.h" using namespace std; 1.7 Testprogramm void main() Druckerpapier k1(110,"office", 5); k1.anzeigen(); k1.setstueckpreis(2.70);//basisklassenmethode k1.setpaketpreis(12.5);//methode der abgeleiteten Klasse k1.anzeigen(); //Methode der abgeleiteten Klasse }; Dr. Norbert Spangler / Grundlagen der Informatik
Thema 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:
MehrProgrammieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden
Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1
MehrVererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1
Vererbung 1 11.1 Motivation und Begriffsdefinitionen 11.2 Vorgehensweise und Implementierung 11.3 Arten von Vererbung 11.4 Konstruktoren 11.5 Abstrakte Klasse 11.6 Verschattung 11.7 Wurzelklasse Object
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
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:
MehrAngewandte Mathematik in OOP WS 2011/12. Abschluss-Test
Angewandte Mathematik in OOP WS 2011/12 Abschluss-Test 012 6 5 4 5 6 Aufgabe 1 (9 Punkte 1 Punkt je Antwort) Bitte jeweils eine Antwort ankreuzen (je nach Fragestellung die richtige oder falsche): a.)
MehrEinführung in C++ Vererbung und Polymorphismus
Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen
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.
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
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:
MehrC/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson.
Vererbung Seite 1 von 6 Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson char Nachname[30] char Vorname[30] CPerson() void setnachname() void setvorname() void getname()
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
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrVererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz
Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.
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
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation
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
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
MehrObjektorientierte Programmierung
C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen
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
MehrWintersemester 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
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
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
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
MehrObjektorientierte Programmierung III
Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen
MehrMapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017
Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden
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)
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
MehrKap. 11 Objektorientierung: ein Beispiel
Kap. 11 Objektorientierung: ein Beispiel Dr. Norbert Spangler / Programmieren 2 26.12.2015 1 Grundprinzip der Datentypen und Klassen Name des Typs Elementare Typen int bool Klasse Name (frei wählbar) Daten
MehrÜbersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren
C++ - Vererbung Übersicht Bisherige Verwendung von Klassen Vererbung Grundlagen Zugriffschutz Vererbte Funktionen Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren
MehrKlausur Programmieren 2 WS 2017/18
Klausur Programmieren 2 WS 2017/18 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt
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
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
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
MehrAbend 4 Übung : Erweitern von Klassen durch Vererbung
Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren
MehrKapitel 13. Definition von Klassen. OOP Thomas Klinker 1
Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
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,
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrProgrammiertechnik Objektorientierung
Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche
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
Mehr2. Vererbung und Kapselung
2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung
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
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
MehrProf. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!
Mehr10. Grundlagen der Objektorientierung
10. Grundlagen der Objektorientierung 10.1 Der objektorientierte Ansatz Bisheriger Funktionsorientierter Ansatz Trennung von Deklaration/Definition von passiven Daten und aktiven Befehlen/Funktionen Dr.
MehrMikrorechentechnik II. Klassen in C++
Mikrorechentechnik II Klassen in C++ class class cfilter { float K; float T; float Ta; public: // Filterverstärkung // Filterzeitkonstante // Tastzeit Zugriffskontrolle: public, protected, private void
Mehr7. Objektorientierung. Informatik II für Verkehrsingenieure
7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete
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
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrPraxis der Programmierung
Klassenvariablen und -methoden, Vererbung Institut für Informatik und Computational Science Henning Bordihn 1 Klassenvariablen und -methoden 2 Klassenvariablen und -methoden werden mit dem Schlüsselwort
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
MehrProgrammieren 2 C++ Überblick
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
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
Mehr9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1
9. Vererbung und Polymorphie 1 Wiederholung Vererbung bedeutet, dass eine Klasse Attribute und Methoden an eine andere Klasse weitergeben kann. Im Klassendiagramm stellt man dies durch einen durchgezogenen
MehrJava: Vererbung. Teil 1: Grundlagen, UML. www.informatikzentrale.de
Java: Vererbung Teil 1: Grundlagen, UML Hierarchie Reptilien Tiere Säugetiere Alle Exemplare einer Klasse verfügen über identische Eigenschaften und nachfolgende Klassen stellen eine Spezialisierung dar.
Mehr3. Objektorientierung Ergänzungen
3. Objektorientierung Ergänzungen 3.1 Strukturen Anstelle des Schlüsselwortes class kann auch das Wort struct verwendet werden. Unterschied zu class: Voreinstellung für die Elemente ist public (bei class
MehrVererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
MehrProgrammieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.
Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter
MehrKlausur Programmieren 2 SS 2016
Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt
Mehr2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article
2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String
Mehrvirtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };
C++ für Anfänger des Programmierens Rieckeheer GSO-Hochschule Nürnberg März 2008 174 a neu Vor Kapitel 24 ist folgender Text einzufügen. Das folgende Programm variiert das Programm VIRTfunktion3.cpp und
MehrKlassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete
2 Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, und Pakete Martin Wirsing Ziele Den Begriff der einfachen und mehrfachen Vererbung verstehen Verstehen, wann Vererbung eingesetzt wird deklarationen
MehrKlausur Programmieren 2 WS2016/17
Klausur Programmieren 2 WS2016/17 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrTeil 2: Weitere Aspekte der Objektorientierung
Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:
MehrGrundlagen der Informatik
Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3
MehrVererbung und Polymorphie
Vererbung und Polymorphie WiMa-Praktikum 1, Teil C++, Tag 5 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 29.08.08
MehrAssoziationen in Java
Assoziationen in Java Michael Dienert 16. Oktober 2018 1 Wiederholung: Gerneralisierung und Vererbung Gerneralisierung ist das Gegenteil von Vererbung: Eine spezielle Klasse erbt von der allgemeineren
MehrProgrammieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen
Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,
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
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
MehrVererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15.
1/23 Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 Formen der C++ Syntax 3/23 Inhaltsverzeichnis 1 2 Formen
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
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
MehrHerzlich willkommen!
Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Disclaimer 2 Diese Vorlesungs-/Unterrichtsfolien wurden durch den Dozenten
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
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
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
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
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
MehrVererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
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
MehrObjektorientierte Anwendungsentwicklung
Name, Vorname Matrikelnummer Klausur zur Vorlesung Objektorientierte Anwendungsentwicklung Krefeld, 16. März 2012 Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt. Die Aufgabenstellung
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
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
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
MehrAufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt.
Aufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt. Was ist eine Klasse? Was ist ein Objekt? Geben Sie ein
MehrKurzeinführung in UML
Kurzeinführung in UML Die Unified Modeling Language (UML) ist eine Sprache zur Beschreibung von Softwaresystemen. Der Grundgedanke bei UML bestand darin, eine einheitliche Notation für viele Einsatzgebiete
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
MehrKapitel 2: OO Grundlagen
Kapitel 2: OO Grundlagen 2.1 Objekte zum Leben erwecken (und Grundmechanismen verstehen) 2.2 Statische Elemente nutzen & vererben 2.3 Kooperation über Interfaces Lothar Schmitz UniBwM (teils nach Prof.
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML Klassendiagramm zeigt Klassen und ihre Beziehungen untereinander Visualisierung und Modellierung der statischen Struktur eines Systems Klassen
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
Mehr9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
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
Mehr