10. Grundlagen der Objektorientierung

Größe: px
Ab Seite anzeigen:

Download "10. Grundlagen der Objektorientierung"

Transkript

1 10. Grundlagen der Objektorientierung

2 10.1 Der objektorientierte Ansatz Bisheriger Funktionsorientierter Ansatz Trennung von Deklaration/Definition von passiven Daten und aktiven Befehlen/Funktionen Dr. Norbert Spangler / Grundlagen der Informatik

3 Funktionsorientierter Ansatz Funktion 0 Daten Funktion 1 Funktion 2 Funktion 2.1 Funktion 2.2 Dr. Norbert Spangler / Grundlagen der Informatik

4 Objekt A Objektorientierter Ansatz Öffentlichkeit (Programm) Objekt B Daten von A Daten von B Funktion 1 Funktion y Funktion 2 Funktion 3 Funktion z Dr. Norbert Spangler / Grundlagen der Informatik

5 Objektorientierter Ansatz Objekt Daten Die Daten eines Objekts sind privat und werden üblicherweise als Eigenschaften oder Attribute bezeichnet. Funktion 1 Funktion 2 Funktion 3 Die Funktionen eines Objekts sind öffentlich und werden üblicherweise als Methoden bezeichnet. Dr. Norbert Spangler / Grundlagen der Informatik

6 Klassen und Objekte Objekte mit gemeinsamen Eigenschaften und Methoden werden in einem Datentyp Klasse zusammengefasst. Die Klasse ist das wesentliches Sprachelement der Objektorientierten Programmierung (OOP). Objekte sind dann Variable vom Typ der Klasse und somit beschrieben durch die Eigenschaften Methoden = Daten mit konkreten Werten = Funktionen zur Bearbeitung der Daten. Klasse : Datentyp Objekt : deklarierte Variable Dr. Norbert Spangler / Grundlagen der Informatik

7 Beispiele für Klassen Klasse Eigenschaften Methoden Bauteil Eingang verbinden Ausgang anzeigen Stromfluss... PKW Hersteller fahren Typ bremsen Leistung parken Tankstand anlassen... Konto Eigentümer eröffnen Nummer einzahlen Stand abheben... Datum Tag setzen Monat anzeigen Jahr vergleichen... Dr. Norbert Spangler / Grundlagen der Informatik

8 Beispiele für Klassen Klasse Eigenschaften Methoden Bruch Zaehler + - * / Nenner < > = kürzen... Punkt x anzeigen y verschieben Betrag x/y ändern Bezeichnung... Kreis Mittelpunkt definieren Radius Radius setzen Umfang Durchmesser Problem: Konsistenz von Betrag und Koordinaten Problem: Konsistenz von Radius Umfang und Durchmesser Linie Vektor aus Punkten Punkt löschen Punkt einfügen... Dr. Norbert Spangler / Grundlagen der Informatik

9 Beispiele für Klassen Klasse Eigenschaften Methoden Rahmenfenster einer Windowsapplikation CFrameWnd menuename Create parentwindow... Anwenderformular Formular1 Eingabefeld1 OnCancel Eingabefeld2 OnOK OnRadio1... Dr. Norbert Spangler / Grundlagen der Informatik

10 Beispiele für Objekte Datum Klausurtermin; Bruch a; Bauteil Kabel; Tag = 10 zaehler=19 Monat = 2 nenner = 2 Jahr = Eingang Ausgang Stromfluss Bezeichnung = leer = leer = false = gelbes Kabel Dr. Norbert Spangler / Grundlagen der Informatik

11 Begriffe Eigenschaft Member-Variable, Instanzvariable, Datenelement Attribute Methode Member-Funktion, Elementfunktion, Operation, Dienste Dr. Norbert Spangler / Grundlagen der Informatik

12 UML Analog zu den Struktogrammen gibt es zur Beschreibung objektorientierter Modelle eine grafische Darstellung : UML-Diagramme (Unified Modeling Language) Für die verschiedenen Ansichten des Systems gibt es jeweils die dazu passenden Diagramme, gegliedert nach: Strukturelle Sichten: Zur Darstellung statischen Architektur eines Systems (Klassen, Komponenten, Subsysteme, ) Verhaltenssicht : Zur zeitlich/dynamischen Darstellung eines Systems (Interaktionen, Aktivitäten, ) In dieser Vorlesung wird nur eine kleine Auswahl der UML beschrieben Dr. Norbert Spangler / Grundlagen der Informatik

13 UML/Diagramme Dargestellt werden u.a.: Strukturdiagramme: Klassendiagramm: Klassen und ihre Beziehungen Objektdiagramm: Ausprägung der Klassen und Beziehungen sowie Komponenten-, Kompositions-, Paket-, Verteilungsdiagramm Verhaltensdiagramme: Aktivitäts-, Anwendungsfall-, Interaktions-, Zustandsdiagramm Dr. Norbert Spangler / Grundlagen der Informatik

14 UML/Klassendiagramm Es werden Klassen und ihre Beziehungen zueinander dargestellt. Klassen werden durch Rechtecke mit den Rubriken Name Eigenschaften Methoden beschrieben. Die Rubriken sind durch waagerechte Linien getrennt. allgemein Beispiel Name Eigenschaften Methoden Bauteil -Bezeichnung -Eingang -Ausgang -Stromfluss +Verbinden +Anzeigen... Dabei steht: + für public - für private # für protected Beziehungen unter Klassen -> später Dr. Norbert Spangler / Grundlagen der Informatik

