Skip to main content

2018 | Buch

C++ mit Visual Studio 2017 und Windows Forms-Anwendungen

Ein Fach- und Lehrbuch für Standard C++ und Windows Forms-Anwendungen

verfasst von: Prof. Richard Kaiser

Verlag: Springer Berlin Heidelberg

Buchreihe : Xpert.press

insite
SUCHEN

Über dieses Buch

Dieses Buch stellt C++ umfassend dar. Es ist ein Lehrbuch, das keine Vorkenntnisse voraussetzt. Die C++11/14-Erweiterungen sind von Anfang an integriert. Und es ist ein Fachbuch, das erfahrene C++-Programmierer auf den neuesten Stand bringt. Es zeigt die zahlreichen Neuerungen gegenüber früheren Versionen von C++ und Visual Studio. Viele Beispiele illustrieren, wie man diese vorteilhaft einsetzen kann. Die Inhalte sind in zahlreichen Vorlesungen und Industrieseminaren erprobt. Übungsaufgaben (mit Lösungen auf der Homepage des Autors) ermöglichen dem Leser, das Gelernte zu vertiefen.

Dieses Buch erscheint in zwei weitgehend identischen Ausgaben:

In der vorliegenden Ausgabe werden Programme mit einer grafischen Benutzeroberfläche geschrieben. Alle Ein- und Ausgaben erfolgen über eine Windows-Benutzeroberfläche. Diese Programme sehen etwas ansprechender aus als Konsolenprogramme. Das kann Anfängern den Einstieg erleichtern.

In der weiteren Ausgabe „C++ mit Visual Studio 2017“ (ISBN 978-3-662-49792-0) werden reine Standard-C++-Programme geschrieben, d.h. ohne grafische Benutzeroberfläche. Alle Ein- und Ausgaben erfolgen über die Konsole.

Inhaltsverzeichnis

Frontmatter
Kapitel 1. Die Entwicklungsumgebung
Zusammenfassung
Visual Studio besteht aus verschiedenen Werkzeugen (Tools), die einen Programmierer bei der Entwicklung von Software unterstützen. Eine solche Zusammenstellung von Werkzeugen zur Softwareentwicklung bezeichnet man auch als Programmier- oder Entwicklungsumgebung.
Richard Kaiser
Kapitel 2. Steuerelemente für die Benutzeroberfläche
Zusammenfassung
Dieses Kapitel gibt einen Überblick über die wichtigsten Steuerelemente (Bedienelemente) für die Benutzeroberfläche von Windows-Programmen: Sie zeigen dem Anwender Informationen an oder nehmen Anweisungen und Informationen von ihm entgegen.
Richard Kaiser
Kapitel 3. Elementare Datentypen und Anweisungen
Zusammenfassung
Nachdem in den letzten beiden Kapiteln gezeigt wurde, wie man mit der Entwicklungsumgebung Visual Studio arbeitet, beginnen wir in diesem Kapitel mit der Vorstellung der Sprachelemente von C++.
Richard Kaiser
Kapitel 4. Die Stringklassen: string, wstring usw.
Zusammenfassung
In C und auch in vielen C++-Programmen werden Strings traditionellerweise mit nullterminierten Strings (Datentyp char*, siehe Abschnitt 7.10) dargestellt. Allerdings ist die Arbeit damit ziemlich umständlich und fehleranfällig. So kann man einen nullterminierten String nicht einfach mit dem Zuweisungsoperator „=“ auf einen anderen kopieren, und bei Funktionen wie strcpy muss man immer darauf achten, dass die Quelle auf einen nullterminierten String zeigt und im Zielbereich genügend Speicher reserviert ist.
Richard Kaiser
Kapitel 5. Arrays und Container
Zusammenfassung
Bisher haben wir alle Variablen einzeln definiert. Das kann aber ziemlich aufwendig werden, wenn man eine größere Anzahl von Variablen benötigt.
Richard Kaiser
Kapitel 6. Einfache selbstdefinierte Datentypen
Zusammenfassung
Selbstdefinierte Datentypen werden normalerweise mit Klassen definiert. Das ist allerdings ein umfangreiches Thema (siehe Kapitel 9). Damit auch schon vor Kapitel 9 einfache selbstdefinierte Datentypen verwendet werden können, werden hier einige einfache Grundbegriffe im Zusammenhang mit sogenannten Strukturen und Aufzählungstypen betrachtet.
Richard Kaiser
Kapitel 7. Zeiger, Strings und dynamisch erzeugte Variablen
Zusammenfassung
In den bisherigen Ausführungen wurden Speicherbereiche im Hauptspeicher immer über Variablen und ihre Namen angesprochen.
Richard Kaiser
Kapitel 8. Überladene Funktionen und Operatoren
Zusammenfassung
Mit Funktionen können Anweisungen unter einem eigenen Namen zusammengefasst und unter diesem Namen wieder aufgerufen werden. Dieses einfache Konzept hat viele Vorteile:
  • Mehrfach auszuführende Anweisungsfolgen können über einen Namen aufgerufen werden. Da man sie nicht jedes Mal ins Programm schreiben muss, spart das Schreibarbeit und man erhält kürzere, übersichtlichere Programme.
  • Wenn Änderungen einer solchen mehrfach auszuführenden Anweisungsfolge notwendig werden, muss man sie nur einmal durchführen.
  • Eine Programmiersprache kann um selbst definierte, problemangemessene Sprachelemente erweitert werden.
  • Bei der Suche nach der Lösung eines komplexeren Problems kann man systematisch die Strategie der schrittweisen Verfeinerung anwenden. Dabei versucht man die Lösung eines Gesamtproblems dadurch zu finden, dass man es in einfachere Teilprobleme zerlegt, die dann isoliert gelöst werden. Diese Vorgehensweise ist die wohl wichtigste allgemeine Lösungsstrategie.
  • Wenn man die Lösung jedes Teilproblems in einer Funktion zusammenfasst, wird die Struktur der Lösung explizit im Programm dokumentiert.
