Literatur zu Visual C++ und MFC. Literatur zu Visual C++ und MFC

Größe: px
Ab Seite anzeigen:

Download "Literatur zu Visual C++ und MFC. Literatur zu Visual C++ und MFC"

Transkript

1 Programmieren in C++ Überblick 14 Einführung in die Programmierung von GUIs 15 Mehr zu MFC 16 Dokumente, Views und das Single Document Interface 17 Verschiedenes Literatur zu Visual C++ und MFC Es gibt viele gute weitere Bücher über Visual C++ und zur MFC, wenige zu Visual C++.NET und MFC. Einige enthalten eine Version von Visual C zum Einsatz in der Lehre (nicht zum kommerziellen Einsatz) Weitere, von Amazon Lesern gut beurteilte Bücher: Eugene Kain The MFC Answer Book Addison-Wesley Longman, 1999 (50 ) John E. Swanke Visual C++ MFC Programming by Example Publishers Group West, 1999 (50 ) Brian Johnson, Craig Skibo, Marc Young Inside Microsoft Visual Studio. NET 2003 Microsoft Press, 2003 (50 ) Nicht nützlich für unser Projekt! Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Literatur zu Visual C++ und MFC Bücher zu Visual C++ (Visual Studio) und MFC: George Shepherd, David Kruglinski Inside Visual C++.NET Microsoft Press, 2003, ISBN Eines der wenigen für Visual Studio.NET aktualisierten Bücher über C++ und MFC. Deutsche Version des amerikanischen Microsoft Press Originals. Sehr empfehlenswert. Hans-Jürgen Scheibl Visual C++.NET Hanser Verlag, 2003, ISBN Wie oben. Empfehlenswert. Jeff Prosise Programming Windows with MFC, Second Edition Microsoft Press, 1999, ISBN Sehr ausführliches Lehrbuch zu den MFC mit vielen Hintergrundinformationen. Erklärungen, warum etwas so funktioniert. Behandelt allerdings noch Visual Studio Version 6. Dennoch empfehlenswert, wenn auch teuer (70 ) Programmieren in C++ Überblick: 14.1 Model-View-Controller Architektur? Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

2 14.1 Model-View-Controller-Architektur Erstellen von graphischen Benutzerschnittstellen Graphical User Interface: GUI Völlig andere Programmstruktur Nicht einfach ein Hauptprogramm, das Methoden verschiedener Objekte der Reihe nach aufruft Auch nicht nur ein Menüsystem Programm wird durch Benutzerinteraktion gesteuert Art und Reihenfolge nicht im Detail planbar Ereignisgesteuerte Anwendung Tastatureingabe, Mausklick,... Realisiert durch sog. Model-View-Controller Anwendungsarchitektur 14.1 Model-View-Controller-Architektur MVC Rollen Model: Repräsentiert internen Zustand eines Objektes Speichert diesen Stellt Methoden zum Ändern und Abfragen zur Verfügung View: Stellt Zustand des Modells dar Benutzt dazu die Methoden des Modells Controller: Reagiert auf Interaktion mit der graphischen Oberfläche Aktualisiert den Zustand des Modells Sorgt dafür, dass View aktualisiert wird Ruft ggf. anderen View auf Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Model-View-Controller-Architektur Model-View-Controller (MVC) Anwendungsarchitektur Realisierbar durch Observer Design-Pattern Beobachter beobachtet eine Sache Registriert sich bei der Sache Wird von Änderungen informiert Verschieden Visualisierungen derselben Sache sind möglich Verschiedene Views desselben Modells Soweit auch als Document-View Architektur bekannt Microsoft Foundation Classes (MFC) 14.1 Model-View-Controller-Architektur MVC Architektur Benutzereingaben Controller Änderung der Darstellung Änderungen in der Benutzerschnittstelle Bildschirmausgabe View Veränderung von Daten Model Zugriff auf Daten zur Visualisiereung Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

3 14.1 Model-View-Controller-Architektur MVC Realität View und Controller sind meistens eng miteinander verbunden Trennung würde Entwurf von visuellen Komponenten komplizieren Hätte höheren Kommunikationsaufwand zwischen View und Controller zur Folge Grundlagen der Windows-Programmierung und von MFC Ursprünglich: Windows Software Development Kit (SDK) zur Windows- Programmierung Sprache C Heute hat C++ bei der professionellen Anwendungsentwicklung C abgelöst Microsoft Foundation Class Library (MFC Library) kapselt in objektorientierter Weise das C-orientierte Windows Application Programming Interface (API) Kommt man von einer zeichenorientierten Programmierumgebung, so wird man die Windows-Programmierung als etwas völlig Neues einstufen Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Programmieren in C++ Überblick: 14.1 Model-View-Controller Architektur? Das Windows Programmier-Modell Herkömmliche Programme: Prozedurales Programmier-Modell Programm läuft vom Anfang bis zum Ende in vorhersehbarer Weise Windows-Programme sind ereignisgetrieben (event-driven) Die Anwendung reagiert auf Ereignisse (events), die dem Programm von dem Betriebssystem in Form von Botschaften (messages) mitgeteilt werden Events sind Tastatureingaben, ein Mausklick, die Auswahl eines Menüpunktes, usw. Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

