Die Programmiersprache C++ Objektorientierter Ansatz. char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20];

Größe: px
Ab Seite anzeigen:

Download "Die Programmiersprache C++ Objektorientierter Ansatz. char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20];"

Transkript

1 Die Programmiersprache C++ class adressen private: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int adr_eingeben(); int adr_schreiben(); int adr_listen(); ; Dr.-Ing. E. Thiem Datum:

2 Gliederung 5 Objektorientierte Programmierung mit C Idee Objekte und Methoden Klassen und die OOP Konstruktoren und Destruktoren Vererbung Polymorphie Aufgaben zum Kapitel Dr. Thiem C++ Konsolenprogrammierung 103

3 5 Objektorientierte Programmierung mit C Idee Die heute schon als klassisch bezeichnete Methodik der Softwareentwicklung, die wir als strukturiert bezeichnet haben, enthält grundlegende Ideen und Bestandteile zur Bewältigung großer, komplexer Probleme. Die rasche Entwicklung der Hardware in den zurückliegenden Jahren hat der sich kaum weiter entwickelten Methodik der Softwareentwicklung den Ruf beschert hinterher zu hinken. Die OOP (kurz für Objektorientierte Programmierung), anfangs auch hochwissenschaftlich als objektorientiertes Paradigma bezeichnet, ist eine der wichtigsten Antworten der Informatik als Wissenschaft auf diesen Vorwurf. In den bisherigen Kapiteln wurden für die Beschreibung der Daten-Basis Strukturen wie array, struct und für die Beschreibung der Programm-Basis wurden Funktionen verwendet. Die Grundidee der OOP besteht darin, daß zusammengehörige Strukturen aus Programm- und Daten-Basis zu einer eigenen, neuartigen Struktureinheit Klasse - zusammengefaßt werden. 5.2 Objekte und Methoden Das objektorientierte Paradigma geht davon aus, dass ein Softwaresystem aus Objekten besteht, an denen Methoden (Verrichtungen) ausgeführt werden. Die Objekte mit seinen Eigenschaften (auch Attribute genannt) werden durch Daten, die Methoden durch Funktionen beschrieben. Dr. Thiem C++ Konsolenprogrammierung 104

4 Beispiel: Dieses Objekt hat bestimmte Eigenschaften, auf die mit Methoden zugegriffen werden kann. Name: Jana Müller Strasse: Kleiner Weg 25 Adresse eingeben Ort: Seefeld Telefon: 0734/9435 Adresse anzeigen... Attribut: Attributwert 5.3 Klassen und die OOP In der OOP werden die Objekte mit gleichen Eigenschaften und Methoden zu einer Klasse zusammengefasst. Im Sinne der OOP wird also eine Klasse durch die Beschreibung der Datenstrukturen und der anwendbaren Funktionen definiert. Beispiel: Die Klasse Adressen mit den Eigenschaften und den Methoden Name Strasse Adresse eingeben Ort Adresse anzeigen Telefon Dr. Thiem C++ Konsolenprogrammierung 105

5 In C++ steht zur Klassendefinition die class-anweisung zur Verfügung: Programmausschnitt: class adressen private: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int x; int adr_eingeben(void); int adr_schreiben(void); int adr_listen(void); ; //Datendefinition mit Hilfe von //Datentypen //öffentliche Ganzzahl-Variable x, //Methodendefinitionen mit Hilfe //von Funktionen Die Schlüsselworte private, public und protected haben ihren Sinn im Zusammenhang mit der Datenkapselung innerhalb der Objekte der Klasse hinsichtlich des äußeren Zugriffs. UML- Darstellung (adressen) name strasse ort telefon adr_eingeben() adr_schreiben() adr_listen() Zugriffsbeschränkungen zu den Elementen (Daten und Funktionen): private: es darf nur innerhalb der Klasse zugegriffen werden (privat) es liegen keine Zugriffsbeschränkungen vor (öffentlich) protected: der Zugriff ist nur innerhalb der Klasse und den abgeleiteten Klassen möglich Dr. Thiem C++ Konsolenprogrammierung 106

