Home

MFC mit Microsoft Visual C++ 2008/2010 Seminare

Diese Seminare werden von Prof. Richard Kaiser gehalten, der seit vielen Jahren Seminare für zahlreiche Firmen durchführt (Referenzen). Er ist der Verfasser der Bücher „C++ mit Microsoft Visual C++ 2008“ und „C++ mit dem Borland C++Builder“, und ist Mitglied im DIN Normierungsausschuss Informationstechnik NI-22.


Teil 1: C++ für MFC-Programmierer

Viele MFC-Programme stammen noch aus der Zeit von Visual Studio 6 (ab ca. 1998) und basieren auf dem Sprachumfang des damaligen Visual C++. Inzwischen hat sich der Sprachumfang von Visual C++ allerdings beträchtlich weiterentwickelt und dem C++-Standard angenähert.

Gegenstand dieses Seminars ist das aktuelle, „moderne“ Standard-C++ für MFC-Programmierer. Der Umfang des Seminars wird an die Wünsche der Teilnehmer angepasst: Für erfahrene C++/MFC-Programmierer reichen eventuell schon 3 Tage. Für weniger erfahrene Programmierer oder Sprachumsteiger kann aber ein größerer Umfang notwendig sein. Mit einem Seminarumfang von 10 Tagen ist eine Einführung in den größten Teil von Standard-C++ möglich.

Die meisten Beispiele und Übungen dieses Kurses behandeln MFC-Anwendungen.

Zielgruppe:

Software-Entwickler, die mit Microsoft Visual Studio 2008/2010 in C++ programmieren wollen.

Voraussetzungen:

Gute Windows-Kenntnisse und Interesse am Programmieren.

Methodik:

Vortrag mit vielen Übungen, in denen praxisnahe Programme entwickelt werden

Ort und Zeit:

Dieses Seminar wird als Firmenseminar (inhouse) angeboten.

Dauer:

3 Tage (für erfahrene C++/MFC-Programmierer) - 10 Tage (Standard C++ komplett)

 

Inhalt

1. Die Entwicklungsumgebung Visual Studio 2010

Ein einführendes Beispiel
Der Quelltexteditor und IntelliSense
Kontextmenüs und Symbolleisten
Projekte, Projektdateien und Projektoptionen
Der integrierte Debugger

2. Komponenten für die Benutzeroberfläche

Ein- und mehrzeilige Textboxen, Label
ListBoxen und ComboBoxen
Buttons und Ereignisse
CheckBoxen, RadioButtons, GroupBox und Panel
Hauptmenüs und Kontext-Menüs
Standarddialoge

3. Elementare Datentypen und Anweisungen

Ganzzahldatentypen (int, bool, char usw.)
Gleitkommadatentypen
Standardkonversionen
Elementare Anweisungen (if, for, while usw.)
Funktionen, Werte- und Referenzparameter
Die Verwendung der C-Standardbibliotheken (z.B. math.h und cmath)
Arrays und die Klasse CArray
Strukturen (struct und union)
Zeiger und dynamisch erzeugte Variablen (new, delete)
Nullterminierte Strings und zugehörige Bibliotheksfunktionen
typedef
Aufzählungstypen (enum)
Präprozessoranweisungen (Makros, Pragmas)
Ausdrücke
Namensbereiche

4. Funktionen

Werte- und Referenzparameter
Funktionszeiger
Rekursion
inline-Funktionen
Default-Argumente
Überladene Funktionen und Operatoren

5. Statische Bibliotheken

Projekte, Bindung und Header-Dateien
Der Aufruf von Funktionen aus C-Bibliotheken in C++

6. Objektorientierte Programmierung

Klassen 

Datenelemente und Elementfunktionen
Objekte und die Zugriffsrechte private und public
Der Aufruf von Elementfunktionen und der this-Zeiger
Konstruktoren und Destruktoren        
OO Analyse und Design: Der Entwurf von Klassen    
Ein wenig Programmierlogik: Klasseninvarianten und Korrektheit       

Klassen als Datentypen           

Der Standardkonstruktor        
Objekte als Klassenelemente und Elementinitialisierer  
friend-Funktionen und -Klassen          
Überladene Operatoren als Elementfunktionen
Der Copy-Konstruktor           
Der Zuweisungsoperator = für Klassen           
Benutzerdefinierte Konversionen         
Explizite Konstruktoren
Statische Klassenelemente      
Konstante Klassenelemente und Objekte        
Klassen und Header-Dateien  

Vererbung       

Die Elemente von abgeleiteten Klassen