4 Das Windows Programmier-Modell (fortgesetzt) Der Eintrittspunkt für ein Windowsprogramm ist eine Funktion namens WinMain Die eigentlichen Aktionen geschehen jedoch in einer Funktion, die als window procedure bezeichnet wird Diese Funktion verarbeitet alle Messages, die an das Fenster gerichtet werden WinMain kreiert das Fenster und geht dann in einen Warteschleife, die message loop Dort werden Botschaften empfangen und an die window procedure zur Verarbeitung weitergeleitet Botschaften warten in einer Warteschlange des Betriebssystems, der message queue, bis sie dort herausgenommen werden Das Windows Programmier-Modell (fortgesetzt) In C wird die window procedure üblicherweise als eine große, monolithische Funktion mit einer großen switch-anweisung realisiert, wobei jeder case-zweig einer zu verarbeitenden Botschaft entspricht Der Code für eine bestimmte Botschaft wird auch als message handler bezeichnet Botschaften, die die Anwendung nicht verarbeitet, werden an die API-Funktion DefWindowProc weitergeleitet, die ein Default-Verhalten für die Botschaft implementiert Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Das Windows Programmier-Modell (fortgesetzt) Zwischen der Verarbeitung der Botschaften tut eine typische Windows- Anwendung in der Regel nichts Das Windows Programmier-Modell Die Warteschleife wird beendet, wenn die Message WM_QUIT empfangen wird Dann beendet WinMain das Programm Die window procedure ruft üblicherweise andere Funktionen auf, um die Botschaft zu verarbeiten Dies können Funktionen der Anwendung sein, aber auch Windows API Funktionen Diese stehen üblicherweise in Form von dynamic-link libraries (DLLs) zur Verfügung Die Win32 API besteht aus hunderten solcher Funktionen Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

5 Programmieren in C++ Überblick: 14.1 Model-View-Controller Architektur? MFC als Application Framework Die MFC ist außerdem ein Anwendungsgerüst (application framework) Sie definiert die Grundarchitektur der Anwendung, an die man sich halten muss Viele Routineaufgaben einer Anwendung werden von diesem Framework bereits übernommen Die Klasse CWinApp, die die Anwendung selbst repräsentiert (als Applikationsobjekt), übernimmt bereits alle Aspekte des Ablaufs eines Windows-Programmes Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C MFC Library ist eine C++ Klassenbibliothek, die das Windows-API mit einer objektorientierten Kapselung versieht. Version 7 besteht aus über 200 Klassen. Einige Klassen sind sehr einfach, wie z.b. CPoint Andere, wie z.b. CWnd, die die ganze Funktionalität eines Fensters kapselt, sind äußerst komplex Wenn man die MFC benutzt, ruft man die Windows-API nie direkt auf, immer nur Methoden der MFC-Klassen Manchmal sind diese Methoden nur ganz dünne Umhüllungen (wrappers) um die entsprechenden Windows-API Funktionen MFC als Application Framework (fortgesetzt) Das Framework stellt bereits die o.g. WinMain Funktion zur Verfügung WinMain selbst ruft die Methoden des Applikationsobjektes auf, die die eigentliche Anwendung ausmachen So realisiert die Methode Run von CWinApp, aufgerufen von WinMain, die message loop, die die Botschaften dem Fenster der Anwendung zustellt Bei der Nutzung eines Application Frameworks realisiert man die Anwendung sozusagen bottom up Eine Default-Funktionalität existiert bereits Meist tut sie gar nichts Indem man virtuelle Methoden der vorgegebenen Klassen bei deren Nachfahren überschreibt, implementiert man das gewünschte Verhalten der eigenen Anwendung Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