15 UML/Objektdiagramm Es werden Objekte und ihre Beziehungen zueinander dargestellt. Objekte werden durch analog zu den Klassen als Rechtecke mit den Rubriken Name Eigenschaften (mit Ausprägung=Wert) beschrieben. allgemein Beispiel Objektname:Klassenname Eigenschaft1=... Eigenschaft2= gelbeskabel: Bauteil Bezeichnung= gelbeskabel Eingang=leer Ausgang=leer Stromfluss=false Beziehungen -> später Dr. Norbert Spangler / Grundlagen der Informatik

16 10. 2 Grundprinzipien der Objektorientierung Datenabstraktion Beschreibung durch Eigenschaften und Methoden Datenkapselung Zugriff auf Eigenschaften durch die Methoden Vererbung Bildung neuer Klassen aus existierenden Klassen mit Übernahme=Vererbung der Eigenschaften und Methoden Polymorphie (Vielgestaltigkeit) Anpassung der Methoden zur Laufzeit (!) Dr. Norbert Spangler / Grundlagen der Informatik

17 Datenabstraktion Klassen werden gebildet durch die Beschreibung ihrer Eigenschaften und Methoden Eine Klasse ist also charakterisiert durch die Zusammenfassung aller Gemeinsamkeiten von Eigenschaften und Methoden. Eine Klasse ist das Muster (die Schablone) für Objekte. Objekte sind Variable vom Typ der zugehörigen Klasse. Dr. Norbert Spangler / Grundlagen der Informatik

18 Datenkapselung Es erfolgt ein kontrollierter Zugriff auf die Eigenschaften (Daten) der Objekte durch Bereitstellung zugehöriger Methoden : -die interne Darstellung/Abspeicherung ist damit irrelevant -Der Zugriff erfolgt üblicherweise durch öffentliche Methoden -Die Eigenschaften sind üblicherweise im nicht-öffentlichen (privaten) Bereich geschützt ->Sicherung der Konsistenz der Daten, da keine unkontrollierte Änderung! Anmerkung Man kann auch Eigenschaften/Daten öffentlich bereitstellen. Dann können diese Daten direkt manipuliert werden. -> normalerweise nicht empfehlenswert. Dr. Norbert Spangler / Grundlagen der Informatik

19 Datenkapselung Einteilung der Eigenschaften/Methoden in 2 Gruppen : öffentlich (public) -> in den aufrufenden Programmen bekannt nicht-öffentlich (private) -> nur innerhalb der Klasse bekannt -> Abkapselung des Innenlebens von der Aussenwelt Anmerkung : ist nichts angegeben ist alles private (private ist default) Dr. Norbert Spangler / Grundlagen der Informatik

20 Datenkapselung Objekt private public Daten des Objekts Methode 1 Methode 2 Methode 3 Dr. Norbert Spangler / Grundlagen der Informatik

21 Vererbung Aus existierenden (Basis) Klassen könne abgeleitete Klassen erzeugt werden, welche die Eigenschaften und Methoden dieser Basisklasse erben : Bauteil -> Verbraucher -> optisch -> Lampe Eigene Eigenschaften können die Eigenschaften der Basisklasse ergänzen Eigene Methoden können die Methoden aus den Basisklassen ergänzen oder auch überschreiben (=ersetzen). Beispiel : Die Methode anzeigen für ein Objekt der Klasse Bauteil zeigt nur die Eigenschaften an, die da vorgegeben sind. Für eine daraus abgeleitete Klasse benötigt man aber z.b. Lampe zusätzlich, ob die Lampe brennt Schalter zusätzlich, ob ein/aus vorliegt. Dr. Norbert Spangler / Grundlagen der Informatik

22 Polymorphie (Vielgestaltigkeit) Wahl der passenden Methode, wenn der Typ (die Klasse) eines Objektes erst zur Laufzeit feststeht. -> Welche Anzeigefunktion ist erforderlich, wenn man erst während des Programmlaufes (z.b. durch Eingabe) entscheidet, ob die Daten einer Lampe oder eines Summers angezeigt werden sollen? -> später genauer Dr. Norbert Spangler / Grundlagen der Informatik

23 10.3 Begleitendes Beispiel Auf Kabelrollen sollen unterschiedliche Kabeltypen für den Verkauf zur Verfügung stehen. Alle Längenangaben sind in m. Es soll daher ein Modell für eine Kabelrolle implementiert werden. Erforderliche Daten: Nummer (zur Kennzeichnung) einer Kabelrolle -> (unsigned) int Typ des Kabels -> string Kapazität, d.h. maximale Länge in m -> (unsigned) int Aktuell verfügbare Länge in m -> (unsigned) int Erforderliche Methoden: -Bereitstellen einer leeren Rolle -Eine leere Rolle füllen -Abschneiden eines Stücks. -Ermittlung des Typs auf einer Rolle -Ermittlung der noch vorhandenen Menge -Anzeige aller Daten Dr. Norbert Spangler / Grundlagen der Informatik

