C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung...

110
Leibniz Universität IT Services | Anja Aue C++ Einführung in die objektorientierte Programmierung

Transcript of C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung...

Page 1: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

Leibniz Universität IT Services | Anja Aue

C++

Einführung in die objektorientierte Programmierung

Page 2: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 2

Handbücher des IT Services

C++ für C-Programmierer C und C++ für Java-Programmierer

Page 3: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3

Bücher

Bjarne Stroustrup: Programming. Principles and Practice Using C++. Addision Wesley. 2. Auflage.

Jürgen Wolf: Grundkurs C++: C++-Programmierung verständlich erklärt. Rheinwerk Computing. 3. Auflage.

Dieter Bär: Schrödinger programmiert C++: Jetzt mit C++ 14 und Syntax-Highlighting. Rheinwerk Computing. 2. Auflage.

Page 4: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 4

PDF-Dokumente im Netz

TU Braunschweig: https://www.tu-braunschweig.de/Medien-DB/statik/software/einfuehrung_in_cpp.pdf

Universität Graz: http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf

DHBW Stuttgart: http://wwwlehre.dhbw-stuttgart.de/~kfg/cpp/cpp.pdf

Page 5: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 5

Referenzen im Web

http://www.stroustrup.com/C++.html http://www.cplusplus.com/doc/tutorial/ http://www.cprogramming.com/tutorial.html http://www.learncpp.com/ http://www.etp.physik.uni-

muenchen.de/kurs/Computing/ckurs/cxx.html http://www.cpp-tutor.de/cpp/hinweise.html

Page 6: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 6

C++- Standard und Standardbiblothek

http://www.open-std.org/jtc1/sc22/wg21/ http://gcc.gnu.org/onlinedocs/libstdc++/ http://www.cplusplus.com/reference/clibrary/ http://en.cppreference.com/w/ https://www.sgi.com/tech/stl/ https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/

_Die_STL

Page 7: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 7

Entwicklungsumgebungen (IDE)