6 MFC als Application Framework (fortgesetzt) Die MFC realisiert eine zusätzliche Abstraktion gegenüber der schlichten Windows-API So errichtet die Document/View Architektur eine leistungsfähige Infrastruktur über die API, die die eigentlichen Daten und die Geschäftslogik des Programms von ihrer graphischen Darstellung separiert Solche Abstraktionen gibt es in der API überhaupt nicht, auch nicht außerhalb der MFC oder ähnlicher Klassenbibliotheken Document/View Architektur Die Document/View Architektur geht auf die Model-View-Controller Architektur von Smalltalk zurück, wobei hier das Model dem Document entspricht und der Controller-Teil zumeist vom View mit übernommen wird Diese Architektur findet man auch in anderen Anwendungs- Frameworks, wie z.b. bei Borland Delphi oder Java Swing Was bringt diese spezielle Architektur? Sie vereinfacht z.b. sehr das Drucken und die Druckvorschau ebenso wie das Speichern von Documents auf der Festplatte und das Zurücklesen. Man darf den Begiff document nicht zu eng auslegen Das document ist lediglich eine abstrakte Repräsentation der Daten und der Geschäftslogik der Anwendung Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Document/View Architektur Eckpfeiler des Application Frameworks der MFC Die Struktur jedes Programms ist derart, dass Dokument-Objekte die Daten und die Geschäftslogik der Anwendung halten und View-Objekte diese (ggf. in unterschiedlicher Weise) darstellen Die Basisklassen dafür sind CDocument und CView Die Klassen CWinApp und CFrameWnd, wie auch andere, kooperieren mit CDocument und CView, um alle Teile der Anwendung zusammenzubinden Fast alle MFC-Klassen sind von der Wurzelklasse CObject abgeleitet CObject implementiert bereits drei wichtige Funktionalitäten: Serialisierung von Objekten Run-Time Class Information (RTCI), nicht identisch mit der üblichen Run-Time Type Information (RTTI) ab Visual C Unterstützung von Diagnostik und Debugging Weiterhin schützt CObject vor Speicherlecks (memory leaks). Die Klasse überschreibt die new und delete Operatoren, so dass bei Beendigung des Programms vor noch nicht freigegebenen dynamischen Objekten gewarnt werden kann Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

7 AFX Funktionen Nicht alle Funktionen der MFC sind Methoden von Klassen Es gibt auch globale Funktionen, deren Namen alle mit Afx beginnen Beispiele: Funktion Beschreibung AfxAbort AfxBeginThread AfxEndThread AfxMessageBox AfxGetApp AfxGetAppName AfxGetMainWnd Beendet Anwendung sofort Erzeugt neuen Thread und beginnt seine Ausführung Beendet den aktuellen Thread Stellt eine Windows Message Box dar Liefert Zeiger auf das Anwendungs-Objekt Liefert Name der Anwendung Liefert Zeiger auf das Hauptfenster der Anwendung Eine erste MFC Anwendung Wichtige Basisklassen hierfür: CWinApp, CFrameWnd. Weiterhin: Nutzung von CPaintDC (device context) message mapping, wodurch die Verbindung zwischen einem bestimmten Message-Typ und der entsprechenden Methode geschaffen wird, die die Botschaft verarbeitet AfxGetInstanceHandle AfxRegisterWndClass Liefert Handle, die die aktuelle Anwendungs- Instanz repräsentiert Registriert eine veränderte WNDCLASS für eine MFC Anwendung Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Programmieren in C++ Überblick: 14.1 Model-View-Controller Architektur? Hello.h Deklarationen der beiden von CWinApp und CFrameWnd abgeleiteten Klassen: class CMyApp : public CWinApp public: virtual BOOL InitInstance(); }; class CMainWindow : public CFrameWnd public: CMainWindow(); protected: afx_msg void OnPaint(); afx_msg void OnAbout(); DECLARE_MESSAGE_MAP() }; typedef int BOOL Lediglich Marker, dass dies Message Handler sind Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

8 Hello.cpp Implementierungen der beiden Klassen (normalerweise sollte jede Klasse in eigenen Dateien deklariert und definiert sein; wir werden das in Zukunft auch so machen): #include <stdafx.h> #include <resource.h> #include "Hello.h" CMyApp myapp; ///////////////////////////////////////////////////////////////// // CMyApp member functions BOOL CMyApp::InitInstance () m_pmainwnd = new CMainWindow; m_pmainwnd->showwindow (m_ncmdshow); m_pmainwnd->updatewindow (); return TRUE; }... Die Anwendung als globale Variable Hello.cpp (fortgesetzt)... void CMainWindow::OnPaint () CPaintDC dc (this); } CRect rect; GetClientRect (&rect); dc.drawtext (_T ("Hello, MFC"), -1, &rect, DT_SINGLELINE DT_CENTER DT_VCENTER); void CMainWindow::OnAbout() } CDialog about(idd_aboutbox); about.domodal(); Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Hello.cpp (fortgesetzt)... ///////////////////////////////////////////////////////////////////// // CMainWindow message map and member functions BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT () ON_COMMAND(ID_APP_ABOUT, OnAbout) END_MESSAGE_MAP () CMainWindow::CMainWindow () LoadFrame(IDR_MAINFRAME); }... Bringt man das Programm zum Ablauf, so erhält man ein klassisches Windows-Fenster mit der üblichen Funktionalität verschieben, Größe verändern, minimieren, schließen In der Mitte steht der gewünschte Text Betrachten wir den Code im Detail. Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