24 Eigenschaften : kabel_rollennummer kabel_typ kabel_laenge kabel_kapazitaet Kabelrolle : int : string : int : int Methoden Initialisieren einer leeren Rolle (Konstruktor) Anzeigen einer Rolle Typ holen Vorhandene menge holen Abschneiden von einer Rolle Fuellen einer Rolle Kabelrolle kabel_rollennummer:int kabel_typ:string kabel_laenge:int Kabel_kapazitaet:int Kabelrolle(int,int) Anzeigen() holetyp():int holebestand():int abschneiden(int):bool fuellen(int) Dr. Norbert Spangler / Grundlagen der Informatik

25 10.4 Verwendung von Dateien Prinzipiell ist es möglich, für die Definition der Klassen und Methoden, sowie das Hauptprogramm eine Quellcodedatei zu verwenden. Klassen werden jedoch üblicherweise in mehreren Programmen/Dateien verwendet. -> Verwendung einer Headerdatei (Endung.h) für die Definition der Klasse -> Verwendung separater Quellcodedateien für die Methoden der Klasse Dr. Norbert Spangler / Grundlagen der Informatik

26 Dateien Rolle.h Headerdatei für die Definition der Klasse Rolle.cpp main.cpp Quellcodedatei für die zugehörigen Methoden benötigt #include Kanelrolle.h Quellcodedatei für das Programm benötigt #include Kabelrollee.h -> mehrfaches includieren muss verhindert werden!!!! Durch Verwendung von Präcompiler-Direktiven Dr. Norbert Spangler / Grundlagen der Informatik

27 Dateien Dr. Norbert Spangler / Grundlagen der Informatik

28 Mehrfaches Includieren Um Mehrfachdefinitionen durch mehrfaches Includieren zu verhindern, werden spezielle Präprozessor-Direktiven verwendet : #ifndef _Klassenname_ // if not defined Klassenname (begrenzt durch 2x _) #define _Klassenname_...// hier ist die Definition inklusive benötigter Dateien (include) #endif // Ende der Definition Dr. Norbert Spangler / Grundlagen der Informatik

29 10.5 Definition von Klassen Es wird der Name der Klasse, sowie Namen und Typen der Eigenschaften (Attribute) Name und und Typ der Methoden inkl. des Typs der Parameter (entspricht dem Prototyp) festgelegt und ihre Zuordnung zu private/public. private/public kann beliebig wiederholt werden; default ist private Schema : class Klassenname // beginnt mit Grossbuchstabe private: // hier werden private Eigenschaften und Methoden festgelegt public: // hier werden öffentliche Eigenschaften und Methoden festgelegt };// wichtig: hier ein Semikolon Dr. Norbert Spangler / Grundlagen der Informatik

30 // rolle.h #ifndef _Kabelrolle_ #define _Kabelrolle_ #include <string> // Datentyp string using namespace std; class Kabelrolle // Klassendefinition private: unsigned int rollennummer; string typ; unsigned int bestand; unsigned int kapazitaet; Beispiel Kabelrolle public: //Prototypen der Methoden Kabelrolle();//Defaultkonstruktor zur Initialisierung Kabelrolle(int,int); // Konstruktor nummer/kapazitaet bool fuellen(string,int); bool abschneiden(int); void anzeigen(); string gettyp(); unsigned int getbestand(); void setnummer(); }; #endif //Kabelrolle Dr. Norbert Spangler / Grundlagen der Informatik

31 10.6 Definition der Methoden Methoden sind Funktionen, welche die Eigenschaften manipulieren. Damit diese Funktionen sich von den normalen Funktionen unterscheiden, wird die Zugehörigkeit zur Klasse durch den Zusatz Klassenname:: vor dem Funktionsnamen ausgedrückt. Dabei ist :: der Bereichsoperator. Dr. Norbert Spangler / Grundlagen der Informatik

32 Methoden Zur Deklaration von Methoden wird in der Klassendefinition der Prototyp angegeben. Hier kann auf die Angabe des Bereichsoperators verzichtet werden. class Kabelrolle private: // public: Kabelrolle();//Defaultkonstruktor zur Initialisierung Kabelrolle(unsigned int,unsigned int); // Konstruktor nummer/kapazitaet bool Kabelrolle::fuellen(string,unsigned int); bool abschneiden(unsigned int); void anzeigen(); string gettyp(); unsigned int getbestand(); void setnummer(unsigned int); }; Prototypen Dr. Norbert Spangler / Grundlagen der Informatik

33 Methoden In einer Quellcodedatei der Programmcode der Methode angegeben. Hierzu ist die Klassendefinition zu includieren. Hier wird die Zugehörigkeit zur Klasse mit dem Bereichsoperator :: hergestellt #include rolle.h" #include <iomanip> #include <iostream> using namespace std; void Kabelrolle::anzeigen() cout << "\nrolle " <<setw(3)<<setfill('0')<< rollennummer; } cout << "\tkabeltyp "; cout << setw(10) << setfill(' '); // Fuellzeichen cout << typ<< "\tvorhandene Laenge "; cout << setw(4) << right; cout << bestand <<" m (" ; cout << setw(3)<<kapazitaet<<" m)"<<endl; Headerdatei mit der Definition Methoden können dabei auf alle public und privat Eigenschaften public und private Methoden der Klasse direkt zugreifen. Dr. Norbert Spangler / Grundlagen der Informatik

