Objektorientierung Grundlagen

Ähnliche Dokumente
Klassen. C++ Übung am 02. Juni 2016

Übung Notendarstellung

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

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

Grundlagen der Informatik

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

Klausur im WS 2003/04 : Informatik III

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

Hydroinformatik I: Klassen

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Name: Klausur Informatik III WS 2003/04

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

Hydroinformatik I: Klassen

Grundlagen der Informatik

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

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor

Hydroinformatik I - WiSe 2018/2019 V5: Klassen

Objektorientierte Anwendungsentwicklung

Einführung in die Modellierung

SimpleStat mit Methoden

Klausur: Programmieren II

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

Übung HP Beispielaufgaben 3

Objektorientierte Programmierung mit C++ SS 2007

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

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

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp

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

Polymorphismus 44. Function.hpp. #include <string>

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Hochschule München, FK03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

Centrum für Informations- und Sprachverarbeitung SoSe 2018: Höhere Programmierung mit C++ Andreas Krieger. Musterlösung 9

Objektorientierte Programmierung mit C Strukturierte Anweisungen: Exception Handling

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Grundlagen der Informatik 12. Strukturen

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

Einführung in die Programmierung (EPR)

Algorithmen und Datenstrukturen

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

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

Einführung in die Programmierung Wintersemester 2008/09

Wissenschaftliches Rechnen

7. Übung Informatik II - Objektorientierte Programmierung

Lösung zur Klausur C++ und Data Mining 16. Juli 2004 (SS 2004)

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Grundkurs C++ IDE Klassenhierarchien

9. Vektoren. (auch Felder/array)

A practical guide to C++

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Probeklausur. Klausurdeckblatt. Name der Prüfung: Objekt-orientierte Programmierung mit C++ Datum und Uhrzeit: 26. Februar 2015, Uhr

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

Prüfung aus PROGRAMMIEREN (2) (C++) (WS 2002/03)

Klausur Informatik WS 2012/13

Übung HP Musterlösung zu Aufgabe 9:

Klausur in Programmieren

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Angewandte Mathematik und Programmierung

Programmierung und Angewandte Mathematik

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Tobias Wolf Seite 1 von 19

Container usw. C++ Übung am 23. Juni 2016

Ostfalia Hochschule für angewandte Wissenschaften Seite 1 von 1. Fakultät Elektrotechnik Prof. Dr.-Ing. M. Haas Name: Matrikelnummer: Anmeldename:

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

C++ kompakt - Teil 1. Danke an Matthias Biedermann Markus Geimer

Grundkurs C++ IDE Klassenhierarchien

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Probeklausur. Musterlösung

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 4. Aufgabenblatt Dateiverarbeitung, Funktionen, Records

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Übung HP Codes zu Aufgabe 11:

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Programmierkurs C++ Kapitel 6 Module Seite 1

Klausur in Programmieren

3. Exkurs in weitere Arten der Programmierung

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

Hochschulprüfung in "Objektorientiertem Programmieren" WS 2016/17

Klausurvorbereitung Lösung

Klausur Informatik I WS 2006/2007

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

Interfaces. Definition von Interfaces Verwendung von Interfaces Vordefinierte Interfaces Beispiele. Dr. Beatrice Amrhein

Informatik 1 D-ITET Herbstsemester 2009 Übungstunde 8. Gruppe 7 ETZ F91 / 17-19h. Stefan Lienhard

Grundzüge der objektorientierten Programmierung

Transkript:

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: Aufgabe: 1 2 3 4 Summe erreichbare Punkte: -- 15 30 17 62 erreichte Punkte: Note: Hinweise: Bearbeitungszeit: 90-20=70 Minuten Erlaubte Hilfsmittel: keine, außer den zur Verfügung gestellten Daten auf dem V-Laufwerk. Sie finden die vorbereiteten C++-Dateien zu den Aufgaben auf Ihrem U-Laufwerk sowie in einer Read-Only-Variante auf dem V-Laufwerk. Speichern Sie rechtzeitig vor dem Ende der Klausur alle relevanten Daten auf dem U-Laufwerk ab, da sonst die Gefahr eines Datenverlustes besteht. Melden Sie Probleme mit dem Rechner sofort der Aufsicht. In die Bewertung der Aufgaben fließen u.a. die Vollständigkeit, Korrektheit, Programmlänge und Programmlesbarkeit ein. Die Projekteinstellungen des vorbereiteten Eclipse-Projektes dürfen nicht verändert werden. Wenn in den Aufgaben nicht anders angegeben, sind nur Sprachelemente der Standards ISO/IEC 14882:2003 und ISO/IEC 14882:2011 zulässig. Anmelden am Rechner: Zum Anmelden am Rechner ist unbedingt der spezielle Klausur-Account für diese Klausur zu verwenden, also Registrierung: Öffnen Sie die Datei U:\Registrierung.txt und tragen Sie in die vorgesehenen Zeilen Ihren Namen, Vornamen, Matrikelnummer und Anwendernamen ( ) ein. Speichern Sie diese Datei. Viel Erfolg!

Seite 2 von 8 Aufgabe 2: Modulare Programmierung (15 P) Gegeben ist ein C++-Programm in Form der Datei main.cpp. 2.1 Verlagern Sie alle Code-Fragmente zwischen der letzten Include Anweisung und der main-funktion in die Header-Datei aufgabe_2.hpp und die Source-Code-Datei aufgabe_2.cpp. (12 P) 2.2 Erzeugen Sie in der main-funktion jeweils ein lokales und ein dynamisches Objekt der Klasse Begruessung. (3 P) Geforderte Konsolenausgabe: Aufgabe 2: Hallo Du! HalloDu HalloDu Zähler = 2 Vorbereitete Datei main.cpp: * main.cpp #include <iostream> #include <string> using namespace std; #include "aufgabe_2.hpp" #include "aufgabe_2.hpp" //< Mehrfaches Inkludieren soll moeglich sein! typedef int sint32; sint32 zaehler = 1; string begruessungstext(string text) zaehler++; return "Hallo " + text + "!"; class Begruessung sint32 zaehler; Begruessung(string str)