9 Das Anwendungs-Objekt Das Applikations-Objekt wird in einer globalen Variablen gehalten. Damit ist es automatisch erzeugt und von überall zugreifbar. CMyApp myapp; InitInstance BOOL CMyApp::InitInstance () // Erzeuge Hauptfenster m_pmainwnd = new CMainWindow; Die Klassendeklaration ist in Hello.h: class CMyApp : public CWinApp public: virtual BOOL InitInstance (); }; } // Stelle Fenster dar m_pmainwnd->showwindow(m_ncmdshow); m_pmainwnd->updatewindow(); return TRUE; Der Parameter m_ncmdshow spezifiziert, wie das Fenster dargestellt wird (min, max,...) typedef int BOOL m_ncmdshow ist eine Member-Variable von CWinApp Ist initialisiert auf den Wert SW_SHOWNORMAL Aufruf von UpdateWindow(): Sofortiges Neuzeichnen des Fensters Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Das Anwendungsobjekt (fortgesetzt) Stellt die Windows-Messageloop zur Verfügung Mehrere virtuelle Funktionen können überschrieben werden, um das konkrete Anwendungsobjekt anzupassen Die Header-Datei afxwin.h enthält die Deklarationen von CWinApp und anderen MFC-Klassen Die Methode InitInstance() wird hier überschrieben Sie wird zu Beginn der Lebenszeit des Anwendungs-Objektes aufgerufen, noch bevor die Fenster kreiert werden Dies muss in InitInstance() geschehen Die Default-Implementierung von CWinApp::InitInstance besteht nur aus einer Zeile im Funktionsrumpf: CWinApp hat mehr als ein Dutzend virtuelle Funktionen, die überschrieben werden können. Beispiele sind: ExitInstance für Aufräumarbeiten, bevor die Anwendung beendet wird OnIdle für Hintergrundverarbeitung. Wird aufgerufen, wenn die Anwendung nichts zu tun hat Run kann (im Prinzip) überschrieben werden, um die Message- Loop abzuändern PreTranslateMessage erlaubt es, bestimmte Messages vor der normalen Zustellung abzufangen und einer Sonderbehandlung zu unterziehen return TRUE; FALSE als Return-Wert würde die Anwendung beenden Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

10 Das Frame Window-Objekt Unsere Fensterklasse CMainWindow ist Nachfahre von CFrameWnd und diese Klasse ist wiederum Nachfahre von CWnd Ein Frame Window dient als äußerster Rahmen für eine Windows-Anwendung Es kann andere Views, Toolbars, Statuszeilen etc. enthalten Create... ist deklariert als: BOOL Create (LPCTSTR lpszclassname, LPCTSTR lpszwindowname, DWORD dwstyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectdefault, CWnd* pparentwnd = NULL, LPCSTR lpszmenuname = NULL, DWORD dwexstyle = 0; CCreateContext* pcontext = NULL) Windows-Datentypen: (Long) Pointer to C- String (8 oder 16 Bit) 16 Bit unsigned Integer (Long) Pointer to C- String (8 Bit) Bis auf die ersten beiden Parameter sind überall Default-Werte definiert Der erste Parameter spezifiziert den Namen der WNDCLASS, auf der das Fenster basiert NULL bedeutet hier, dass ein Default-Rahmenfenster, wie es von dem Anwendungs-Framework vorgesehen ist, erzeugt wird Der zweite Parameter spezifiziert den Text, der in der Titelzeile des Fensters erscheint Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Unser Hauptfenster wird in CMyApp::InitInstance durch dynamische Erzeugung und Aufruf des Konstruktors erzeugt: CMainWindow::CMainWindow () Create (NULL, _T ("The Hello Application")); } Create ist eine Methode von CMainWindow, die von CFrameWnd geerbt wird _T ist ein Makro, durch den der String unabhängig von der aktuellen Zeichendarstellung wird Ist _UNICODE definiert, wird String in Unicode Darstellung (16 Bit) umgewandelt Weitere Create-Parameter Andere mögliche Werte für dwstyle sind WS_HSCROLL und WS_VSCROLL BOOL Create (LPCTSTR lpszclassname, LPCTSTR lpszwindowname, DWORD dwstyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectdefault, CWnd* pparentwnd = NULL, LPCSTR lpszmenuname = NULL, DWORD dwexstyle = 0; CCreateContext* pcontext = NULL) Diese Werte können auch mittels des -Operators kombiniert werden dwexstyle erlaubt die Angabe erweiterter Fensterstile (historisch bedingt) rect spezifiziert die anfängliche Position und Größe des Fensters. rectdefault ist ein Klassenattribut von CFrameWnd und spezifiziert Default-Werte. Die Anfangsparameter können durch Angabe eines CRect Objektes bestimmt werden: Create (NULL, _T ("Hello"), WS_OVERLAPPEDWINDOW, CRect(32, 64, 352, 304)); Die Parameter sind die Koordinaten der linken oberen und rechten unteren Ecken des Fensters Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