6 Bezugnahme Klasse-Methode herstellen: Die Funktion wird innerhalb der Klasse deklariert und außerhalb der Klasse definiert. Der Scope-Operator "<Klassenname> :: <Methodenname> sichert dabei die Zuordnung einer benutzten Methode zur Klasse. DatenTyp Klassenname :: Funktionsname( ) Programmausschnitt: int adressen :: adr_eingeben(void) cout<<"name: " ; cin >>name; cout<<"vorname: " ; cin >>vorname; //usw. // Zuordnung Methode zur Klasse adressen Verwendung der Klasse: Ein Objekt ist eine Variable vom Typ einer vorgegebenen Klasse. Das Anlegen eines Objektes erfolgt nach folgender Vorschrift: Klassenname Objektname (Wertübergabe) Beispiele: class neu adressdaten; class adressen adressdaten[10]; Für den Zugriff auf Elementfunktionen einer Klasse gilt allgemein: Objektname. Elementfunktion ( ) Beispiele: adressdaten.adr_eingeben(); adressdaten[0]. adr_eingeben(); Dr. Thiem C++ Konsolenprogrammierung 107

7 Programmausschnitt: Beispiel in C++: Projekt öffnen void main(void) class adressen adressdaten[10]; adressdaten[0].adr_eingeben(); adressdaten[0].adr_schreiben(); // Anlegen eines Objektes adressdaten // mit insgesamt 10 Elementen // Zugriff auf Methoden der Klasse adressen //auf 1. Element des Objektes weitere Beispiele: adressen ad1; ad1.adr_eingeben(); ad1.name="tim"; ad1.x=7; Objektdefinition (Instanz) von ad1 zur Klasse adressen Methodenaufruf klappt als äußerer Zugriff, weil adr_eingeben public vereinbart ist. Compilerfehler, weil name private vereinbart ist. kein Fehler, weil x eine public-variable ist Innerhalb der Klassendefinition (vor allem bei der Definition der Funktionen) kann auf jede vereinbarte Variable (auch private und protected) zugegriffen werden. z.b. name = "Tim". Die Namenstypen protected und private unterscheiden sich bezüglich einer Basisklasse nicht. In abgeleiteten Klassen kommt es zu Unterschieden beim inneren Zugriff. Ein äußerer Zugriff ist nur für public -Größen möglich. Dr. Thiem C++ Konsolenprogrammierung 108

8 Zusammenfassung des bisherigen Beispiels: Beispiel in C++: Projekt öffnen #include <iostream> using namespace std; class adressen private: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; //int x; int x; int adr_eingeben(void); int adr_schreiben(void); int adr_listen(void); ; int adressen::adr_eingeben(void) cout<<"name: "; cin >>name; cout<<"vorname: "; cin >>vorname; //Anlegen einer Klasse //Definition der Methoden int adressen::adr_schreiben(void) cout<<"name: "; cout <<name<<endl; cout<<"vorname: "; cout <<vorname<<endl; int adressen::adr_listen(void) void main(void) class adressen adressdaten[10]; adressdaten[0].x=7; adressdaten[0].adr_eingeben(); adressdaten[0].adr_schreiben(); //Hauptfunktion //Anlegen eines Objektes //Aufruf der Methoden Dr. Thiem C++ Konsolenprogrammierung 109

9 5.4 Konstruktoren und Destruktoren Jedes mit Hilfe einer Vereinbarung neu geschaffene Objekt wird als Instanz der Klasse bezeichnet. Der Aufbau einer solchen Instanz wird mit Hilfe eines Konstruktors und die Entfernung der Instanz mit einem Destruktor (in C++: automatisch beim Aufruf der Klasse) vorgenommen. Konstruktoren und Destruktoren Spezielle Methoden einer Klasse Konstruktoren heißen genau wie die Klasse Destruktoren heißen wie die Klasse, jedoch mit dem Zeichen ~(126) vor dem Namen Konstruktoren: werden bei Instanzbildung einer Klasse automatisch gerufen belegen Instanzvariable mit Anfangswerten Destruktoren: werden bei Ende der Lebensdauer eines Objektes automatisch gerufen werden meist benutzt, um Speicherbereiche freizugeben, die über Instanzvariablen addressiert werden Konstruktoren/Destruktoren haben keinen Typ, sie liefern keinen Wert (auch nicht void). Dr. Thiem C++ Konsolenprogrammierung 110

