Das Buch für Windows-Programme mit C++
Ein C++ Buch für Studierende und erfahrene Programmierer, die C++17 mit Visual Studio 2019 lernen und mit C++ Windows Programme mit einer grafischen Oberfläche schreiben wollen.
Für die Übungen kann das kostenlose Visual Studio Communitiy verwendet werden.
Windows Forms Projekte basieren auf einer auf marketplace.visualstudio.com verfügbaren Erweiterung von Visual Studio. Mit der kurzen Anleitung zur Installation dieser Erweiterung und der Verwendung von Windows Forms Projekten können Sie sich einen ersten Eindruck verschaffen.
Erscheinungstermin: August 2020, Springer-Verlag, Umfang: ca. 967 Seiten
Vorwort zu „C++ mit Visual Studio 2019 und Windows Forms-Anwendungen“
Der Ausgangspunkt für dieses C++ Buch war der Wunsch nach einem C++-Lehrbuch, in dem von Anfang an Programme für eine grafische Benutzeroberfläche (Windows) entwickelt werden, und nicht wie meist üblich Konsolen-Anwendungen. Programme, in denen Ein- und Ausgaben über eine Konsole erfolgen, sind für viele Anfänger weltfremd wie steinzeitliche DOS-Programme und schrecken davon ab, sich überhaupt mit C++ beschäftigen zu wollen.
C++ Windows Forms Anwendungen sind ein idealer Rahmen für C++-Programme mit einer attraktiven Benutzeroberfläche: Der Zugriff auf Windows Steuerelemente (Buttons, TextBoxen usw.) ist einfach. Der Unterschied zu einem Standard C++ Programm ist meist nur, dass Ein- und Ausgaben über ein Windows-Steuerelement (meist eine TextBox) erfolgen
textBox1->AppendText("Hello World");
während in Standard-C++ die Konsole mit cout verwendet wird:
cout << "Hello world" << endl;
Aber nicht nur Studierende können von C++ mit einer grafischen Benutzeroberfläche profitieren. Mit Windows Forms Projekten können bestehende C oder C++-Programme ohne großen Aufwand mit einer grafischen Benutzeroberfläche ausgestattet werden. Und wer C oder C++ kann und keine neue Sprache für eine GUI lernen will, kann seine bestehenden Programme mit einfachen Mitteln schöner und leichter bedienbar machen.
C++ hat sich in den letzten Jahren rasant entwickelt: Die Neuerungen von C++11, C++14, C++17 und C++20 haben viele Verbesserungen und neue Möglichkeiten gebracht. Vieles, was 2010 noch gut und empfehlenswert war, kann heute besser und sicherer gemacht werden.
Das merkt man als Buchautor und Trainer, der diese ganze Entwicklung begleitet hat, besonders deutlich: Vieles, was man früher einmal geschrieben hat, sollte man heute anders machen. Zwar würde es immer noch kompiliert werden. Aber es ist kein modernes C++ mehr, das dem aktuellen Stand der Technik entspricht und alle Vorteile nutzt.
Dieses C++ Buch stellt C++ auf dem Stand von Visual Studio 2019 im Mai 2020 vor. Das ist der Umfang von C++17.
Dieses C++ Buch entstand einerseits aus meinen Vorlesungen an der Dualen Hochschule Lörrach und andererseits aus zahlreichen Seminaren für Firmen, die sich an Software-Entwickler richten, die C++ professionell einsetzen. Dementsprechend richtet es sich einerseits an Studierende ohne Vorkenntnisse. Die Lernziele für diese Gruppe sind:
- Modernes C++ auf dem Stand von 2020 zu lernen. C++ ist nach wie vor eine der am häufigsten eingesetzten Programmiersprachen.
- Programmieren zu lernen, d.h. Programme zu schreiben, die konkrete, vorgegebene Aufgaben lösen. Das ist nur mit viel Übung möglich. Programmieren lernt man nur, indem man es tut. Deshalb enthält dieses C++ Buch auch viele Übungsaufgaben. Es ist unerlässlich, zahlreiche Aufgaben selbständig zu lösen (das müssen nicht die aus diesem Buch sein). Der Schwierigkeitsgrad der Aufgaben reicht von einfachen Wiederholungen des Textes bis zu kleinen Projektchen, die ein gewisses Maß an selbständiger Arbeit erfordern. Die Lösungen der Aufgaben findet man auf https://www.rkaiser.de.
- Eine moderne Entwicklungsumgebung kennen- und einsetzen lernen. Visual Studio ist das in der Industrie wohl am häufigsten eingesetzte Werkzeug zur Software-Entwicklung.
- Man hört immer wieder, dass C++ zu schwierig ist, um damit das Programmieren zu lernen. Dieses C++ Buch soll ein in vielen Jahren erprobtes Gegenargument zu dieser Meinung sein. Damit will ich die Komplexität von C++ nicht abstreiten. Aber wer C++ kann, findet sich leicht mit C#, Java usw. zurecht. Der umgekehrte Weg ist meist schwieriger.
Dieses C++ Buch richtet sich aber ebenso an professionelle Software-Entwickler mit einer jahrelangen C++-Praxis. Viele C++-Neuerungen machen elementare Sprachkonzepte einfacher und sicherer. Dazu kommen anspruchsvollere Neuerungen, die bessere und effizientere Lösungen ermöglichen, die so vor einigen Jahren noch nicht möglich waren. Sowohl die einfachen als auch die anspruchsvolleren Möglichkeiten haben sich in der industriellen Praxis oft noch nicht herumgesprochen. Oft wird mit C++ noch wie vor 30 Jahren mit C programmiert. Das ist fehleranfällig, unnötig aufwendig und verschenkt Vorteile und Möglichkeiten.
- Für professionelle Entwickler soll dieses C++ Buch einen nahezu vollständigen Überblick über C++17 geben und die Sprachelemente so vorstellen, dass sie in der praktischen Arbeit eingesetzt werden können. Die Erfahrungen aus meinen Firmenseminaren geben mir die Hoffnung, dass die allermeisten Themen abgedeckt sind, die im industriellen Einsatz notwendig sind.
- Da fast ausschließlich Standard-C++ behandelt wird, ist dieses Buch nicht auf Visual Studio beschränkt. Praktisch alle Ausführungen gelten für jeden standardkonformen C++-Compiler (gcc, Intel, Embarcadero usw.).
- Das moderne C++ bietet auch Programmierern von eingebetteten Anwendungen viele Vorteile gegenüber dem in diesem Anwendungsbereich verbreiteten C. Mit dem modernen C++ gibt es noch weniger Gründe als vorher, solche Anwendungen in C zu schreiben.
- Professionelle Entwickler sollen sich nicht an den Übungsaufgaben stören. Sie haben schon genügend Aufgaben gemacht, sonst wären sie keine Profis geworden. Und außerdem bietet das Tagesgeschäft genügend Übungsaufgaben.
Ich habe nicht nur versucht, die Sprachelemente anschaulich zu beschreiben, sondern auch Kriterien dafür anzugeben, wann und wie man sie sinnvoll einsetzen kann. Viele Empfehlungen aus style guides (z.B. den C++ Core Guidelines) sind in den Text eingearbeitet, ohne dass explizit darauf hingewiesen wird.
Die beiden Ausgaben von C++ mit Visual Studio
Dieses C++ Buch erscheint in zwei weitgehend identischen Ausgaben:
- In „C++ mit Visual Studio 2019 und Windows Forms Anwendungen“ werden Programme mit einer grafischen Benutzeroberfläche geschrieben. Alle Ein- und Ausgaben erfolgen über eine Windows-Benutzeroberfläche, meist eine TextBox.
- In der anderen Ausgabe „C++ mit Visual Studio 2019“ werden reine Standard-C++-Programme geschrieben, d.h. ohne graphische Benutzeroberfläche. Alle Ein- und Ausgaben erfolgen über die Konsole .
- Das ist im größten Teil bereits der einzige Unterschied zwischen den beiden Ausgaben.
- Dazu kommen noch etwa 100 Seiten mit unterschiedlichen Inhalten, da diese in Visual Studio nur für den jeweiligen Anwendungstyp verfügbar sind. Die folgenden Themen sind nur in „C++ mit Visual Studio 2019“ enthalten: Multithreading (Kapitel 17), 15.10 parallele Algorithmen der Standardbibliothek, 2.13 C++ Core Guideline Checks, 11.2 polymorphe Memory Ressourcen (pmr,), Sprachelemente von C++20: 2.14 Module, 14.6 concepts, 4.2.4 std::span , 8.2.5 der dreifache Vergleichsoperator <=> usw.
- Dagegen sind diese Themen nur in der Ausgabe für Windows Forms Anwendungen enthalten: „Steuerelemente für die Benutzeroberfläche“ und „C#/.NET Interoperabilität“ (Kapitel 2 und 19).
Unterschiede zum Buch „C++ mit Visual Studio 2017“
Die vorliegende Ausgabe ist eine umfassende Überarbeitung meines C++ Buchs über C++ mit Visual Studio 2017. Obwohl sich die beiden Jahreszahlen im Titel nur um 2 unterscheiden, ist über die Hälfte komplett neu:
- Große Teile, die heute nicht mehr aktuell sind, wurden entfernt. Vieles wurde auf den aktuellen Stand des modernen C++ gebracht. Wichtige Erweiterungen kamen dazu.
- Eigentlich wollte ich den Umfang wieder auf ca. 800 Seiten begrenzen, um potenzielle Leser nicht schon allein durch das Gewicht und die Fülle des Stoffs abzuschrecken. Das ist mir aber trotz intensivster Bemühungen nicht gelungen.
Tübingen, im Juni 2020 Richard Kaiser
Auf der Buchseite des Springer Verlags finden Sie unter „Vorschau“ eine kleine Leseprobe mit den ersten beiden Seiten eines jeden Kapitels. Bitte stören Sie sich nicht daran, dass diese Seiten in schwarz-weiß sind. Im ebook sind die Abbildungen und die Programmtexte farbig.
Downloads zu diesem C++ Buch:
- Lösungen zu den Übungsaufgaben
- Bei Microsoft eine etwas weiterführende Anleitung zu Windows Forms mit Visual Studio. Diese ist zwar schon etwas älter, aber immer noch weitgehend aktuell.
- Vorwort und Inhaltsverzeichnis als pdf