11 Weitere Create-Parameter BOOL Create (LPCTSTR lpszclassname, LPCTSTR lpszwindowname, DWORD dwstyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectdefault, CWnd* pparentwnd = NULL, LPCSTR lpszmenuname = NULL, DWORD dwexstyle = 0; CCreateContext* pcontext = NULL) pparentwnd identifiziert den Parent oder Owner des Fensters Bei einem Top-level Fenster ist dies NULL (das Desktop ist der Besitzer dieses Fensters!) lpszmenuname spezifiziert das zum Fenster gehörige Menü. Mit NULL existiert ein solches Menü (noch) nicht. pcontext ist ein Zeiger auf eine CCreateContext Struktur die von dem Framework in Verbindung mit der Document/View Architektut benötigt wird. Unterliegt die Anwendung nicht dieser Architektur, sollte der Zeiger auf NULL gesetzt werden. CMainWindow::OnPaint void CMainWindow::OnPaint () CPaintDC dc (this); // Erzeuge device context } CRect rect; // Erzeuge CRect Objekt GetClientRect (&rect); // Weise client Bereich zu // Zeichne Text dc.drawtext (_T ("Hello, MFC"), -1, &rect, DT_SINGLELINE DT_CENTER DT_VCENTER); Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Das Fenster malen Unsere Anwendung zeichnet ihren Inhalt nicht wann sie will, sondern immer nur auf Anforderung des Frameworks Dies geschieht durch Erhalt einer WM_PAINT Botschaft Auf diese Botschaft hin muss der Client-Bereich des Fensters gezeichnet werden Device Kontext Objekt Die Klasse CPaintDC definiert einen Windows device context Bei Windows wird jede graphische Ausgabe (auf Bildschirm, Drucker) mit Hilfe von device context Objekten durchgeführt CPaintDC erbt von der allgemeinen Klasse CDC und wird nur in WM_PAINT Message Handlern benutzt. Die Botschaftsbehandlungsroutine ist die Methode CMainWindow::OnPaint() Wichtige Windows API Funktionen werden im Konstruktor und Destruktor von CPaintDC aufgerufen (::BeginPaint, ::EndPaint) Dadurch, dass die CPaintDC-Instanz auf dem Stack angelegt wird, ist sichergestellt, dass am Ende auch der Destruktor aufgerufen wird Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

12 Device Kontext Objekt (fortgesetzt) DrawText zeichnet in unserem Fall einen nullterminierten (Parameter: 1) String als eine Zeile, horizontal und vertikal zentriert, in den Client-Bereich Message Map (fortgesetzt) Was muss man tun, um einer Klasse eine Message Map hinzuzufügen? Deklariere die Message Map durch Hinzufügen von DECLARE_MESSAGE_MAP zur Klassendeklaration in der Header-datei Es fällt auf, dass kein Font o.ä. angegeben wird Diese Eigenschaften gehören zu dem Device Context Implementiere die Message Map in der.cpp-datei, indem Makros, die die von der Klasse zu behandelnden Messages identifizieren, zwischen BEGIN_MESSAGE_MAP und END_MESSAGE_MAP platziert werden. Füge die Methoden zur Behandlung der Messages hinzu Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C Message Map Wie kommt es, dass die Botschaft WM_PAINT die Methode CMainWindow::OnPaint aufruft? Dazu dient die Message Map Die Message Map ist eine Tabelle, die eine Verknüpfung zwischen Windows Messages und Methoden herstellt Jede Klasse, die Nachfahre von CCmdTarget ist, kann eine Message Map enthalten Das Innenleben der MFC bezüglich Message Maps verbirgt sich hinter einigen recht komplexen Makrodefinitionen Die Verwendung einer Message Map ist jedoch sehr einfach Message Map (fortgesetzt) Unsere Klasse CMainWindow behandelt gerade eine Message, WM_PAINT Die Message Map wird also wie folgt implementiert: BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT () END_MESSAGE_MAP () Die Parameter von BEGIN_MESSAGE_MAP spezifizieren die Klasse, zu der die Message Map gehört, und deren Basisklasse. Letzterer dient dazu, dass das Framework die geerbte Message Map finden kann Zwischen BEGIN_MESSAGE_MAP und END_MESSAGE_MAP stehen die Message Map Einträge Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