10 Programmausschnitt: Beispiel in C++: Projekt öffnen #include <iostream> using namespace std; #include <string> class adressen private: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int x; adressen(); ~adressen(); int adr_eingeben(void); int adr_schreiben(void); int adr_listen(void); ; //Datendefinition mit Hilfe von //Datentypen //öffentliche Ganzzahl-Variable x, //Konstruktor //Destruktor //Methodendefinitionen mit Hilfe //von Funktionen //Konstruktor adressen::adressen() cout << "Anfangswerte setzen\n"; //Setzen der Anfangswerte //Destruktor adressen::~adressen() cout<<"freigabe des Speicherbereiches\n"; //Freigabe des Speicherbereiches Dr. Thiem C++ Konsolenprogrammierung 111

11 weiteres Beispiel: Beispiel in C++: Projekt öffnen l #include <iostream> using namespace std; class Klasse int wert; Klasse() cout << "Konstruktor 1" << endl; wert = 0; Klasse(int i) cout << "Konstruktor 2" << endl; wert = i; ~Klasse() cout << "Destruktor" << endl; ; void main(void) cout << "Programmstart" << endl; Klasse v1, v2 = 3; cout << "im Hauptblock" << endl; cout << "im Dummyblock" << endl; Klasse v3, v4 = 99; cout << "verlasse Dummyblock" << endl; cout << "verlasse Programm" << endl; //Konstruktor v1, Konstruktor v2 //Dummyblock um Konstruktor zu testen //Dummy Block Beginn //Konstruktor v3, Konstruktor v4 //Destruktor v3, Destruktor v4 //Dummy Block Ende Im Beispiel wurde eine Klasse namens Klasse erklärt. Sie definiert als Datenwert die Variable x und als Methoden zwei Konstruktoren - Klasse() und Klasse(int i) - und einen Destruktor - ~Klasse() -. In der Hauptfunktion main werden die Instanzen v1 und v2 mit einer einfachen Vereinbarung gebildet. Die Instanz v1 wird mit der Standard-Konstruktor- Methode Klasse() und v2 mit der Konstruktormethode Klasse(int i) initialisiert. Die Initialisierung bedeutet hier nur das Setzen der Variablen wert für v1 auf 0 und für v2 auf 3. Man spricht bei der Erstellung neuer Objekte einer Klasse auch von einer Instanziierung der Klasse. v3 und v4 werden im eingeschobenen Dummy-Block zur Klasse Klasse instanziiert. Dr. Thiem C++ Konsolenprogrammierung 112

12 Durch diese Konstruktion wird es möglich, die Arbeit des Destruktors zum Abschluß des Blockes zu beobachten. Die Zerstörung der Instanzen v1 und v2, die im Hauptblock aufgebaut wurden, können durch cout nicht sichtbar gemacht werden. 5.5 Vererbung Die Bildung einer Klasse ist eine für den Programmierer arbeitsintensive Sache, der er viel Sorgfalt zuwenden muss. Zur Vereinfachung des Aufbaus von Klassen, die mit schon definierten eine Ähnlichkeit besitzen kann durch die Nutzung der Vererbung etwas vereinfacht werden. Unter Vererbung versteht man die Möglichkeit, Klassen von anderen Klassen abzuleiten. Die abgeleiteten Klassen (Kindklassen) erhalten zunächst alle Elemente der Basisklasse (Elternklasse). In der Kindklasse können noch zusätzliche Elemente vereinbart werden. Voraussetzung dafür ist die Änderung der Zugriffsrechte von private auf protected in der Elternklasse!!! Im Kapitel 5.3 wurde eine Klasse adressen definiert. Im folgenden Beispiel werden zwei Kindklassen - meine_freunde und kunden - dieser Klasse aufgebaut, die neben den Grundelementen der Basisklasse adressen weitere Elemente definieren: UML- Darstellung (adressen) name strasse ort telefon adr_eingeben() adr_schreiben() adr listen() (meine_freunde) geburtstag lieblingsessen (kunden) kundennummer umsatz schreibe_geburtstag() geburtstagsliste() lies_kundennummer() lies_umsatz(int monat) Dr. Thiem C++ Konsolenprogrammierung 113