NetBeans (http://www.netbeans.org/) Code::Blocks (http://www.codeblocks.org/) Borland Turbo C++ (http://www.turboexplorer.com/cpp) KDevelop (http://www.kdevelop.org/) Microsoft Visual Studio (https://www.visualstudio.com/)

Page 8: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 8

NetBeans ...

1996 entwickelt von Studenten aus der Tschechischen Republik.

1999 Übernahme durch Sun Microsystems. 2010 Übernahme durch Oracle.

Die Programmiersprachen Java, C / C++, PHP und JavaScript werden unterstützt.

Download unter https://netbeans.org/.

Page 9: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 9

Installation von NetBeans für C++

Installation des Compilers MinGW und der Tools msys. Umgebungsvariablen für den Compiler setzen. Installation von NetBeans. Installation des Plugins für C/C++. Siehe https://netbeans.org/community/releases/80/cpp-setup-

instructions.html oder https://wiki.fbihome.de/Netbeans.

Page 10: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 10

Start von NetBeans

Klick auf das Icon auf dem Desktop. Start – Alle Programme – NetBeans – NetBeans IDE.

Page 11: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 11

Startseite

Page 12: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 12

Optionen für C++

Tools / Options. Die Kategorie C/C++ wird angezeigt. Die verschiedenen Registerkarten in der Kategorie bilden die

Einstellungsmöglichkeiten ab.

Page 13: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 13

Möglichkeiten

Die Registerkarte Build Tools listet den Pfad zum Compiler, Debugger etc. auf. Es werden alle Pfade zu Tools, die für die Erstellung eines ausführbaren Programms benötigt werden, eingestellt.

Die Registerkarte Project Options zeigt Regeln zur Erstellung von Objektcode mit Hilfe von make an.

Registerkarte Code Assistence. Siehe https://netbeans.org/kb/docs/cnd/HowTos.html

Registerkarte Debugging Options. Registerkarte Other legt die Dateiendungen in Abhängigkeit

des Dateityps fest.

Page 14: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 14

Build Tools

Page 15: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 15

Code Assistance

Page 16: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 16

C++ - Projekt anlegen

File – New Project. Auswahl des Ordners C/C++ in der Liste Categories. In Abhängigkeit des gewählten Elements aus der Liste Projects

werden die weiteren Schritte angezeigt. In dem Kurs wird der Eintrag C/C++-Application genutzt.

Page 17: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 17

Hinweis

Falls das C++-Projekt auf ein Netzlaufwerk unter Windows angelegt wird, werden automatisch zwei Startpunkte „main“ erzeugt.

Die Kompilierung des Programms bricht mit dem Fehler „multiple definition of `main'“ ab.

Nach dem Löschen einer der beiden Dateien „main“ kommt die Meldung „... does not exist or is not executable“.

Page 18: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 18

Projects - C/C++ Application

Siehe https://netbeans.org/kb/docs/cnd/quickstart.html

Page 19: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 19

Zeile „Project Name“

Projekte bündeln Dateien für ein lauffähiges C++-Programm. Der Name ist der Wurzelordner für alle, zu einem Projekt

gehörenden, Dateien im Ordner NetBeansProjects. Standardmäßig wird der Name CppApplication_ und eine

fortlaufende Nummer genutzt. Der Name sollte nur die Groß- und Kleinbuchstaben a…z, die

Zahlen 0...9 und den Unterstrich enthalten. Die Wörter im Projektnamen beginnen mit einem Großbuchstaben.

Page 20: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 20

Zeile „Project Location“

Mit Hilfe der Schaltfläche Browse... kann der Speicherort des Projektes in der Zeile Project Location verändert werden.

Die Zeile Project Folder setzt sich aus dem Projektnamen und dem gewählten Speicherort zusammen.

Page 21: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 21

Zeile „Create Main File“

Für ein C++-Programm wird der Einstiegspunkt in das Projekt automatisiert erstellt.

Mit Hilfe des „Main Files“ wird jedes C++-Programm gestartet.

Page 22: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 22

Zeile „Tool Collection“

Der Compiler für das C++-Programm wird ausgewählt. Der Compiler übersetzt den lesbaren Programmtext in

Maschinencode. Fehler in der Syntax führen zu einem Abbruch.

Page 23: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 23

Compiler für C++

C++ Compiler des GNU-Projekts. Unterstützung für C++11 und C++14. Aktuelle Version GCC 5.3. Download unter http://gcc.gnu.org/.

Minimalist GNU for Windows (MinGW). Download unter http://www.mingw.org/.

Page 24: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 24

Windows 7: Umgebungsvariablen

Klick im Startmenü auf System. Oder: Suche im Windows Explorer nach Systemsteuerung.

Klick auf das Icon System und Sicherheit. System / Erweiterte Systemeinstellungen. Klick auf die Schaltfläche Umgebungsvariablen.

Page 25: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 25

Windows 8: Umgebungsvariablen

Suche nach System (Systemsteuerung). Klick auf den Link Erweiterte Systemeinstellungen. Klick auf die Schaltfläche Umgebungsvariablen.

Page 26: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 26

Umgebungsvariablen für den Compiler setzen

Auswahl der Variablen PATH. Klick auf die Schaltfläche Bearbeiten. Die verschiedenen

Pfadangaben werden durch ein Semikolon getrennt. Hinzufügung von „C:\MinGW\bin“. Mit welchen Tool wird das

Programm kompiliert? Hinzufügung „C:\MinGW\msys\1.0\bin“. Mit welchen Tools wird

das lauffähige Programm erstellt?

Page 27: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 27

Geöffnetes Projekt

Page 28: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 28

Aufbau der IDE

In der Titelleiste wird der Name des Projekts angezeigt. Menüleiste. Symbolleiste für die wichtigsten Befehle. Mit Hilfe von View –

Toolbar können Symbolleisten ein- oder ausgeblendet werden. Fenster, die den Code anzeigen oder die Struktur des Projekts

abbilden.

Page 29: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 29

Fenster in der IDE

Mit Hilfe von Drag & Drop kann ein Fenstern unterhalb der Symbolleiste an jeder Position abgelegt werden.

Mit Hilfe der Schaltfläche in der rechten oberen Ecke wird ein Fenster minimiert.

Jedes Fenster besitzt mindestens eine Registerkarte. Fenster können als Registerkarten in anderen Fenstern abgelegt werden.

Page 30: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 30

Registerkarten in einem Fenster

Am oberen Rand der Registerkarte wird der Name und die Schließen-Schaltfläche angezeigt.

Der Name gibt Auskunft über die Funktion der Registerkarte. Registerkarten kategorisieren die verschiedenen Informationen.

Mit Hilfe von Drag & Drop kann eine Registerkarte von einem Fenster in ein anderes Fenster verschoben werden.

Mit Hilfe des Menüs Window können die verschiedenen Registerkarten geöffnet werden.

Page 31: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 31

„Ordner“ öffnen oder schließen

Klick auf das Pluszeichen: Ein Ordner wird geöffnet. Der Inhalt wird angezeigt.

Klick auf das Minuszeichen: Ein Ordner wird geschlossen.

Page 32: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 32

Projekt-Explorer: Anzeige der Projektstruktur

Die Registerkarte Projects zeigt die Struktur der Projekte an.

Im Ordner Source Files befindet sich der Programmcode. In diesem Ordner werden die Quelldateien (*.cpp) abgelegt.

Im Ordner Header Files befinden sich die Deklarationsdateien. In diesem Ordner werden die Header-Dateien (*.h) abgelegt.

Page 33: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 33

Projekt-Explorer: Anzeige der Ordnerstruktur

Die Registerkarte Files zeigt die Ordnerstruktur des Projekts an.

Im Wurzelverzeichnis wird die Datei „main.cpp“ zum Starten des Programms angezeigt.

Im Ordner build befinden sich die Objektdateien (*.o).

Page 34: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 34

Fenster „Classes“

Die Registerkarte Classes zeigt die verschiedenen Klassen in einem Projekt an.

Der Ordner Libraries zeigt die Header-Dateien der eingebundenen Bibliotheken an.

Für jede benutzerdefinierte Klasse in dem geöffneten Projekt wird ein Ordner angezeigt.

Globale Konstanten und Funktionen in dem geöffneten Projekt werden aufgelistet.

Page 35: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 35

Attribute einer Klasse

Attribute beschreiben eine Klasse. Private Attribute werden durch das

Schloss in der linken oberen Ecke eines blauen Quadrats gekennzeichnet.

Geschützte Attribute werden durch den Schlüssel in der linken oberen Ecke eines gelben Quadrates gekennzeichnet.

Page 36: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 36

Konstruktoren und Destruktoren einer Klasse

Konstruktoren und Destruktoren sind spezielle Funktionen einer Klasse

Konstruktoren, die zur Erzeugung eines Objekts benötigt werden, sind mit einem gelben Viereck gekennzeichnet.

Destruktoren, die bei der Zerstörung eines Objektes aufgerufen werden, sind durch ein blaues Viereck gekennzeichnet.

Page 37: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 37

Methoden einer Klasse

Methoden sind Funktionen, die die Attribute einer Klasse verändern oder lesen.

Methoden werden mit Hilfe des roten Kreises gekennzeichnet.

Page 38: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 38

Hinzufügung einer Klasse zu einem Projekt

Rechter Mausklick auf den Projektnamen im Projekt-Explorer. New – C++-Class.

Oder: File – New File. Auswahl der Kategorie C++ und den Dateityp C++-Class.

In beiden Fällen wird automatisch für die Klasse eine Header-Datei mit der Endung „.h“ und eine Codedatei mit der Endung „.cpp“ angelegt.

Page 39: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 39

Codefenster

Abbildung der Struktur eines C++-Programms. Mit Hilfe von Registerkarten werden die verschiedenen

Dateien eines Projektes angezeigt.

Page 40: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 40

Darstellung von Code

Schlüsselwörter in C++ werden standardmäßig mit blauer Schrift gekennzeichnet.

Kommentare werden in grauer Schrift dargestellt. Benutzerdefinierte Bezeichner werden mit schwarzer Schrift

gekennzeichnet. Tools – Options; Kategorie Fonts & Color legt die

verschiedenen Schriftarten für die verschiedenen Elemente im Code fest.

Page 41: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 41

Registerkarte öffnen

Durch ein Doppelklick auf eine Datei im Projekt-Explorer. Durch ein Doppelklick auf ein Element im Fenster Classes. Durch ein Doppelklick auf ein Element im Fenster Navigator.

Page 42: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 42

Registerkarte aktivieren oder schließen

Aktivierung: Klick auf den Kopf der Registerkarte. Schließen: Klick auf das Kreuz in der rechten oberen Ecke

einer Registerkarte,

Page 43: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 43

Navigator

Struktur des angezeigten Codes. In der Titelleiste wird der Namen der Methode oder Funktion

angezeigt, in dem sich der Mauszeiger aktuell befindet.

Page 44: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 44

Abbild der Struktur des Codes

Die roten Kreise kennzeichnen Methoden einer Klasse oder Funktionen in der prozeduralen Programmierung.

Gelbe Rauten kennzeichnen Methoden zur Initialisierung einer Klasse.

Blaue Rauten kennzeichnen Methoden, die bei der Zerstörung einer Klasse aufgerufen werden.

Page 45: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 45

Projekt schließen

File – Close Project (ProjectName).

Page 46: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 46

Eigenschaften eines Projekts

File – Project Properties Rechtsklick auf den Projektnamen. Properties im Kontextmenü.

Page 47: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 47

Kategorie „General“

Page 48: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 48

Kategorie General; Encoding

Einstellung des Zeichensatzes für das Codefenster. In welchen Zeichensatz wird der Code gespeichert? Um Fehler zu vermeiden, sollte dort UTF-8 eingestellt sein.

Page 49: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 49

C++

ISO-genormte Programmiersprache. Objektorientierte und generische Programmierung. Komplexe, flexible Programmiersprache. Hardware-nahe Programmierung.

Page 50: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 50

Geschichte

Ca. 1979 arbeitet Bjarne Stroustrup an einer Programmiersprache unter dem Namen „C mit Klassen“.

1983 ändert sich der Name der Programmiersprache in C++. 1985 wird die erste Referenz zu der Programmiersprache von

Bjarne Stroustrup veröffentlicht. 1990 wird Borland's Tubo C++ -Compiler als erste

kommerzielles Produkt für die Programmiersprache angeboten.

1998 Veröffentlichung des ersten Standards als ISO/IEC 14882:1998 (C++98).

Page 51: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 51

Standard

C++98. ISO/IEC 14882:1998. Publiziert im Jahr 1998. Erste Standardisierung der Programmiersprache. Ergänzung der Norm im Jahr 2003.

C++11. ISO/IEC 14882:2011. Publiziert im April 2011. Ersetzung der alten Versionen.

C++14. ISO/IEC 14882:2014. Publiziert im Januar 2015. Erweiterungen und Ergänzungen zu C++11.

Page 52: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 52

… in den Eigenschaften eines Projekts in NetBeans

Page 53: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 53

… einstellen

Rechter Mausklick auf den Namen des Projekts im Projekt-Explorer.

Klick auf das Menü Properties. Auswahl der Kategorie Build – C++ Compiler. Die Attribute in der Kategorie Basic Options werden auf der

rechten Seite des Dialogfensters angezeigt. Die Eigenschaft C++ Standard hat den Wert <default>.

Standardmäßig wird der Standard C++98 genutzt.

Page 54: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 54

Einstellungen für die Version C++11

Die Attribute in der Kategorie Basic Options werden auf der rechten Seite des Dialogfensters angezeigt. Durch einen Klick auf den Pfeil am rechten Rand der Eigenschaft C ++ Standard‑ wird die Liste aller Möglichkeiten geöffnet. Aus der Liste wird das Element C++11 ausgewählt.

Die Attribute in der Kategorie Compilation Line werden auf der rechten Seite des Dialogfensters angezeigt. Die Eigenschaft Additional Options hat den Wert -std=c++11.

Page 55: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 55

Einsatzmöglichkeiten

Treiber für Hardware. Programmierung für eingebettete Systeme. Entwicklung von Systemprogrammen. Zeitkritische Spiele. Eine Liste von Beispielen finden Sie unter

http://www.stroustrup.com/applications.html.

Page 56: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 56

Programmierkonzepte in C++

Prozedurale Programmierung. Modulare Programmierung. Objektorientierte Programmierung. Generische Programmierung.

Page 57: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 57

Prozedurale Programmierung

Top-down Entwurf. Welche Aufgabe soll abgebildet werden? Wie kann die Aufgabe in kleine Teilaufgaben gegliedert

werden? Strukturierter Code, aber keine strukturierten Daten. Das Programmierkonzept wird von den Programmiersprachen

C und C++ unterstützt.

Page 58: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 58

Anweisungen

Anweisungen sind die kleinste Einheit in einem C++-Programm.

Eine Anweisung beschreibt eine Aktion mit Hilfe von Operatoren, Operanden und Schlüsselwörtern aus C++.

{ class clsWuerfel myWuerfel; myWuerfel.setKantenlaenge(4.5); cout << "Kantenlaenge: " << myWuerfel.getKantenlaenge();}

Page 59: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 59

... in C++

Jede Anweisung in C++ endet mit einem Semikolon. Eine Anweisung kann leer sein.

{ class clsWuerfel myWuerfel; myWuerfel.setKantenlaenge(4.5); cout << "Kantenlaenge: " << myWuerfel.getKantenlaenge();}

Page 60: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 60

Funktionen

Zusammenfassung von Aktionen. Zerlegung einer Aufgabe in verschiedene Teilaufgaben. Schnittstelle nach außen.

Page 61: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 61

Aufbau

int main(){ return 0;}

Jede Funktion hat einen Kopf und einen Rumpf.

Der Funktionskopf beschreibt eine Schnittstelle nach außen. Der Funktionskopf legt fest, welche Parameter der Funktion übergeben werden. Der Typ des Rückgabewertes einer Funktion wird definiert.

Der Funktionsrumpf wird durch die geschweiften Klammern begrenzt. Mit Hilfe der geschweiften Klammern wird ein Block von Anweisungen zusammengefasst.

Page 62: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 62

Modulare Programmierung

Aufteilung von Quellcode in verschiedene Dateien. Quellcode zu einem Thema wird in einer Datei zusammengefasst.

Auslagerung von Deklarationen etc. in eine Header-Datei. Die Deklaration und Implementierung von Funktionen werden getrennt.

Module sind in sich abgeschlossen. Jedes Modul kann allein getestet und ausgeführt werden.

Das Programmierkonzept wird von den Programmiersprachen C und C++ unterstützt.

Page 63: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ | 06.05.15 Seite 63

Namensraum

Definition eines Bereiches, in dem Variablen, Funktionen und Methoden sichtbar sind.

Um Namenskonflikte zu vermeiden, werden Quelldateien in Pakete verpackt.

Alle Standardkomponenten der Programmiersprache C++ liegen in dem Namensraum std. std ist der Standard-Namensraum für Objekte, die in den Standardbibliotheken definiert sind.

Page 64: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ | 06.05.15 Seite 64

using-Anweisung

using namespace std;

Durch die Anweisung werden alle Namen in dem angegebenen Raum sichtbar.

Der Zugriff auf den angegebenen Namensraum wird für alle Funktionen erlaubt.

using-Anweisungen sollten nicht in Header-Dateien verwendet werden.

Page 65: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ | 06.05.15 Seite 65

using-Deklaration

using std::cout;

Aus dem Namensraum std wird nur der Name cout sichtbar. Alle Funktionen können nur auf das angegebene Objekt in dem

Namensraum zugreifen. Die using-Deklaration kann sich am Anfang eines Moduls oder

direkt in einem Funktionsrumpf befinden.

Page 66: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 66

Quelldateien kompilieren

Quelltext ([datei].cpp)

Präprozessor

Compiler

Objektdatei ([datei].o)

Page 67: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 67

Präprozessor und Compiler

Der Präprozessor ersetzt die, mit einem Hash-Zeichen gekennzeichneten Zeilen durch den entsprechenden Text.

Der Compiler übersetzt den lesbaren Programmtext in Maschinencode. Fehler in der Syntax führen zu einem Abbruch.

Page 68: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 68

Präprozessor-Anweisungen im Code

Jede Präprozessor-Anweisung beginnt immer mit dem Hash (#).

Die Anweisung endet automatisch mit dem Ende der Zeile. Präprozessor-Anweisung werden an den Anfang einer

Quelldatei oder Header-Datei gesetzt.

#include <iostream>#include "clsWuerfel.h"

Page 69: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 69

Header-Datei einbinden

Quelltext (main.cpp)

Präprozessor

Compiler

Objektdatei (main.o)

user-defined ([datei].h)

system-defined (header.h)

Page 70: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 70

Header-Dateien (*.h)

Inhaltsverzeichnis zu einer Quelltextdatei. Alle notwendigen Deklarationen für die Implementierung. Definition von Prototypen für eine Klasse. Definition von Prototypen von Funktionen. Instruktionen für den Compiler. Quellcode, der in mehreren Dateien eingebunden werden kann. Schnittstelle nach außen.

Page 71: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 71

Beispiel einer Header-Datei#ifndef CLSWUERFEL_H#define CLSWUERFEL_H

class clsWuerfel {

public: clsWuerfel(); clsWuerfel(int); clsWuerfel(const clsWuerfel& );

~clsWuerfel();

void setKantenlaenge(double);

double getKantenlaenge();

double getWuerfelVolumen();

Be

isp

iele

/cp

pO

OP

_0

01

_..

.

private: double kantenlaenge; };

#endif /* CLSWUERFEL_H */

Page 72: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 72

Einbinden von Header-Dateien

Mit Hilfe des Befehls #include werden die verschiedenen Header-Dateien eingebunden.

Header-Dateien, die durch die spitzen Klammern begrenzt werden, sind in der Standardbibliothek definiert.

Header-Dateien, in Anführungszeichen, sind benutzerdefinierte Deklarationsdateien.

#include <iostream>#include "clsWuerfel.h"

Page 73: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 73

Symbolische Konstanten in einer Header-Datei

Mit Hilfe von #define wird eine symbolische Konstante deklariert.

Der Präprozessor ersetzt die Bezeichnung der symbolischen Konstanten im Code durch den entsprechenden Wert.

Eine symbolische Konstante kann einen definierten Wert haben, muss aber nicht. In diesem Beispiel hat die Konstante keinen definierten Wert.

#define CLSWUERFEL_H

#define name

Page 74: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 74

Ist die symbolische Konstante definiert?

#ifndef CLSWUERFEL_H#define CLSWUERFEL_H

#endif /* CLSWUERFEL_H */

Mit Hilfe von #ifndef (if not defined) kann abgefragt werden, ob die symbolische Konstante definiert ist oder nicht.

Der Anweisungsblock endet mit #endif. Durch diese Präprozessor-Anweisung wird eine

Mehrfacheinbindung einer Header-Datei verhindert.

Page 75: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 75

Ausführbares Programm erzeugen

Objektdatei (main.o)

Linker

Ausführbare Datei (main.exe)

Objektdatei ([datei].o)

Standard Runtime Library

Page 76: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 76

Linker

Bindet alle zu einem Programm gehörenden Objektdatei zu einer ausführbaren Datei zusammen.

Falls die einzubindenden Dateien nicht vorhanden sind, wird eine Fehlermeldung ausgegeben.

Page 77: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 77

Startpunkt eines modularen C++-Programms

#include <iostream>#include "clsWuerfel.h"

using namespace std;

int main() { class clsWuerfel myWuerfel;

class clsWuerfel koerper(5); myWuerfel.setKantenlaenge(4.5); cout << "Kantenlaenge meines Würfels: " << myWuerfel.getKantenlaenge();

return 0;}B

eis

pie

le/c

pp

OO

P_

00

1_

...

Page 78: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 78

main()

Bereitstellung einer Steuerzentrale für das Projekt. Jedes ausführbare Programm in der Programmiersprache

C+ + beginnt mit dieser Funktion.‑ Aufruf von Klassen und Funktionen aus Header-Dateien. main ist der Name der Startprozedur. C++-Programme sind

case-sensitiv. Das heißt, eine Funktion Main wird nicht für den Start genutzt.

Die main-Datei ist nur einmal in einem C++-Projekt vorhanden.

Page 79: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 79

Aufbau

Präprozessor-Anweisung

int main ()

}

Anweisung;

Anweisung;

return 0;

using - Anweisung;

{

Page 80: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 80

Objektorientierte Programmierung

Bottom-up Design. Welche Daten werden zur Beschreibung eines Objektes aus

der realen Welt benötigt? Objekte werden in Abhängigkeit der gestellten Aufgabe abstrahiert.

Welche Methoden werden zur Modifizierung eines Objektes benötigt? Die Attribute (die Eigenschaften) eines Objekts werden mit Hilfe von Methoden verändert und gelesen.

Das Programmierkonzept wird von der Programmiersprache C++ unterstützt.

Page 81: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 81

Objekte

Variablen von einem bestimmten Typ „Klasse“. Mit Hilfe eines Bauplans wird ein konkretes Objekt erstellt. Dem Objektnamen folgen keine runden Klammern. Das Objekt

nutzt den Standard-Bauplan. Dem Objektnamen folgen runde Klammern. In den runden

Klammern befindet sich eine Parameterliste. Der vorhandene Bauplan wird entsprechend der Anfangswerte angepasst.

class clsWuerfel myWuerfel;

class clsWuerfel koerper(5);

Page 82: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 82

„Standard-Objekt“

Dem Objektnamen folgen keine runden Klammern. Das Objekt nutzt den Standard-Bauplan.

class clsWuerfel myWuerfel;

Page 83: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 83

Übergabe von Parametern

Dem Objektnamen folgen runde Klammern. Die runden Klammern begrenzen eine Parameterliste. Die

einzelnen Parameter in der Liste werden durch Kommata getrennt.

Der vorhandene Bauplan wird entsprechend der Anfangswerte angepasst.

class clsWuerfel koerper(5);

Page 84: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 84

Objekt „Würfel“

Die Kantenlänge beträgt 2 cm. Der Würfel ist grün.

Für das Objekt kann die Kantenlänge und die Farbe gelesen und modifiziert werden.

Das Volumen des Objekts kann berechnet werden.

Page 85: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 85

Objekt

Substantive in einem Text. Ein Ding (Exemplar, Instanz) aus der realen Welt. Virtuelle Dinge wie zum Beispiel Dialoge auf dem Monitor. Baukasten von Funktionen.

Page 86: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 86

Beispiel „Objekt“

Postalische Adresse

Schloßwender Str.5

30159Hannover

Person

HerrTom

Meier

Wohnt „Schloßwender Str 5“; „30159 Hannover“

Zieht um in den „Welfengarten 6“,„30167 Hannover“

Ändert den Namen in „Meier-Müller“

Page 87: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 87

Prinzipien der objektorientierten Programmierung

Abstraktion Datenkapselung Polymorphismus Vererbung

Page 88: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 88

Abstraktion

Die allgemein gültigen Attribute werden dargestellt. Es werden nur die Attribute definiert, die für die

Programmieraufgabe benötigt werden. In Abhängigkeit der Nutzung der Attribute werden Methoden

implementiert.

Page 89: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 89

Klasse „Würfel“

Attribute: kantenlaenge. Die Attribute beschreiben ein konkretes Objekt. Die Eigenschaften sind für alle Objekte dieses Typs gültig.

Methoden zum Lesen und Modifizieren der Attribute: setKantenlaenge, getKantenlaenge.

Methoden, um den Bau zu beginnen: clsWuerfel.

Methoden, um den Bau zu zerstören: ~clsWuerfel.

Page 90: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 90

Klasse

Abstraktion von einen Ding. Zusammenfassung von Variablen und Funktionen in einem

Datentyp. Bauplan für ein bestimmtes Objekt. Oberbegriff / Kategorie von Dingen. Zum Beispiel ein Würfel

kann gelb, rot oder grün sein. Die Kantenlänge kann unterschiedlich sein. Aber alle Ausprägungen beschreiben einen „Würfel“.

Page 91: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 91

Beispiel „Klasse“

Postalische Adresse

StraßeHausnummerPostleitzahl

Ort

Person

AnredeVorname

Nachname

Wohnt an der Adresse

Zieht um

ändert

Page 92: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 92

„Klasse“ und „Objekt“

Postalische Adresse

StraßeHausnummerPostleitzahl

Ort

Person

AnredeVorname

Nachname

wohnt ...

zieht um

ändert

Postalische Adresse

Schloßwender Str.5

30159Hannover

Person

HerrTom

Meier

wohnt „Schloßwender Str 5“; „30159 Hannover“

zieht um in den „Welfengarten 6“,„30167 Hannover“

ändert den Namen in „Meier-Müller“

Page 93: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 93

Aufbau einer Klasse

class clsWuerfel {

public: clsWuerfel(); clsWuerfel(int); clsWuerfel(const clsWuerfel& ); ~clsWuerfel();

void setKantenlaenge(double); double getKantenlaenge(); double getWuerfelVolumen();

private: double kantenlaenge; };

Be

isp

iele

/cp

pO

OP

_0

01

_..

.

class clsWuerfel {

}

public:Konstruktor();Destruktoren();Methoden();

private:attribut;

attribut;

Page 94: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 94

Beschreibung mit Hilfe von UML

Unified Modelling Language zur Darstellung von Klassen etc.

Der Name der Klasse steht am oberen Rand.

Dem Namen folgen die Attribute der Klasse. Auf die Attribute kann von außen nicht zu gegriffen werden (-; private ).

Am Ende werden die Methoden aufgelistet. Die Methoden dürfen von außen aufgerufen werden (+; public).

Wuerfel

- kantenlaenge: double

+getKantenlaenge() : double+setKantenlaenge(double) : void+getVolumen() : double

Page 95: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 95

… in einer Header-Datei

class clsWuerfel {

};

Beispiele/cppOOP_001_...

Beginn mit dem Schlüsselwort class. Dem Schlüsselwort folgt der Name der Klasse. Der Name ist

eindeutig. Attribute und Methoden werden innerhalb der geschweiften

Klammern deklariert. Jede Deklaration einer Klasse endet mit einem Semikolon.

Page 96: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 96

Attribute (Member)

Allgemein gültige Beschreibung eines Objekts. In diesem Beispiel wird der Würfel mit Hilfe der Kantenlänge und der Füllfarbe beschrieben.

Eigenschaften eines Objekts. In diesem Beispiel: Farbe und Kantenlänge.

Beschreibung des Zustandes eines Objekts. Wenn ein Würfel gedreht wird, wird das Attribut „IstGedreht“ gesetzt.

Attribute beschreiben die variablen Werte eines Objektes.

Page 97: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 97

… in einer Header-Datei

class clsWuerfel {

public:

private: double kantenlaenge;};

Be

isp

iele

/cp

pO

OP

_0

01

_..

.

Page 98: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 98

Methoden

Erstellung von Objekten. Lesen und verändern von Attributen eines Objektes. In diesem

Beispiel wird die Kantenlänge und die Füllfarbe mit Hilfe von Methoden gesetzt und gelesen.

Änderung eines Zustandes eines Objekts. Funktionen innerhalb einer Klasse. Objekte und Methoden werden mit Hilfe des Punktoperators

verbunden.

Page 99: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 99

… in einer Header-Datei

class clsWuerfel {

public: clsWuerfel(); clsWuerfel(int); clsWuerfel(const clsWuerfel& ); ~clsWuerfel();

void setKantenlaenge(double); double getKantenlaenge(); double getWuerfelVolumen();

private:

};Be

isp

iele

/cp

pO

OP

_0

01

_..

.

class clsWuerfel {

}

public:Konstruktor();Destruktoren();Methoden();

Page 100: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 100

Konstruktoren, Destruktoren und Methoden

Konstruktoren werden bei der Erzeugung eines konkreten Objekts von einer Klasse genutzt.

Destruktoren werden bei der Zerstörung eines Objektes aufgerufen.

Methoden lesen und verändern Attribute im Leben eines Objekts.

Page 101: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 101

… in einer Quelldatei

#include "clsWuerfel.h"

clsWuerfel::clsWuerfel() { kantenlaenge = 1;}

clsWuerfel::clsWuerfel(int kantenlaenge){ this->kantenlaenge = kantenlaenge;}

void clsWuerfel::setKantenlaenge(double laenge){ kantenlaenge = laenge;}

Be

isp

iele

/cp

pO

OP

_0

01

_..

.

Page 102: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 102

Datenkapselung

Methoden (Funktionen) und Attribute (Eigenschaften) werden gemeinsam in einer Klasse gekapselt.

Die Klasse stellt alle Funktionen, die zur Bedienung oder Erzeugung von Objekten benötigt werden, nach außen hin zur Verfügung.

Eigenschaften von Objekten können aber nicht von außen manipuliert werden. Das Innenleben der Objekte ist in einer Blackbox versteckt.

Page 103: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 103

Blackbox

class clsWuerfel {

public: clsWuerfel(); clsWuerfel(int); clsWuerfel(const clsWuerfel& ); ~clsWuerfel();

void setKantenlaenge(double); double getKantenlaenge(); double getWuerfelVolumen();

private: double kantenlaenge; };

Be

isp

iele

/cp

pO

OP

_0

01

_..

.

Mit Hilfe der Eingabe von private: werden die Attribute in der Klasse gekapselt. Die Attribute sind nicht sichtbar.

Methoden sind public:. Methoden beschreiben eine Schnittstelle nach außen mit Hilfe ihres Kopfes. Der Anwender weiß, aber nicht wie die Methode Attribute verändert oder liest.

Page 104: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 104

Vererbung

Darstellung von Beziehungen zwischen zwei Klassen. Darstellung von Eltern-Kind-Beziehungen. Beispiel: Ein Würfel erbt Attribute und Methoden von dem

Objekt „Rechteck“.

Page 105: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 105

Polymorphismus

Verschiedene Implementierungen von Methoden. Überschreiben von geerbten Methoden. Überladen von vorhandenen Methoden. „Kinder“ können Methoden der „Eltern“ überschreiben. Die

überschriebene Methode der Eltern kann aber trotzdem von den Kindern genutzt werden.

Page 106: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 106

Generische Programmierung

Nutzung von Schablonen zur Beschreibung eines Objekts. Schreiben von Methoden unabhängig vom Typ des Objektes. Nutzung von Templates. Das Programmierkonzept wird von der Programmiersprache

C++ unterstützt.

Page 107: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 107

Konsole in NetBeans

Fenster Output meist am unteren rechten Rand der IDE. Standardeingabe (cin) und Standardausgabe (cout) für ein C++-

Programm Window - Output oder <STRG>+<4> minimiert oder maximiert

die Konsole.

Page 108: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 108

Konsolen-Typ in NetBeans auswählen

Rechter Mausklick auf das C++-Projekt. Properties im Kontextmenü. Kategorie Run. Console Type sollte den Eintrag Standard Output haben.

Page 109: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 109

Starten des C++-Programms

Mit Hilfe des grünen Pfeils am linken Rand wird das, in der Titelleiste benannte Programm gestartet.

Page 110: C++ - Einführung in die objektorientierte Programmierung · C++ - Objektorientierte Programmierung g | 06.05.15 Seite 3 Bücher Bjarne Stroustrup: Programming. Principles and Practice

C++ - Objektorientierte Programmierung g | 06.05.15 Seite 110

C++-Programm stoppen

Mit Hilfe des roten Rechtecks am linken Rand wird das, in der Titelleiste benannte laufende Programm angehalten.

Das Programm wird nicht vollständig durchlaufen, sondern vom Entwickler vorzeitig abgebrochen.