34 Methoden Im Main (oder einer anderen Funktion) ist die Klassendefinition zu includieren. Damit steht dort die Klasse mit ihren Methoden zur Verfügung #include rolle.h" using namespace std; void main().. } Headerdatei mit der Definition Dr. Norbert Spangler / Grundlagen der Informatik

35 10.7 Arten von Methoden Standardmethoden werden automatisch zur Verfügung gestellt Deklaration eines leeren Objekts Löschen von Objekten Kopieren von Objekten Zuweisung von Objekten -> Defaultkonstruktor -> Destruktor -> Kopierkonstruktor -> = Operator Diese Methoden können aber durch eigene ersetzt (überschrieben) werden. Häufige verwendete Methoden Deklaration und Initialisierung von Objekten-> Konstruktor Bereitstellung (holen) einer Eigenschaft -> get Verändern (setzen) einer Eigenschaft -> set Anzeigen einer oder mehrerer Eigenschaften -> display Dr. Norbert Spangler / Grundlagen der Informatik

36 Konstruktoren Um Objekte zu deklarieren und zu initialisieren werden besondere Methoden verwendet: Konstruktoren Konstruktoren haben den Namen der Klasse als Funktionsnamen und sorgen für die Reservierung des benötigten Speicherplatzes und für die Initialisierung der Eigenschaften bei der Deklaration, also für den Aufbau eines Objekts. //Konstruktor für eine leere Rolle Kabelrolle::Kabelrolle(unsigned int p_nummer,unsigned int kapazitaet) rollennummer=p_nummer; typ="leer"; bestand=0; kapazitaet=p_kapazitaet; }; Plausibilitaetskontrollen sind hier möglich aber: Was tun, wenn Daten unzulässig sind? Dr. Norbert Spangler / Grundlagen der Informatik

37 Aufruf eines Konstruktors Kabelrolle r1(1212,100), r2(1213,150); Es werden 2 Objekte vom Typ Kabelrolle deklariert mit den Namen r1 und r2 und initialisiert. Die Belegung der Eigenschaften ist: r1 r2 rollennummer typ leer leer bestand 0 0 kapazitaet Dr. Norbert Spangler / Grundlagen der Informatik

38 Default-Konstruktor Der Default-Konstruktor ist der Konstruktor ohne Parameter Kabelrolle::Kabelrolle() rollennummer=0; typ="leer"; bestand=0; kapazitaet=0; } //welche Methoden sind hierfuer dann zwingend erforderlich?? Wird ein Default-Konstruktor nicht explizit angegeben, so wird er durch das System automatisch angelegt, wenn kein anderer Konstruktor vorhanden ist. Klassenname::Klassenname() }//dies ist selten sinnvoll; Dr. Norbert Spangler / Grundlagen der Informatik

39 Aufruf des Defaultkonstruktors Kabelrolle r3,r4; Es werden 2 Objekte vom Typ Kabelrolle deklariert mit den Namen r1 und r2 und initialisiert. Die Belegung der Eigenschaften ist: r3 r4 rollennummer 0 0 typ leer leer bestand 0 0 kapazitaet 0 0 Dr. Norbert Spangler / Grundlagen der Informatik

40 Varianten von Konstruktoren Es können mehrere Konstruktoren in einer Klasse verwendet werden. Diese müssen sich jedoch in ihrer Signatur, d.h. in der Anzahl, Typ und Reihenfolge der Parameter unterscheiden. Mögliche Varianten Kabelrolle(); // Default Konstruktor Kabelrolle(uint p_n, uint p_k); // nummer und kapazitaet Kabelrolle(uint p_n, string p_t, uint p_b, uint p_k);// alle Eigenschaften Am Aufruf erkennt man, welche Methode zu nehmen ist Kabelrolle a, b(21,200), c(25, b222r30,100); Dr. Norbert Spangler / Grundlagen der Informatik

41 Destruktor Objekte, die durch einen Konstruktor aufgebaut werden, müssen durch einen Destruktor wieder beseitigt werden. Dies beinhaltet beispielsweise die Freigabe von Speicherplatz, Schließen von Dateien usw.. Üblicherweise wird der Destruktor automatisch angelegt und etwa am Ende eines Blocks automatisch aufgerufen. Eigene Destruktoren werden wie folgt erstellt: Prototyp: ~Klassenname(); Definition: Beispiel ~Kabelrolle(); Klassenname::~Klassenname(); Kabelrolle::~Kabelrolle(); // Programmcode einbauen;. } } Dr. Norbert Spangler / Grundlagen der Informatik

42 Kopierkonstruktor Bei der Initialisierung eines Objekts kann der Anfangswert durch als Kopie eines existierenden Objekts gewählt werden: cin >>a; int b(a);// b wird so mit dem Wert von a initialisiert. Bei Klassen bedeutet dies, dass eine Kopie des Objekts a unter dem Namen b erstellt wird. Hierfür ist eine spezielle Methode vorgesehen, die automatisch angelegt wird: Kopierkonstruktor. Beispiel Kabelrolle a(117,200), c(a); Dr. Norbert Spangler / Grundlagen der Informatik