13 Message Map (fortgesetzt) ON_WM_PAINT ist wiederum ein Makro, der in der MFC Header-Datei afxmsg_.h definiert ist. Er spezifiziert fest verdrahtet, dass auf WM_PAINT Messages hin die Methode (member function) OnPaint aufgerufen wird MFC definiert Makros für mehr als 100 Windows Messages. Die Namenskonvention ist so, dass der Bestandteil WM_ des Message-Namens durch "On" ersetzt wird und der Rest des Namens, bis auf den ersten Buchstaben, (gemischt) klein geschrieben wird. Man muss in der MFC-Dokumentation nachsehen, welche Art von Parameterversorgung ein Message Handler zur Verfügung stellen muss Prof. Dr. Björn Dreher Liste MI Programmieren in C Message Map (fortgesetzt) In unserem Fall sieht die Deklaration in Hello.h wie folgt aus: protected: afx_msg void OnPaint (); DECLARE_MESSAGE_MAP () afx_msg steht dabei lediglich als Hinweis, dass dies eine Message- Behandlungsmethode ist Der Zusatz wird bei der Übersetzung ignoriert Innerhalb des Makros DECLARE_MESSAGE_MAP werden C++ Sichtbarkeits-Schlüsselworte (private, protected,..) verwendet Daher steht dieser meistens am Ende der Klassendeklaration Prof. Dr. Björn Dreher Liste MI Programmieren in C Message Map (fortgesetzt) Existiert keine passende Makrodefinition für einen Message Map Eintrag, so kann man den folgenden Makro verwenden: Erstellung der Anwendung (VC !) Die folgenden Schritte sind zu tun: Wählen Sie Datei Neu und dann Projekt... ON_MESSAGE (WM_SETTEXT, OnSetText) Die Parameter sind als Beispiele gemeint. Die Methode OnSetText müsste wie folgt deklariert werden: afx_msg LRESULT OnSetText(WPARAM wparam, LPARAM, lparam); Weitere spezielle Makros in diesem Zusammenhang sind ON_COMMAND, welches eine Menü-Auswahl und andere UI- Ereignisse mit der entsprechenden Methode verknüpft, und ON_UPDATE_COMMAND_UI, welches Menü-Punkte und andere UI Objekte mit "update handlers" verknüpft, die diese mit dem internen Zustand der Anwendung synchronisieren Wählen Sie Win32 und dann Win32-Projekt und geben einen Projektnamen an. Sie können den Pfad ändern. Das letzte Verzeichnis heißt immer so wie das Projekt. Selektieren Sie Projektmappenverzeichnis erstellen. Klicken Sie ok. Wählen Sie unter Zusätzliche Optionen Leeres Projekt und klicken Sie auf Fertigstellen Um Quelltext from scratch hinzuzufügen, wählen Sie Datei Neu Datei... und dann unter Visual C++ den Quelltext Typ. Um eine bereits bestehende Datei hinzuzufügen, wählen Sie im Projektmappenexplorer das Projekt aus. Im Kontextmenü wählen Sie Hinzufügen Vorhandenes Element... und wählen dann die Dateien Prof. Dr. Björn Dreher Liste MI Programmieren in C Prof. Dr. Björn Dreher Liste MI Programmieren in C

14 Erstellung der Anwendung (VC !) Die folgenden Schritte sind zu tun (fortgesetzt): Wählen Sie Projekt Eigenschaften. Wählen Sie unter Konfigurationseigenschaften Allgemein in dem Feld Verwendung von MFC : MFC in einer öffentlichen DLL verwenden. Klicken Sie ok. Nun kann über Erstellen oder Ausführen das Programm erstellt bzw. zum Ablauf gebracht werden Prof. Dr. Björn Dreher Liste MI Programmieren in C

14 Einführung in die Programmierung von GUIs 15 Mehr zu MFC 16 Dokumente, Views und das Single Document Interface 17 Verschiedenes

14 Einführung in die Programmierung von GUIs 15 Mehr zu MFC 16 Dokumente, Views und das Single Document Interface 17 Verschiedenes Programmieren in C++ Überblick 14 Einführung in die Programmierung von GUIs 15 Mehr zu MFC 16 Dokumente, Views und das Single Document Interface 17 Verschiedenes Prof. Dr. Björn Dreher Liste MI Programmieren

Mehr

Einführung in die Windows - Programmierung mit der MFC