13 Programmausschnitt: Beispiel in C++: Projekt öffnen class adressen protected: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int x; adressen(); ~adressen(); int adr_eingeben(void); int adr_schreiben(void); int adr_listen(void); ; class meine_freunde : public adressen private: char geburtstag[10]; char lieblingsessen[50]; int schreibe_geburtstag(void); int geburtstagsliste(int monat); ; class kunden : public adressen private: int kundennummer; int umsatz[12]; int lies_kundennummer(void); int lies_umsatz(int monat); ; //Basisklasse Adressen // Aenderung der Zugriffsrechte //von private auf protected //Abgeleitete Klasse meine_freunde //Vererbung der Eigenschaften und // Funktionen aus Basisklasse adressen //zusätzliche Eigenschaften //zusätzliche Funktionen //Abgeleitete Klasse kunden //Vererbung der Eigenschaften und // Funktionen aus Klasse adressen void main(void) class kunden kd_daten[10]; kd_daten[0].lies_kundennummer(); // Anlegen eines Objektes kd_daten //Zugriff auf Methode lies_kundennummer() //der abgeleiteten Klasse kunden Dr. Thiem C++ Konsolenprogrammierung 114

14 Der Zusatz : public adressen legt die Elternklasse fest; alle nachfolgenden Deklarationen gelten zusätzlich. Im Beispiel sehen wir eine sogenannte Einfach-Vererbung, es sind allerdings auch Mehrfachvererbungen möglich. Für die abgeleitete Klasse kunden könnte eine weitere Klasse mit zusätzlichen Elementen definiert werden: class stammkunden : public kunden... Es ist wohl erkennbar, wie die Vererbungsmethodik dem Programmierer die Arbeit erleichtert. Allerdings wird vom Programmierer Kenntnis der verwendeten Basisklassen verlangt. Gerade bei der Ausbildung von Programmierern ist deshalb die Kenntnisvermittlung zu den Eigenschaften und Methoden der allgemeinen Basisklassen, die in bekannten Entwicklungsumgebungen (Visual C++, Borland C++ Builder,...) vordefiniert sind, ein wesentlicher Bestandteil der Wissensvermittlung. Dr. Thiem C++ Konsolenprogrammierung 115

15 Zusammenfassung des bisherigen Beispiels: #include <iostream> using namespace std; #include <string> //Basisklasse adressen class adressen protected: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int x; adressen(); ~adressen(); int adr_eingeben(void); int adr_schreiben(void); int adr_listen(void); ; //Abgeleitete Klasse meine_freunde class meine_freunde : public adressen private: char geburtstag[10]; char lieblingsessen[50]; int schreibe_geburtstag(void); int geburtstagsliste(int monat); ; //Abgeleitete Klasse kunde class kunden : public adressen private: int kundennummer; int umsatz[12]; int lies_kundennummer(void); int lies_umsatz(int monat); ; //Konstruktor adressen::adressen() cout<<"anfangswerte setzen\n"; //Destruktor adressen::~adressen() cout<<"freigabe des Speicherbereiches\n"; // int adressen::adr_eingeben(void) cout<<"name: "; cin >>name; cout<<"vorname: "; cin >>vorname; int adressen::adr_schreiben(void) cout<<"name: "; cout <<name<<endl; cout<<"vorname: "; cout <<voname<<endl; int adressen::adr_listen(void) int meine_freunde ::schreibe_geburtstag(void) adressen:adr_eingeben(); cout<<"geburtstag: "; cin>>geburtstag; int kunden::lies_kundennummer(void) adressen:adr_eingeben(); int kundennummer; cout<<"kundennummer: "; cin>>kundennummer; void main(void) class meine_freunde freundedaten[10]; cout<<"daten der Freunde\n"; freundedaten[0].schreibe_geburtstag(); cout<<"daten der Kunden\n"; class kunden kd_daten[10]; kd_daten[0].lies_kundennummer(); Dr. Thiem C++ Konsolenprogrammierung 116