43 Zuweisung Die übliche (einfache) Form einer Zuweisung ist a=b; Dabei wird der Wert von b der Variablen a zugewiesen, d.h. dort gespeichert. Bei Objekten betrifft dies aber in der Regel alle Eigenschaften. Damit muss der Zuweisungsoperator für auch hierfür erst bereitgestellt werden. Dies ist in der Regel automatisch der Fall. Kabelrolle r(117,200),s; s=r; Anmerkung: Sind in einer Klasse dynamische Objekte/Zeiger enthalten, so muss der Zuweisungsoperator ggf. manuell erstellt werden. Dr. Norbert Spangler / Grundlagen der Informatik

44 Zugriff auf einzelne Eigenschaften Häufig ist es erforderlich, den Wert einzelner Eigenschaften zu holen, um weitere Verarbeitungen vorzunehmen. Hierzu verwendet man üblicherweise eine Methode typ geteigenschaft(); Die Definition ist demzufolge: typ Klassenname::getEigenschaft() return Eigenschaft; } Dr. Norbert Spangler / Grundlagen der Informatik

45 Beispiel get class Kabelrolle private: public: string gettyp(); unsigned int getbestand(); }; string Kabelrolle::getTyp() return typ; } unsigned int Kabelrolle::getBestand() return bestand; } Dr. Norbert Spangler / Grundlagen der Informatik

46 Zugriff auf einzelne Eigenschaften Häufig ist es erforderlich, den Wert einzelner Eigenschaften zu ändern, d.h. einen neuen Wert zu setzen. Hierzu verwendet man üblicherweise eine Methode void seteigenschaft(typ); Die Definition ist demzufolge: void Klassenname::setEigenschaft(typ neuerwert) Eigenschaft=neuerWert; } Dr. Norbert Spangler / Grundlagen der Informatik

47 Beispiel set class Kabelrolle private: public: void setnummer(unsigned int); }; void Kabelrolle::setNummer(unsigned int p_nummer) rollennummer=p_nummer; } Dr. Norbert Spangler / Grundlagen der Informatik

48 Direktzugriff auf einzelne Eigenschaften Sofern eine Eigenschaft (ausnahmsweise) public ist, bzw. wenn innerhalb von Objekten einer Klasse auf Eigenschaften eines anderen Objekts zugegriffen werden soll, kann dies auch direkt über den Punktoperator erfolgen: objektname.eigenschaft Fall 1: Die Eigenschaft typ wäre public statt private Kabelrolle r1(100,100); r1.typ= ac112 ; //setzt den typ auf ac112 cout<<r1.typ<<endl;//anzeige am Bildschirm Damit wären get/set-methoden nicht erforderlich, was aber riskant ist und nicht gemacht werden soll. Dr. Norbert Spangler / Grundlagen der Informatik

49 Direktzugriff auf einzelne Eigenschaften Fall 2: In einer Methode wird eine Eigenschaft eines anderen Objekts derselben Klasse benötigt, wenn etwa dieses Objekt Parameter ist. Beispiel: Eine Methode bool testauffuellen(kabelrolle) soll pruefen, ob der Bestand einer Kabelrolle zu einer anderen hinzugefügt werden kann. bool Kabelrolle::testAuffuellen(Kabelrolle p_r) if ( typ == p_r.typ ) if ( bestand + p_r.bestand <= kapazitaet ) return true; else return false; else return false; } Eigenschaften des aufrufenden Objekts Eigenschaften des Parameterobjekts Dr. Norbert Spangler / Grundlagen der Informatik

50 Alternative Direktzugriff auf einzelne Eigenschaften bool Kabelrolle::testAuffuellen(Kabelrolle p_r) return ( typ == p_r.typ ) && ( bestand + p_r.bestand <= kapazitaet );} Eigenschaften des aufrufenden Objekts (unten: a) Eigenschaften des Parameterobjekts (unten: b) Kabelrolle a(100,100),b(101,100);. if ( a.testauffuellen(b) ). Dr. Norbert Spangler / Grundlagen der Informatik

51 Anzeigen einer oder mehrerer Eigenschaften Häufig (auf jeden Fall für Testzwecke) ist es hilfreich, sich eine, mehrere oder auch alle Eigenschaften eines Objekts anzeigen zu lassen. Also void display(); void displayeigenschaft(); void Klassenname::displayEigenschaft() cout<< Eigenschaft <<Eigenschaft<<endl; } Dr. Norbert Spangler / Grundlagen der Informatik

52 Anzeigen /Beispiel void Kabelrolle::display() cout << "\nrolle " <<setw(3)<<setfill('0')<< rollennummer; cout << "\tkabeltyp "; cout << setw(10) << setfill(' '); // Fuellzeichen cout << typ<< "\tvorhandene Laenge "; cout << setw(4) << right; cout << bestand <<" m (" ; cout << setw(3)<<kapazitaet<<" m)"<<endl; } Dr. Norbert Spangler / Grundlagen der Informatik

53 Weitere Methoden Weitere Methoden sind in der Regel klassenabhängig. Für das Beispiel Kabelrolle sind dies die Methoden fuellen und abschneiden bool Kabelrolle::fuellen(string p_typ,unsigned int p_bestand) if ( typ == "leer" && 0<p_bestand && p_bestand<=kapazitaet) typ=p_typ; bestand=p_bestand; return true; } else return false; }; Plausibilitaetskontrollen sichern hier den vernünftigen Einsatz. Daher ist diese Methode vom Typ bool. Dr. Norbert Spangler / Grundlagen der Informatik