Einführung in die Windows - Programmierung mit der MFC Einführung in die Windows - Programmierung mit der MFC Ziel, Inhalt Wir erzeugen heute ein erstes MFC-Programm mit dem Assistenten des Visual Studios. Wir werden sehen, wie leicht es ist ein MFC Programm

Mehr

Vorlesung Software - Entwurf

Vorlesung Software - Entwurf Vorlesung Software - Entwurf Studiengang Informationstechnik 2. Semester Westsächsische Hochschule Zwickau (FH) (c) Frank.Bormann@fh-zwickau.de page 1 Dipl.-Phys. Frank Bormann Westsächsische Hochschule

Mehr

Grundlagen in Visual Studio MFC und.net

Grundlagen in Visual Studio MFC und.net Grundlagen in Visual Studio MFC und.net Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Lernziele Grundlegende

Mehr

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung

Mehr

Softwaretechnik (Allgemeine Informatik): GUIs mit MFC Überblick

Softwaretechnik (Allgemeine Informatik): GUIs mit MFC Überblick Softwaretechnik (Allgemeine Informatik): GUIs mit MFC Überblick 1 Einführung 2 Mehr zu MFC 3 Dokumente, Views und das Single Document Interface 4 Hinweise zum Projekt Prof. Dr. Björn Dreher Softwaretechnik

Mehr

Grundlagen in Visual Studio MFC und.net

Grundlagen in Visual Studio MFC und.net 1 Grundlagen in Visual Studio MFC und.net Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Lernziele Grundlegende

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Einführung in die Programmierung für NF MI. Übung 07

Einführung in die Programmierung für NF MI. Übung 07 Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare

Mehr

Model-View-Controller

Model-View-Controller Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

C ++ C und C ++ für UNIX, DOS und MS-Windows, Teil 4: Windows-Programmierung mit "Microsoft Foundation Classes"

C ++ C und C ++ für UNIX, DOS und MS-Windows, Teil 4: Windows-Programmierung mit Microsoft Foundation Classes Prof. Dr. J. Dankert FH Hamburg C und C ++ für UNIX, DOS und MS-Windows, Teil 4: C ++ Windows-Programmierung mit "Microsoft Foundation Classes" Dies ist weder ein Manual noch ein "normales" Vorlesungs-Skript

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007

Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007 Softwaretechnik Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007 1 Ziele Die Analyse einer softwaretechnischen Problemstellung nach objektorientierten

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar

Mehr

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

Mehr

Hilfsblatt für C++ Prüfungen im 5. Semester

Hilfsblatt für C++ Prüfungen im 5. Semester Hilfsblatt für C++ Prüfungen im 5. Semester Hilfsblatt für C++ Prüfungen im 5. Semester 1 Klassen 2 Win-32 Programmierung 3 Handles 3 Dateien, Files 3 Threads 3 Events 4 Funktionen 5 Einfache Funktionen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Chair of Software Engineering. Bezieher SUBSCRIBERS Ereignis Erzeuger (zb GUI) Chair of Software Engineering. Save_file ROUTINE

Chair of Software Engineering. Bezieher SUBSCRIBERS Ereignis Erzeuger (zb GUI) Chair of Software Engineering. Save_file ROUTINE 1 2 Letzte Aktualisierung: 27. Mai 2004 Programmierung im Grossen Vorlesung 13: Ereignis-Gesteuertes Design Bertrand Meyer Ereignis-gesteuerte Programmierung 3 Vermeiden von glue code 4 Verbreiter PUBLISHERS

Mehr

Vertiefung im Verständnis der SDI-Programmierung mit der Tabelle ListView unter Visual Studio 2008.

Vertiefung im Verständnis der SDI-Programmierung mit der Tabelle ListView unter Visual Studio 2008. Hochschule Harz MFC FB Automatisierung und Informatik Grafische Nutzerschnittstellen mit MFC Thema: SDI-Programmierung mit ListView Versuchsziele Vertiefung im Verständnis der SDI-Programmierung mit der

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

Multimedia im Netz Wintersemester 2012/13

Multimedia im Netz Wintersemester 2012/13 Multimedia im Netz Wintersemester 2012/13 Übung 10 Ludwig-Maximilians-Universität München Multimedia im Netz WS 2012/13 - Übung 10-1 Lösung zu Übungsblatt 08 Ludwig-Maximilians-Universität München Multimedia

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen Agenda für heute, 26. März, 2009 Imperatives vs. objektorientiertes Programmieren Lesen Sie den Begleittext Seite 79 85 Eines der drei wichtigsten Programmierparadigmen (Paradigma: Denkmuster) Imperative

Mehr

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen Agenda für heute, 1. April, 2010 Imperatives vs. objektorientiertes Programmieren Lesen Sie den Begleittext Seite 79 85 Eines der drei wichtigsten Programmierparadigmen (Paradigma: Denkmuster) Imperative

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Einführung in C# Teil 3. Matthias Nübling