Die MFC Basisklasse CObject
Zugriffsrechte auf die Elemente von Basisklassen         
Konstruktoren, Destruktoren und implizit erzeugte Funktionen
OO Design: public Vererbung und "ist ein"-Beziehungen         
OO Design: Komposition und "hat ein"-Beziehungen  
Konversionen zwischen public abgeleiteten Klassen    
Mehrfachvererbung und virtuelle Basisklassen 

Virtuelle Funktionen, späte Bindung und Polymorphie 

Der statische und der dynamische Datentyp    
Virtuelle Funktionen    
Die interne Realisierung von virtuellen Funktionen: vptr und vtbl          
Virtuelle Konstruktoren und Destruktoren       
Virtuelle Funktionen in Konstruktoren und Destruktoren         
OO-Design: Der Einsatzbereich von virtuellen Funktionen       
OO-Design und Erweiterbarkeit         
Rein virtuelle Funktionen und abstrakte Klassen          
OO-Design: Virtuelle Funktionen und abstrakte Basisklassen  
Interfaces und Mehrfachvererbung
Protokollklassen und Programmgerüste           
Zeiger auf Klassenelemente

Laufzeit-Typinformationen       

Typinformationen mit dem Operator typeid
Typkonversionen mit dynamic_cast und static_cast

 

7. Exception-Handling in Standard-C++ und der MFC

Die try-Anweisung      
Exception-Handler und Exceptions der Standardbibliothek     
Vordefinierte MFC-Exceptions
Der Programmablauf bei Exceptions   
throw-Ausdrücke und selbst definierte Exceptions      
Fehler, Exceptions und die Korrektheit von Programmen        
Die Freigabe von Ressourcen bei Exceptions  
Die Klasse shared_ptr
Exception-Spezifikationen       
Die Funktion terminate

8. Stringklassen

Die Stringklasse string der C++ Standardbibliothek
Die MFC-Stringklasse CString
Stringstreams

9. Container der Standardbibliothek und der MFC

9.1 Sequenzielle Container

Die Container-Klassen vector, list und deque
Iteratoren
Algorithmen der Standardbibliothek
Die Container-Adapter stack, queue und priority_queue
Container mit Zeigern   

Template-basierte MFC Collection Klassen

2.2 Assoziative Container

Die Container set und multiset
Die Container map und multimap
Iteratoren der assoziativen Container

Assoziative MFC Collection Klassen

2.3 Streams und Dateien

Stream-Variablen, ihre Verbindung mit Dateien und ihr Zustand
Fehler und der Zustand von Stream-Variablen
Lesen und Schreiben von Binärdaten mit read und write
Lesen und Schreiben von Daten mit den Operatoren << und >>
Manipulatoren und Funktionen zur Formatierung von Texten
Dateibearbeitung im Direktzugriff

2.4 Die numerischen Klassen der Standardbibliothek

Komplexe Zahlen, Valarrays und Slices

10. Templates und die STL

10.1 Generische Funktionen: Funktions-Templates

Funktions-Templates mit Typ-Parametern
Spezialisierungen von Funktions-Templates
Funktions-Templates mit Nicht-Typ-Parametern
Explizit instanziierte Funktions-Templates
Explizit spezialisierte und überladene Templates
Rekursive Funktions-Templates

10.2 Generische Klassen: Klassen-Templates   

Klassen-Templates mit Typ-Parametern
Spezialisierungen von Klassen-Templates
Templates mit Nicht-Typ-Parametern
Explizit instanziierte Klassen-Templates
Partielle und vollständige Spezialisierungen
Elemente und friend-Funktionen von Klassen-Templates
Ableitungen von Templates
Exportierte Templates

10.3 Funktionsobjekte in der STL

Der Aufrufoperator ()
Prädikate und arithmetische Funktionsobjekte
Binder, Funktionsadapter und Negatoren

10.4 Iteratoren und die STL-Algorithmen

Die verschiedenen Arten von Iteratoren
Umkehriteratoren
Einfügefunktionen und Einfügeiteratoren
Stream-Iteratoren
Container-Konstruktoren mit Iteratoren
STL-Algorithmen für alle Elemente eines Containers

10.5 Die Algorithmen der STL

Lineares Suchen und Zählen
Suche nach Teilfolgen
Minimum und Maximum
Elemente vertauschen
Kopieren von Bereichen
Elemente transformieren, ersetzen und entfernen
Partitionen und Sortieren
Binäres Suchen in sortierten Bereichen   
Mischen von sortierten Bereichen
Mengenoperationen auf sortierten Bereichen


Die Inhalte können an die Wünsche der Teilnehmer angepasst werden. 

Kontakt: training @ rkaiser . de ,
R. Kaiser, Schwärzlocher Straße 53, 72070 Tübingen, Tel. 07071-41598, FAX 07071-44473


Stand: 14.6.2010