54 Weitere Methoden bool Kabelrolle::abschneiden(unsigned int p_laenge) if ( 0<p_laenge && p_laenge<=bestand) bestand-=p_laenge; if (bestand==0 ) typ="leer"; return true; } else return false; }; Plausibilitaetskontrollen verhindern auch hier den fehlerhaften Einsatz. Dr. Norbert Spangler / Grundlagen der Informatik

55 10.8 Aufruf der Methoden Konstruktoren werden zur Deklaration und Initialisierung der Objekte eingesetzt. Klassenname objektname( ); Kabelrolle a(120,100), b(a); Die anderen public-methoden werden in der Regel mit dem Punkt-Operator aufgerufen objektname.methodenname() // Zugriff auf Methode a.anzeigen(); // Aufruf der Funktion anzeigen für Objekt a b.anzeigen(); // Aufruf der Funktion anzeigen für Objekt b if ( a.fuellen( abc123,100) ) // falls true war das auffuellen der Rolle möglich } if ( a.abschneiden(30) ) // falls true war das abschneiden möglich } Dr. Norbert Spangler / Grundlagen der Informatik

56 #include "klassen.h" #include <iostream> #include <string> using namespace std; void main() //Test Konstruktoren/display Kabelrolle a(117,200), c[10], d[3]=kabelrolle(20,150)}; a.display(); c[0].display(); d[0].display(); d[1].display(); //Test fuellen unsigned int b,m; string t; cout<<" a fuellen (Typ/Bestand) "; cin >> t>>b; if ( a.fuellen(t,b) ) cout<<" fuellen erfolgreich"<<endl; else cout<<" fuellen nicht erfolgreich"<<endl; a.display(); //Test abschneiden cout<<"\n a abschneiden (Menge) "; cin >> m; if ( a.abschneiden(m) ) cout<<" abschneiden erfolgreich"<<endl; else cout<<" abschneiden nicht erfolgreich"<<endl; a.display(); } Aufruf der Methoden/Beispielprogramm Dr. Norbert Spangler / Grundlagen der Informatik

57 10.9 Programmierung von Methoden Zugriff auf Eigenschaften Die Programmierung einer Methode ist prinzipiell wie die Programmierung einer Funktion. Es ist lediglich darauf zu achten, dass die Eigenschaften der Klasse bereits deklariert und direkt darauf zugegriffen werden kann. bool Kabelrolle::fuellen(string p_typ,unsigned int p_bestand) if ( typ == "leer" && 0<p_bestand && p_bestand<=kapazitaet) }; } else typ=p_typ; bestand=p_bestand; return true; return false; Aufruf: a.fuellen( ac112,150) Typ, bestand und kapazitaet sind die Variablen, welche die aktuellen Werte der Eigenschaften des Objekts a enthalten, mit dem die Methode aufgerufen wurde Dr. Norbert Spangler / Grundlagen der Informatik

58 Programmierung von Methoden Hervorhebung der Eigenschaften Damit sich die Eigenschaften optisch von den Parametern und lokalen Variablen der Methode unterscheiden, kann man auch den Klassennamen mit dem Bereichsoperator davor setzen. bool Kabelrolle::fuellen(string p_typ,unsigned int p_bestand) if ( Kabelrolle::typ == "leer" && 0<p_bestand && p_bestand<=kabelrolle::kapazitaet) Kabelrolle::typ=p_typ; Kabelrolle::bestand=p_bestand; return true; } else return false; }; Dr. Norbert Spangler / Grundlagen der Informatik

59 Programmierung von Methoden Zugriff auf die Eigenschaften anderer Objekte der Klasse Werden andere Objekte derselben Klasse etwa als Parameter übergeben, so muss man dessen Werte von denen des Objekts, mit dem die Methode aufgerufen wurde, unterscheiden. bool Kabelrolle::umfuellen(Kabelrolle) if ( typ == "leer" && 0<p_bestand && p_bestand<=kapazitaet) }; } else typ=p_typ; bestand=p_bestand; return true; return false; Aufruf: a.fuellen( ac112,150) typ und bestand sind die Variablen, welche die aktuellen Werte der Eigenschaften des Objekts enthalten, mit dem die Methode aufgerufen wurde Dr. Norbert Spangler / Grundlagen der Informatik

60 10.10 Beispiel 2: Die Klasse Bruch Die Modellierung einer Klasse basiert (bisher) auf Datenabstraktion (Eigenschaften + Methoden) Datenkapselung (public private + private) Üblicherweise sind Eigenschaften private Methoden public Eigenschaften von Bruch zaehler nennen int unsigned int ( wird >0 festgelegt) Dr. Norbert Spangler / Grundlagen der Informatik

61 Bruch: Methoden Mittels der Klasse Bruch soll Bruchrechnen möglich sein. -Elementare Rechenoperationen Addition Subtraktion Multiplikation Division + - * / += -= *= /= Ein Bruch sollte stets gekürzt sein. Daher sind nach einer Rechenoperation zaehler und nenner stets zu kürzen, d.h. durch den größten gemeinsamen Teiler zu dividieren. -Vergleiche kleiner kleinergleich groesser groessergleich gleich ungleich Dr. Norbert Spangler / Grundlagen der Informatik