Einführung in C# Teil 3. Matthias Nübling Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Microsoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber

Microsoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber Microsoft.NET Framework & Component Object Model ein Vortrag von Florian Steuber Übersicht I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Inhaltsverzeichnis 1 Einführung Die Software JGIS Grundlagen raumbezogener Daten

Inhaltsverzeichnis 1 Einführung Die Software JGIS Grundlagen raumbezogener Daten 1 Einführung... 1 1.1 Was wird vermittelt?... 1 1.2 Hinweise zum Buch... 3 1.3 Hinweise zur Buch-CD... 4 1.4 Hinweise zum Forum... 4 1.5 Allgemeine Hinweise... 5 2 Die Software JGIS... 7 2.1 Start des

Mehr

Arbeitsblatt 5 EAD II NetBeans

Arbeitsblatt 5 EAD II NetBeans Arbeitsblatt 5 EAD II NetBeans Graphische Oberfläche für Uhrenanzeige mit NetBeans Für die Einführung in die Verwendung von NetBeans erstellen wir die graphische Oberfläche für die Uhr nun mit NetBeans.

Mehr

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3 Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 5. Behälter und Iteratoren 6. Templates

Mehr

Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt WS 2006/2007

Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt WS 2006/2007 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt WS 2006/2007 1 / 15 Einführung: Grafische Benutzeroberflächen 2 / 15 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen

Mehr

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17 C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen

Mehr

Liste MI / Liste I Programmieren in C++

Liste MI / Liste I Programmieren in C++ Liste MI / Liste I Programmieren in C++ Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Medieninformatik WS 2007/2008 Kapitel 1-4 1 Ziele Kennenlernen einer weiteren objektorientierten

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 2

3D Programmierpraktikum: Einführung in C++ - Teil 2 3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter

Mehr

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21. Mehrfache Vererbung Daniel Beneckenstein 21. August 2006 Mehrfache Vererbung Ableitung einer Klasse von beliebig vielen Basisklassen: class A {... }; class B {... }; class C {... }; class D: public A,

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

11 Vererbung und Klassenhierarchie

11 Vererbung und Klassenhierarchie 11 Vererbung und Klassenhierarchie Bestandteile objektorientierter Programmierung: Bestehende Klassen können durch Spezialisierung und Erweiterung weiterentwickelt werden, ohne den Programmcode der alten

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

Überblick. 5. Objekt und Klasse, Elementfunktionen

Überblick. 5. Objekt und Klasse, Elementfunktionen Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

Programmieren in C++ Überblick

Programmieren in C++ Überblick Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1 Bibliothek AutoGUITest V1.0 Windows-Benutzeroberflächen automatisiert testen Tutorial Ausgabe: 6.6.02 06.06.02 / 13:51 Seite 1 Inhalt 1 Übersicht...3 2 Funktionsweise...3 3 Funktionsumfang...3 4 Einsatz

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente Dr. Beatrice Amrhein Überblick Die Architektur WPF Projekt erstellen Steuerelemente einfügen Eigenschaften von Steuerelementen ändern Nach

Mehr

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Ziel, Inhalt Wir sehen heute weitere Beispiele für Polymorphie und virtuelle Methoden. Wir lernen auch Klassen kennen, von denen man keine Objekte erzeugen

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Klassen in C++ Beispiele, mit Aufzeigen der Trennung von Spezifikation und Implementierung

Mehr

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 3: Kombination OOP/WF

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 3: Kombination OOP/WF C# Programmierung Eine Einführung in das.net Framework C# Programmierung - Tag 3: Kombination OOP/WF 1/27/2012 1 Mi Statisches Modifizierer Eigenschaften Polymorphie Baupläne Konstruktor WinForms Sealed,

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch Einführung in die Programmierung für Nebenfach Medieninformatik Beat Rossmy, Michael Kirsch Direct Feedback - Socrative Eure Mitarbeit ist uns wichtig! Installiert euch dazu die kostenlose App Socrative

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung 1. Begriffe Objektorientierte Programmierung mit C++ Prozedurale Programmierung Sprachen: C, Pascal, Cobol, Basic,... Objektorientierte Programmierung Sprachen: C++, C#, Java... Methode: - Gesamtproblem

Mehr

2. MFC Microsoft Foundation Classes

2. MFC Microsoft Foundation Classes 2. MFC Microsoft Foundation Classes Vorlesung Application Frameworks und Componentware Universität Trier Winter 2002 Frameworks Vorgefertigter Anwendungsrahmen Vorgeplante Lücken ausfüllen Funktionalität

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

Mehr