Richard Kaiser
Kapitel 9. Objektorientierte Programmierung
Zusammenfassung
Bisher haben wir vor allem mit elementaren Datentypen wie int, double usw. gearbeitet. In den letzten 30 Jahren hat sich aber gezeigt, dass es bei komplexeren Aufgaben sehr hilfreich sein kann, problemangemessene Datentypen zu haben. Da der Datentyp festlegt, welche Operationen mit einer Variablen des Datentyps möglich sind, bietet ein problemangemessener Datentyp im Idealfall genau die Operationen, die für die Lösung des anstehenden Problems hilfreich sind.
Richard Kaiser
Kapitel 10. Namensbereiche
Zusammenfassung
Große Programme oder Bibliotheken können viele Namen enthalten. Dann kann es leicht vorkommen, dass derselbe Name für verschiedene globale Bezeichner (z.B. Namen für Datentypen, Klassen, Funktionen usw.) benötigt wird.
Richard Kaiser
Kapitel 11. Exception-Handling
Zusammenfassung
Die üblichen Kontrollstrukturen (if, while usw.) sind für die Steuerung eines normalen Programmablaufs angemessen und ausreichend. Sie führen allerdings schnell zu unübersichtlichen Programmstrukturen, wenn man damit Fehler abfangen will.
Richard Kaiser
Kapitel 12. Containerklassen der C++-Standardbibliothek
Zusammenfassung
Zum C++-Standard gehört eine umfangreiche Standardbibliothek. Fast 1000 der 1400 Seiten dieses Standards befassen sich allein mit dieser Bibliothek. Derjenige Teil der Standardbibliothek, der Container und Algorithmen umfasst, wird auch als Standard Template Library (STL) bezeichnet.
Richard Kaiser
Kapitel 13. Dateibearbeitung mit den Stream-Klassen
Zusammenfassung
Daten in einem Programm wurden bisher vor allem in Variablen dargestellt. Diese Variablen stellen Speicherbereiche im Hauptspeicher des Rechners dar, deren Reservierung am Ende des Programms wieder aufgehoben wird. Deshalb kann man danach nicht mehr auf die Daten zugreifen. Will man Daten über die Laufzeit eines Programms hinaus erhalten, müssen sie auf sogenannten externen Datenträgern gespeichert werden. Das sind meist Magnetplatten (Festplatten), Magnetbänder, Speicherchips, optische Speichermedien (CD-ROMs, DVDs usw.) oder einfach Papier, auf dem Daten ausgedruckt werden.
Richard Kaiser
Kapitel 14. Funktoren, Funktionsobjekte und Lambda-Ausdrücke
Zusammenfassung
Eine Klasse mit einem Aufrufoperator wird auch als Funktor bezeichnet, und ein Objekt einer solchen Klasse als Funktionsobjekt. Funktionsobjekte können wie Funktionen verwendet werden. Sie bieten aber zusätzliche Möglichkeiten und können oft einfacher als gewöhnliche Funktionen verwendet werden. Funktoren und Funktionsobjekte spielen in C++ und der Standardbibliothek eine große Rolle.
Richard Kaiser
Kapitel 15. Templates
Zusammenfassung
Templates sind Vorlagen für Funktionen oder Klassen, denen man als Parameter Datentypen übergeben kann. Aus einem Template und einem Argument für den Datentyp eines Parameters erzeugt der Compiler dann eine Funktion oder Klasse, die anstelle des Parameters das Argument als Datentyp enthält. Die Verwendung von Datentypen als Parameter bezeichnet man auch als generische Programmierung, und Templates werden auch als generische Funktionen bzw. Klassen, Schablonen oder Vorlagen bezeichnet.
Richard Kaiser
Kapitel 16. STL-Algorithmen und Lambda-Ausdrücke
Zusammenfassung
Die STL enthält über 100 Algorithmen für viele Aufgaben, die vor allem bei der Arbeit mit Containern immer wieder anfallen.
Richard Kaiser
Kapitel 17. Zeiten und Kalenderdaten mit chrono
Zusammenfassung
Seit C++11 steht in C++ nach
#include <chrono>
eine leistungsfähige Bibliothek für Zeitpunkte (z.B. Uhrzeiten), Zeiträume (z.B. 5 Sekunden) und Uhren zur Verfügung. Mit dieser Bibliothek kann man z.B. die aktuelle Uhrzeit anzeigen oder die Dauer der Ausführung von Anweisungen messen.
Richard Kaiser
Kapitel 18. C++11 Smart Pointer: shared_ptr, unique_ptr und weak_ptr
Zusammenfassung
Die Arbeit mit Zeigern auf dynamisch erzeugte Speicherbereiche ist oft fehleranfällig: Obwohl z.B. die beiden Funktionen.
Richard Kaiser
Kapitel 19. .NET mit C++ in Windows Forms verwenden
Zusammenfassung
In Windows Forms Anwendungen kann man zahlreiche .NET Elemente ansprechen. Diese benötigen oft Argumente und Werte, die als .NET-Klassen mit ref class und nicht wie in Standard-C++ mit class definiert sind.
Richard Kaiser
Backmatter
Metadaten
Titel
C++ mit Visual Studio 2017 und Windows Forms-Anwendungen
verfasst von
Prof. Richard Kaiser
Copyright-Jahr
2018
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-49791-3
Print ISBN
978-3-662-49790-6
DOI
https://doi.org/10.1007/978-3-662-49791-3