62 Bruch: sonstige übliche Methoden anzeigen : alles ( zaehler, nenner) ausgeben getzaehler, getnenner setbruch(zaehler+nenner) Dr. Norbert Spangler / Grundlagen der Informatik

63 Bruch: Konstruktoren Defaultkonstruktor Bruch ist Null Konstruktor für alle Eigenschaften zaehler nenner Problem: nenner darf nie 0 sein Konstruktor, der aus einer ganzen Zahl einen Bruch erzeugt Dr. Norbert Spangler / Grundlagen der Informatik

64 Bruch: Anwendung Testprogramm, welches alle Methoden testet Funktion summe, welche einen Vektor aus Brüchen summiert Dr. Norbert Spangler / Grundlagen der Informatik

65 Bruch/UML Prinzipielle Darstellung Bruch - zaehler: int - nenner: unsigned int + addieren + subtrahieren Dr. Norbert Spangler / Grundlagen der Informatik

66 Defaultkonstruktor Bruch::Bruch() // Default-Konstruktor zaehler=0; nenner=1; }; Dr. Norbert Spangler / Grundlagen der Informatik

67 Konstruktor für ganze Zahl/bezeichnung Bruch::Bruch(int p_zahl) // Konstruktor für ganze Zahl zaehler=p_zahl; nenner=1; } Dr. Norbert Spangler / Grundlagen der Informatik

68 Konstruktor fuer zaehler/nenner Bruch::Bruch(int p_zaehler, unsigned int p_nenner) // Konstruktor assert(p_nenner>0); // Nenner muss immer > 0 sein zaehler=p_zaehler; nenner=p_nenner; } Problem: wie kann man verhindern, dass der nenner =0 gesetzt wird. Programmabbruch mittels assert. Aufruf : assert(bedingung) Wenn die Bedingung nicht erfüllt ist bricht das Programm ab. Erforderlich: #include <assert.h> Dr. Norbert Spangler / Grundlagen der Informatik

69 Bruch: sonstige übliche Methoden int Bruch::getZaehler() return zaehler; } unsigned int Bruch::getNenner() return nenner; } void Bruch::anzeigen() cout << "\nzaehler "; cout << setw(10); cout << zaehler; cout << "\tnenner "; cout << setw(10); cout << nenner <<endl; } void Bruch::setZaehlerNenner(int p_z,unsigned int p_n) zaehler=p_z; nenner=p_n; } Dr. Norbert Spangler / Grundlagen der Informatik

70 Bruch: Vergleiche Exemplarisches Beispiel: < z n < p q z q < p n bool Bruch::kleiner(Bruch p_b) return zaehler*p_b.nenner<nenner*p_b.zaehler; } Aufruf: Bruch a(17,5),b(23,8); Alle anderen Vergleiche analog if ( a.kleiner(b) ). Aber: if ( a<b ) wäre schöner/lesbarer Dr. Norbert Spangler / Grundlagen der Informatik

71 Bruch: Rechenoperationen Exemplarisches Beispiel : + z n + p q = z q + n q p n Variante 1 Das Ergebnis ist ein neuer Bruch, dessen Wert in einem (dritten) Bruch gespeichert wird, d.h. es enspricht der Schreibweise c=a+b Prototyp: Bruch addiere(bruch) Variante 2 Das Ergebnis überschreibt den Wert eines der Operanden, d.h. es entspricht der Schreibweise a=a+b bzw. a+=b Prototyp: void addieregleich(bruch) (eigentlich Bruch addieregleich ) Dr. Norbert Spangler / Grundlagen der Informatik

72 Variante 1 Bruch: Rechenoperationen Prototyp: Bruch addiere(bruch) Bruch Bruch::addiere(Bruch p_b) Bruch temp(zaehler*p_b.getnenner()+p_b.getzaehler*nenner,nenner *p_b.nenner); return temp; } Aufruf: Bruch a(13,4),b(-12,5),c; c=a.addiere(b); Zuweisungsoperator für die Klasse Bruch Dr. Norbert Spangler / Grundlagen der Informatik

73 Variante 2 Bruch: Rechenoperationen Prototyp: Bruch addieregleich(bruch) void Bruch::addieregleich(Bruch p_b) Bruch temp(zaehler*p_b.getnenner()+p_b.getzaehler*nenner,nenner *p_b.getnenner); zaehler=temp.getzaehler(); nenner=temp.getnenner(); } Aufruf: Bruch a(13,4),b(-12,5); a.addiere(b); Dr. Norbert Spangler / Grundlagen der Informatik

74 Funktion Summe eines Vektors aus Brüchen Für den Typ int Für den Typ Bruch int summe (int n,int v[]) Bruch summe(int n, Bruch v[]) int s=0; Bruch s; for ( int i=0;i<n;i++ ) for ( int i=0;i<n;i++) s+=v[i]; s.addieregleich(v[i]); return s; return s; } } Dr. Norbert Spangler / Grundlagen der Informatik