16 5.6 Polymorphie Mit Hilfe der in C++ möglichen Polymorphie kann erreicht werden, dass gleichnamige Methoden sich in Eltern- und verschiedenen vererbten Klassen unterschiedlich verhalten. Die Polymorphie wird mit Hilfe der sogenannten Überladung realisiert, die virtuelle Klassenbestandteile benutzt. Wir betrachten das folgende Beispiel mit Bezug auf die in den bisherigen Kapiteln definierten Basis- und Kindklassen: class adressen protected: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int x; adressen(); ~adressen(); virtual int adr_eingeben(); int adr_schreiben(); int adr_listen(); ; //durch das Schlüsselwort virtual kann diese Methode in den abgeleiteten Klassen überschrieben werden class meine_freunde : public adressen private: char geburtstag[10]; char lieblingsessen[50]; int adr_eingeben(); int geburtstagsliste(int monat); ; int meine_freunde :: adr_eingeben() adressen:adr_eingeben(); cout<<"geburtstag: "; cin>>geburtstag; //Methode adr_eingeben aus Klasse meine_freunde //Aufruf der Methode adr_eingeben //aus Klasse adressen Beispiel in C++: Projekt öffnen void main(void) class meine_freunde freundedaten[10]; cout<<"daten der Freunde eingeben:"<<endl; freundedaten[0].adr_eingeben(); // Anzahl der meine_freunde-datensätze festlegen // Aufruf der Methode adr_eingeben() aus der //Klasse meine_freunde Dr. Thiem C++ Konsolenprogrammierung 117

17 Die Polymorphie bewirkt durch die unterschiedliche Wirksamkeit von Methoden gleichen Namens eine uneindeutige Zuordnung zur gewünschten Ausführung. Wie bereits unter 5.3 sichert der Scope-Operator "<Basisklasse> :: <Methodenname> die Zuordnung einer benutzten polymorphen Methode zur Klasse. Zusammenfassung des bisherigen Beispiels: #include <iostream> using namespace std; #include <string> // Basisklasse //*********************************************** class adressen protected: char name[30]; char vorname[30]; char strasse[40]; char ort[40]; char telefon[20]; char [20]; int x; adressen(); ~adressen(); virtual int adr_eingeben(); int adr_schreiben(); int adr_listen(); ; //Vererbung der Basisklasse //*********************************************** class meine_freunde : public adressen private: char geburtstag[10]; char lieblingsessen[50]; int adr_eingeben(); int geburtstagsliste(int monat); ; //Konstruktor //********************************************** adressen::adressen() cout<<"anfangswerte setzen\n"; //Methoden der Basis-Klasse //********************************************** int adressen::adr_eingeben() cout<<"name: "; cin >>name; cout<<"vorname: "; cin >>vorname; int adressen::adr_schreiben() cout<<"name: "; cout <<name<<endl; cout<<"vorname: "; cout <<vorname<<endl; int adressen::adr_listen() //Polymorphie //******************************************** int meine_freunde :: adr_eingeben() adressen::adr_eingeben(); cout<<"geburtstag:"; cin>>geburtstag; //Hauptfunktion //******************************************** void main(void) class meine_freunde freundedaten[10]; cout<<"daten der Freunde eingeben:"<<endl; freundedaten[0].adr_eingeben(); //Destruktor //********************************************** adressen::~adressen() cout<<"freigabe des Speicherbereiches\n"; Dr. Thiem C++ Konsolenprogrammierung 118

18 Das folgende Komplexbeispiel zur OOP stellt noch einmal die behandelte Methodik umfassend dar. Beispiel in C++: Projekt öffnenl // Programmbeispiel: "tanken.cpp" // Kostenabrechnung fuer einen Tankwart in C++ // Aus Bd.3 Lernfelder und Lernkompetenzen IT-Ausbildung // Medieninstitut Bremen 1998 S #include <iostream> using namespace std; #include <iomanip> #include <stdio.h> #include <stdlib.h> // Standard I/O-Klassen // wird fuer setw() gebraucht // fuer getch() // fuer exit() und system() const int MWSTSATZ = 19; // Mwstsatz in % void linie(int anz) for (int i = 0; i < anz; i++) cout << '-'; // Eine Linie der Laenge anz ausgeben // class Kraftstoff // Die Klasse "Kraftstoff" vereinbaren private: double literpreis; char * bezeichnung; Kraftstoff() // Konstruktor (default) literpreis = 0.0; bezeichnung = ""; Kraftstoff(double lp, char * n) // Konstruktor (mit Parametern) literpreis = lp; bezeichnung = n; double ArtPreis() // Funktion Literpreisrueckgabe return literpreis; char * ArtName() // Funktion Bezeichnungsrueckgabe return bezeichnung; ; // Ende der Klassenvereinbarung "Kraftstoff" // class Beleg // Die Klasse "Beleg" vereinbaren private: double liter; double preis; double mwst; double BruttoFaktor; Kraftstoff art; // Aufbau der Instanz "art" zur Klasse "Kraft-stoff" Beleg() // Konstruktor (default) liter = preis = mwst = 0.0; void setart(kraftstoff a) // Die Art des Kraftstoffes festlegen art = a; void frgliter() cout << endl << "Kassenabrechnung fuer Kraftstoff: " Dr. Thiem C++ Konsolenprogrammierung 119

