WiSe 2013 | Programmierpraktikum C++ - 06_Übungsblatt struct und class
Upcoming SlideShare
Loading in...5
×
 

WiSe 2013 | Programmierpraktikum C++ - 06_Übungsblatt struct und class

on

  • 303 views

 

Statistics

Views

Total Views
303
Views on SlideShare
261
Embed Views
42

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 42

http://www.hki.uni-koeln.de 42

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WiSe 2013 | Programmierpraktikum C++ - 06_Übungsblatt struct und class WiSe 2013 | Programmierpraktikum C++ - 06_Übungsblatt struct und class Document Transcript

  • Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Programmierpraktikum C++ Jan G. Wieners, MA - jan.wieners@uni-koeln.de Aufgabe 1: Eine einfache Struktur, eine einfache Klasse In der vergangenen Kursstunde haben wir eine Filmdatenbank implementiert, deren wesentliche Datenstruktur wir selbst erstellt haben: struct filmDB { char deutscherName[100]; char originalTitel[100]; int veroeffentlichungsJahr; char regie[100]; }; Die Struktur wurde über den einfachen Programmablauf mit Inhalt gefüllt: class filmDB meineFilmDB[100]; int filmCounter = 0; cout << "Film #" << filmCounter + 1 << endl; cout << "Eingabe des Filmnamens (deutsch): "; // Einen ersten Film hinzufügen // --> Die erste Speicherstelle des Arrays füllen cin >> meineFilmDB[filmCounter].deutscherName; cout << "Eingabe des Filmnamens (Originaltitel): "; cin >> meineFilmDB[filmCounter].originalTitel; cout << "Eingabe des Veröffentlichungsjahres: "; cin >> meineFilmDB[filmCounter].veroeffentlichungsJahr; cout << "Eingabe des Regisseurs / Regisseurin: "; cin >> meineFilmDB[filmCounter].regie; Strukturen sind zwar ganz fein, erst Klassen (class) jedoch ermöglichen objektorientierte Programmierung (Geheimnisprinzip, etc.): class filmDB { public: char deutscherName[100]; char originalTitel[100]; int veroeffentlichungsJahr; char regie[100]; }; class filmDB meineFilmDB[100]; cin >> meineFilmDB[filmCounter].deutscherName; Die oben wiedergegebene Klasse unterscheidet sich nur durch die Schlüsselwörter class und public von der besprochenen Struktur. public definiert den öffentlichen Teil der Klasse; auf öffentliche Teile (Member) der Klasse lässt sich von außerhalb der Klasse zugreifen. Bereiche der Klasse, die mit private angegeben sind, lassen sich von außen nicht erreichen.   Aufgabe 1.1: Ändern Sie das Schlüsselwort public in private und schauen Sie, was geschieht, wenn Sie den Quelltext compilieren. Aufgabe 1.2: (Lassen Sie die Membervariablen der Klasse filmDB definiert als private Variablen) In der objektorientierten Programmierung werden private Teile der Klasse häufig über einfache Funktionen zugänglich gemacht, die es ermöglichen, Inhalte der privaten Membervariablen zu lesen (getter) und zu schreiben (setter). Ergänzen Sie die Klasse um einen public Teil und fügen Sie der Klasse set (z.B. setRegie(…)) und get (z.B. getRegie(…)) Methoden hinzu, um den Zugriff auf die Variableninhalte zu ermöglichen. 1/2
  • Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Programmierpraktikum C++ Jan G. Wieners, MA - jan.wieners@uni-koeln.de Aufgabe 2: Funktionalität auslagern – Eigene Headerdateien Lagern Sie die Klassendeklaration in eine eigene Headerdatei mit der Dateieendung “*.h“ aus. Headerdateien lassen sich mit Ihrer main.cpp verknüpfen durch (z.B.) #include “filmdb.h“: #include <iostream> using namespace std; #include "filmdb.h" int main() { […] } Aufgabe 3: Funktionalität auslagern – Eigene Bibliotheken Lagern Sie die Klassendeklaration in die Headerdatei „filmdb.h“ und die Funktionsdefinitionen der Klasse in die C++ Datei „filmdb.cpp“ aus. Zu Beginn der Datei „filmdb.cpp“ finden sich die folgenden Angaben: #include <iostream> using namespace std; #include "filmdb.h" Aufgabe 4: Zeiger Programmieren Sie die folgende Anwendung (oder ergänzen Sie die oben angeführte Klasse um die entsprechende Funktionalität): Innerhalb der main-Funktion wird der Benutzer / die Benutzerin aufgefordert, einen beliebigen Text einzugeben. Die main-Funktion übergibt diesen Text an eine Unterfunktion, welche die Textlänge ermittelt. Die main-Funktion gibt anschließend die ermittelte Länge mit etwas Umgebungstext wieder aus. Die Unterfunktion soll keine return-Anweisung benutzen. 2/2