SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
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

Mais conteúdo relacionado

Mais de Institute for Digital Humanities, University of Cologne

Mais de Institute for Digital Humanities, University of Cologne (20)

Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
 
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-gamesBit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-games
 
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-visionBit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
 
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filterBit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
 
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationenBit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
 
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompressionBit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
 
Bit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-webBit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-web
 
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-iiBit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
 
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikationBit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
 
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conwayBit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
 
Bit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmenBit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmen
 
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
 
Bit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischungBit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischung
 
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblickBit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblick
 
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung IIBit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
 
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung I
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung IBit wisem 2015-wieners-sitzung-12_Zusammenfassung I
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung I
 

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

  • 1. 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
  • 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