19 << art.artname() << endl << endl << "Bitte Literzahl eingeben: "; cin >> liter; BruttoFaktor = art.artpreis()*(mwstsatz ) / 100.0; while (liter <= 0.0 liter*bruttofaktor >= ) cout << endl << "Maximal " << / BruttoFaktor << " und minimal 0.01 Liter eingeben!" << endl << "Bitte richtige Literzahl eingeben: "; cin >> liter; mwst = liter * art.artpreis() * MWSTSATZ / 100.0; preis = liter * BruttoFaktor; void zeigan() // zeigt das Ergebnis auf Bildschirm an cout.precision(2); // 2 Stellen Genauigkeit cout.setf(ios::fixed, ios::floatfield); cout << endl << "Menge" << setw(19) << "Kraftstoff" << setw(8); cout << "MWST" << setw(23) << "Verkaufspreis" << endl; linie(55); cout << endl << setw(6) << liter << " Liter" << " " << art.artname(); cout << setw(12) << mwst << " EURO" << setw(15) << preis << " EURO" << endl; void drucken(); // hier nur Prototyp der Funktion "drucken" ; // Ende der Klassenvereinbarung "Kraftstoff" // void Beleg::drucken() // externe Funktionsdeklaration zum internen Prototyp cout.precision(2); cout.setf(ios::fixed, ios::floatfield); cout << endl << " " << endl << " T A N K S T E L L E " << endl << " Fa. Gutbenzin " << endl << " Reifenweg 5 " << endl << " Musterort " << endl << " ******************* " << endl << " * " << art.artname() << " * " << endl << " * " << setw(8) << liter << " Liter * " << endl << " * " << setw(8) << preis << " EURO * " << endl << " ******************* " << endl << " MWST " << MWSTSATZ << "% " << setw(7) << mwst << " EURO " << endl << " " << endl << " Wir w" << "\x81" << "nschen Ihnen " << endl << " eine gute Fahrt! " << endl << " " << "\n\n Geben Sie eine Taste zur Fortsetzung!" << endl << " " << endl; char menue() // Menue anzeigen und Bedienereingaben liefern char ein; cout << endl << "Kostenabrechnung fuer einen Tankwart" << endl << endl << endl << " 0 - Ende des Programms " << endl << endl << " 1 - Normalbenzin abrechnen" << endl << " 2 - Superbenzin abrechnen" << endl << " 3 - Diesel abrechnen " << endl << endl << "Ihre Wahl? "; cin >> ein; return ein; void berechnung(kraftstoff art) Beleg b; b.setart(art); // Funktion zur Kostenberechnnung // Instanz "b" zur Klasse "Beleg" aufbauen // Art des Kraftstoffes uebergeben Dr. Thiem C++ Konsolenprogrammierung 120

20 b.frgliter(); b.zeigan(); b.drucken(); // die getankte Menge erfragen // das Berechnungsergebnis anzeigen // den Beleg drucken int main() // Hauptfunktion // Drei Instanzen der Klasse "Kraftstoff" erzeugen und initialisieren Kraftstoff normal(1.47, "Normal"); Kraftstoff super(1.52, "Super "); Kraftstoff diesel(1.32, "Diesel"); char auswahl; while ((auswahl = menue())!= '0') switch (auswahl) case '1': berechnung(normal); break; case '2': berechnung(super); break; case '3': berechnung(diesel); break; getc(stdin); cout << " "; cout << endl << "Programmende" << endl; return 0; Dr. Thiem C++ Konsolenprogrammierung 121