Seite 3 von 8 cout << "Hallo" << str << endl; zaehler++; sint32 getcount() const return zaehler; int main() cout << "Aufgabe 2:" << endl; cout << begruessungstext("du") << endl; //> cout << "Zähler = " << zaehler << endl; return 0;

Seite 4 von 8 Aufgabe 3: Objektorientierung (30 P) Gegeben ist die Header-Datei der Klasse Puffer. Zu dieser Header-Datei soll die Klasse in der Datei Puffer cpp fertig implementiert werden. Die Klasse Puffer soll einen Container für double-werte nach dem LIFO-Prinzip (last in first out) realisieren. Mit der Methode push wird ein Wert in den Puffer geschrieben und mit pop ein Wert ausgelesen. 3.1 Implementieren Sie die private Methode init, die den Puffer erzeugen soll. (4 P) 3.2 Ergänzen Sie die beiden Konstrukoren, indem Sie u.a. die init-methode aufrufen. (6 P) 3.3 Fügen Sie den Destruktor hinzu. (3 P) 3.4 Implementieren Sie die Methode push, die einen double-wert in den Puffer schreibt, sofern noch Platz vorhanden ist. push soll false zurückgeben, falls der Puffer voll ist. (4 P) 3.5 Ergänzen Sie die Methode pop, die einen Wert aus dem Puffer zurückliest und diesen Wert löscht. pop soll false zurückgeben, falls der Puffer leer ist. (4 P) 3.6 Fügen Sie die Methode leere hinzu, die den Puffer leeren soll. (1 P) 3.7 Implementieren Sie die Methode leer, die prüfen soll, ob der Puffer leer ist. (1 P) 3.8 Ergänzen Sie in Puffer.hpp sinnvolle const-deklarationen. (2 P) 3.9 Legen Sie in der main-funktion ein Puffer-Objekt der Größe 5 an. (1 P) 3.10 Rufen Sie in einer Schleife 10-mal die push-methode mit verschiedenen Werten auf. (2 P) 3.11 Lesen Sie in einer Schleife mit der pop-methode alle Werte aus dem Puffer aus und geben Sie diese auf der Konsole aus. (2 P) Geforderte Konsolenausgabe: Aufgabe 3: pop: 3 pop: 2.5 pop: 2 pop: 1.5 pop: 1 Hinweise: Es sind keine Inline-Methoden erlaubt. Es dürfen keine weiteren Klassenelemente hinzugefügt werden.

Seite 5 von 8 Vorbereitete Dateien: * Puffer.hpp #ifndef PUFFER_HPP_ #define PUFFER_HPP_ class Puffer protected: double *daten; //< Zeiger auf die Daten des Puffers int groesse; //< Puffergroessse int schreibpos; //< Index des naechsten Schreibzugriffs void init (int groesse); Puffer(int groesse=0); Puffer(Puffer& other); ~Puffer(); bool push(double wert); bool pop(double& wert); void leere(); bool leer(); #endif PUFFER_HPP_ * main.cpp #include <iostream> #include <string> using namespace std; #include "Puffer.hpp" int main() cout << "Aufgabe 3:" << endl; //> return 0;

Seite 6 von 8 Aufgabe 4: Vererbung (17 P) Bei dieser Aufgabe wird ein Punkt durch seine x- und y-koordinate; eine Linie durch ihre Endpunkte; ein Kreis durch Mittelpunkt und Radius und ein Rechteck durch zwei Kanten beschrieben. Jedes dieser geometrischen Objekte (GeomObjekt) soll über die beiden Methoden giblaenge und gibflaeche verfügen. Ergänzen Sie die Datei Geometrie.hpp, so dass die unveränderte main-funktion die unten angegebene Konsolenausgabe erzeugt. Geforderte Konsolenausgabe: Aufgabe 4: Länge = 0 Fläche = 0 Länge = 4 Fläche = 0 Länge = 8 Fläche = 50.2655 Länge = 4 Fläche = 12 Hinweis: Sie können ausschließlich Inline-Methoden verwenden. * Geometrie.hpp #ifndef GEOMETRIE_HPP_ #define GEOMETRIE_HPP_ #include <math.h> class Punkt double x; double y; class Linie Punkt a; Punkt b; class Kreis

Seite 7 von 8 Punkt m; double r; class Rechteck Linie a; Linie b; #endif GEOMETRIE_HPP_ * main.cpp #include <iostream> using namespace std; #include "Geometrie.hpp" void zeigeobjekt(geomobjekt const& obj) cout << "Länge = " << obj.giblaenge() << endl; cout << "Fläche = " << obj.gibflaeche() << endl; int main() cout << "Aufgabe 4:" << endl; Punkt p1(0.0, 0.0); Punkt p2(4.0, 0.0); Punkt p3(4.0, 3.0); Linie l1(p1, p2); Linie l2(p2, p3); Kreis k(p1, 4.0); Rechteck r(l1, l2); zeigeobjekt(p1); zeigeobjekt(l1); zeigeobjekt(k);

Seite 8 von 8 zeigeobjekt(r); return 0;