75 class Bruch // Klassendefinition private: int zaehler; int nenner; void kuerzen(); }; Klassendefinition (Zusammenfassung) public: Bruch();// Default-Konstruktor Bruch (int); // Konstruktor fuer ganze Zahl/bezeichnung Bruch (int,unsigned int); // Konstruktor fuer zaehler/nenner/bezeichnung void anzeigen(); Bruch addiere (Bruch); void addieregleich (Bruch); bool kleiner(bruch); unsigned int getnenner(); int getzaehler(); void setzaehlernenner(int,unsigned int); Dr. Norbert Spangler / Grundlagen der Informatik

76 void main() Main Bruch summe(int,bruch[]); //Test Konstruktoren get/set/anzeigen Bruch a(5,12),b(3),c; a.anzeigen(); b.anzeigen(); c.anzeigen(); cout<<"\nzaehler/nenner von a "<<setw(4)<<a.getzaehler() <<setw(4)<<a.getnenner()<<endl; c.setzaehlernenner(4,22); c.anzeigen(); //Vergleich cout << "\n a kleiner b \t" << a.kleiner(b)<<endl; cout << "\n b kleiner a \t" << b.kleiner(a)<<endl; //Addition c=a.addiere(b);//c=a+b c.anzeigen(); c.addieregleich(a);//c=c+a c.anzeigen(); } Bruch v[3]=a,b,c}; Bruch s=summe(3,v); s.anzeigen(); Dr. Norbert Spangler / Grundlagen der Informatik

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

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

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

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

3. Objektorientierung Ergänzungen

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

Mehr

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Programmieren 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

Mehr

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

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

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

Klausur Informatik I WS 2006/2007

Klausur Informatik I WS 2006/2007 Klausur Informatik I WS 2006/2007 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Hinweis: sofern Sie die Rückseite eines Blattes verwenden vermerken sie dies auf der Vorderseite Nr.

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

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

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

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

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

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

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

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

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

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 11.06.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 28 Einführung Klassen Übung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 2/ 28

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

Klausur Programmieren 2 SS 2016

Klausur 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

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

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

Kap 9. Bitoperationen und -strukturen

Kap 9. Bitoperationen und -strukturen Kap 9. Bitoperationen und -strukturen 9.1 Anwendung von Bits Im Gegensatz zu den üblicherweise Byte-orientierten Daten gibt es auch Bit-Anwendungsbeispiele Statusanzeigen bei Ein-/Ausgabe (Stream-Klassen)

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

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

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

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe. Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende

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

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

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

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

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

Vorkurs C++ Programmierung

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

Mehr

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

Grundlagen der Informatik 12. Strukturen

Grundlagen der Informatik 12. Strukturen 12. Strukturen Strukturen und deren Komponenten Strukturen im Projekt Dynamisch erstellte Strukturen Strukturen und Operatoren Strukturen und Funktionen Einfach verkettete Liste Grundlagen der Informatik

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

Crashkurs C++ Wiederholung

Crashkurs C++ Wiederholung Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i

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

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

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

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

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

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

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

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

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

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

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

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

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

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung

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

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

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden

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

Objektorientierung Grundlagen

Objektorientierung Grundlagen Prof. Dr.-Ing. Andreas Simon Telefon +49 (0)5331 939 42630 Telefax +49 (0)5331 939 43634 E-Mail a.simon@ostfalia.de Objektorientierung Grundlagen Probeklausur 18. Mai 2015 Name: Mat.-Nr.: Vorname: Login:

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

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

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

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

Mehr

Lösung der OOP-Prüfung WS12/13

Lösung der OOP-Prüfung WS12/13 2.1.2013 Lösung der OOP-Prüfung WS12/13 1. Aufgabe a) Da der Konstruktor im protected-bereich steht, können keine eigenständigen Objekte der Klasse angelegt werden. Durch den protected-konstruktor wird

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

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

Klausur Programmieren 2 WS2016/17

Klausur 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

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

Java Einführung Methoden in Klassen

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

Mehr

5. Elementare Befehle und Struktogramme

5. Elementare Befehle und Struktogramme 5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen

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

Einführung in die Programmiersprache Java II

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

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 und Polymorphie

Vererbung 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

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

Programmiertechnik Objektorientierung

Programmiertechnik 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

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

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

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

15. Die Klasse string

15. Die Klasse string 15. Die Klasse string Notwendige Funktionen Erzeugen Zuweisen, Anhängen,Einfügen Löschen, Entfernen, Ersetzen Ermitteln der Größe indizierter Zugriff auf Zeichen Vergleich Suchen von Zeichen und Teil-Strings

Mehr

Auswahlen (Selektionen)

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

Mehr

Überblick. 5. Objekt und Klasse, Elementfunktionen

Überblick. 5. Objekt und Klasse, Elementfunktionen Ü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

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

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

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

Mehr

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

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

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

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

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

Klausur Programmieren 1 SS 2017

Klausur Programmieren 1 SS 2017 Klausur Programmieren 1 SS 2017 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

5. Strukturen und Algorithmen

5. Strukturen und Algorithmen 5. Strukturen und Algorithmen Struktur 5.1 Modellierung allgemein Element Kabel1 Lampe Kabel2 Objekte der Struktur Struktur -> Klasse Element -> Klasse Datenstruktur Dr. Norbert Spangler / Grundlagen der

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