21 5.7 Aufgaben zum Kapitel 5 1. Erklären Sie den Unterschied der C++-Anweisungen struct und class! 2. Erklären Sie den Sinn der Konstruktoren und Destruktoren für die Instanzen einer Klasse! 3. Welcher Zusatz muss für eine Elementdefinition innerhalb einer Klassendefinition angegeben werden, wenn auf das Element von außerhalb dieser Klasse zugegriffen werden soll? 4. Mit welchem Operator können Sie eine Methode, die aufgerufen werden soll einer Instanz zuordnen? Mit welchem Operator können Sie eine polymorphe Methode einer Klasse zuordnen? Nennen Sie Beispiele! 5. Ordnen Sie die folgenden Begriffe in Objekte und Methoden: a) Datenbank für gemeldete Einwohner einer Stadt b) Drucken von Einwohnerlisten für die Wahl c) Gespeicherte Daten eines Autofahrers in Flensburg d) Daten der minderjährigen Einwohner e) Eingeben einer Überweisung am Bankautomaten f) Ausdrucken eines Kontoauszuges g) Gespeicherte Kontostände 6. Benutzen Sie die in dem Kapitel definierten Klassen adressen und kunden und verwirklichen Sie die durch Prototyp angedeuteten Methoden innerhalb der Klassen! Schaffen Sie ein arbeitsfähiges Programm dazu! 7. Schaffen Sie eine Klasse für die Bücher einer Bibliothek mit folgenden Angaben zu jedem Buch: Lfd.Nummer, Titel, Verfasser, Preis, zur Entleihung zugelassen (j/n), Erscheinungsjahr, Verlag, Datum der Aufnahme in die Bibliothek, Anzahl der Exemplare. Nehmen Sie Methoden zur Erfassung der Daten auf! Entwerfen Sie Methoden, die folgende Angaben ausgeben: a) Titel und Erscheinungsjahr des Buches, das am längsten in der Bibliothek ist. b) Titel, Verfasser und Preis des teuersten Buches c) Titel, Verfasser aller Bücher eines einzugebenden Verlages 8. Titel, Verfasser aller Bücher eines einzugebenden Erscheinungsjahres. Schaffen Sie eine Kindklasse zu Aufgabe 7 für eine internationale Bibliothek, die zusätzlich zur Basisklasse Angaben zur Sprache und zum Erscheinungsland aufnimmt. Nehmen Sie eine zusätzliche Methode zur Ausgabe mit auf, die alle Bücher einer gewünschten Sprache mit Titel, Verfasser und Herstellungsland ausgibt! Dr. Thiem C++ Konsolenprogrammierung 122

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Ü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

Mehr

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Vererbung 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

C++ - Objektorientierte Programmierung Vererbung

C++ - 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.

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien 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

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

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:

Mehr

Auswahlen (Selektionen)

Auswahlen (Selektionen) 1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR 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

Mehr

Rü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 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

Mehr

Repetitorium Informatik (Java)

Repetitorium 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

Mehr

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Programmieren 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

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ 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

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

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP 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

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

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:

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Klassen in C++ Beispiele, mit Aufzeigen der Trennung von Spezifikation und Implementierung

Mehr

ios fstream ifstream

ios fstream ifstream 4 Grundlagen der Dateiarbeit 4.1 File-Stream-Klassen Mit der Beendigung eines Programms gehen die im Hauptspeicher gehaltenen Daten des Programms verloren. Um Daten permanent zu speichern, müssen sie in

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

3.3 Konstruktoren und Destruktoren

3.3 Konstruktoren und Destruktoren Konstruktoren eine spezielle Form von Methoden gleicher Name wie Klasse kein Rückgabewert Aufgabe: Instanzen einrichten (konstruieren), Anfangswerte setzen, Werte übernehmen, an Instanzvariablen übergeben

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Einführung in die Programmierung mit C++

Einfü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

Mehr

Vererbung. 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. 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

Mehr

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };

virtual 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

Mehr

Verwendung von Klassen in C++

Verwendung von Klassen in C++ Verwendung von Klassen in C++ Heute: Benutzerdefinierte Datentypen (Konkrete Klassen) Vektoren Komplexe Zahlen Adressdatei Morgen: Objektorientierte Programmierung (Abstrakte Klassen) Vererbung Polymorphie

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte 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

Einführung in das Objektorientierte Programmieren mit C++

Einführung in das Objektorientierte Programmieren mit C++ BEREICH DATENTECHNIK I CP 700 00 TH 03 Einführung in das Objektorientierte Programmieren mit C++ Kapitel 7 7. Laufzeit-Polymorphie 7.1. Frühes und spätes Binden 7.2. Virtuelle Funktionen FG TECHNISCHE

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung 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

Mehr

Vererbung und Polymorphie

Vererbung 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

Mehr

4. Objektorientierte Programmierung mit C++

4. 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

Mehr

01. Grundprinzipien der Vererbung

01. 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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Klausur Informatik WS 2012/13

Klausur Informatik WS 2012/13 Klausur Informatik WS 2012/13 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweies: Voraussetzung für die Teilnahme ist das Bestehen

Mehr

Vererbung, Polymorphie

Vererbung, 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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Vorkurs 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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte 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

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ziele Sie wissen, was Vererbung

Mehr

Hydroinformatik I: Klassen

Hydroinformatik I: Klassen Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 27. November 2015 1/13 Prof.

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Hydroinformatik I: Klassen

Hydroinformatik I: Klassen Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 11. November 2016 1/20 Prof.

Mehr

Grundlagen der Informatik

Grundlagen 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

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs 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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte 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

Mehr

Einführung in die Programmierung Wintersemester 2016/17

Einführung in die Programmierung Wintersemester 2016/17 Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Programmieren in Java

Programmieren 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

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17 C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen

Mehr

c) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an.

c) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an. Klausur OOP SS2001 (Gampp) ufgabe 1 (22 Punkte) a) Während einer bargeldlosen Giro-ank Transaktion können eträge zwischen Währungen konvertiert werden. Eine Klasse Transaktion soll solche uchungen beschreiben

Mehr

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientiertes 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

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment

Mehr

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 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

Mehr

Informatik 1 MaVt FS Übung 10

Informatik 1 MaVt FS Übung 10 Informatik 1 MaVt FS 2010 Übung 10 Claudia Kuster ckuster@inf.ethz.ch Mittwoch 13-15h HG E 27 http://graphics.ethz.ch/~ckuster/teaching/mavt_info1_2010.html Vorlesung Objektorientierte Programmierung Konstruktoren

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 12 Kapitel 18 Konstruktor / Destruktor einer Klasse Seite 1 von 12 Konstruktoren - Zur Initialisierung der Eigenschaften einer Klasse werden Konstruktoren verwendet. - Der Konstruktor wird bei der Definition

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-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

Mehr

Einführung in C ++ und die Objektorientierte Programierung

Einführung in C ++ und die Objektorientierte Programierung 1/38 Einführung in C ++ und die Objektorientierte Programierung Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/38 Outline

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 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

Mehr

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Die 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

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Einführung in die Programmierung für NF MI. Übung 07

Einführung in die Programmierung für NF MI. Übung 07 Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Überblick. Überblick zum weiteren Inhalt

Ü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

Mehr

Konstruktor/Destruktor

Konstruktor/Destruktor 1/23 Konstruktor/Destruktor 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 3/23 Inhaltsverzeichnis 1 2

Mehr

11 Vererbung und Klassenhierarchie

11 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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Mikrorechentechnik II. Klassen in C++

Mikrorechentechnik 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

Mehr

Grundzüge der objektorientierten Programmierung

Grundzüge der objektorientierten Programmierung BERGISCHE UNIVERSITÄT GESAMTHOCHSCHULE WUPPERTAL GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202)

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Klassen. Kapitel Klassendeklaration

Klassen. Kapitel Klassendeklaration Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Kapitel 6: Dynamische Speicherverwaltung

Kapitel 6: Dynamische Speicherverwaltung Kapitel 6: Dynamische Speicherverwaltung Dieses Kapitel beschreibt die Operatoren new und delete, mit denen dynamisch Speicher reserviert und freigegeben wird. Außerdem wird im Detail eingegangen auf:

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 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

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 9-1 Studentendatei Sie sollen ein Programm zur Verwaltung von Studenten (Büchern, Autos, Supermarktartikeln, etc...) schreiben.

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Heute Dynamische Speicherverwaltung

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

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

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

Mehr

Grundlagen der Informatik 11. Zeiger

Grundlagen der Informatik 11. Zeiger 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große

Mehr

Vererbung und Polymorphie

Vererbung 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

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1 Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16 1 Zauberer und Zwerge, Aufgabenteil 1 Stellen Sie sich vor, Sie sollen eine Charakterverwaltung für das neue Onlinerollenspiel

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Klassen 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 Einführung Konstruktoren / Destruktoren

Mehr

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Grundlagen 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,

Mehr