Programmation Orientée Objet (POO)

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Introduction au Langage C,C++
Erratum C Surcharge For(int x=0; … 2.
Programmation Orienté Objet en C++
C++ 6ème cours Patrick Reuter maître de conférences
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Jérôme CUTRONA PHP objet Jérôme CUTRONA 01:08:01 Programmation Web
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Chapitre III Héritage (début)
Développement d’applications web
Programmation orientée objet
Principes de la technologie orientée objets
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Langage Oriente Objet Cours 4.
Chapitre VIII Structures dobjets. Chapitre VIII - Structures d'objets2 Structures d objets Il existe plusieurs relations entre les classes. Lhéritage.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
C++ : classes Introduction aux Langages Orientés Objets
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
POO : Objets et classes (Rappels)
Langage Oriente Objet Cours 2.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Structures de données IFT-10541
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction au paradigme orienté-objet (suite)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Types de données abstrait et mécanismes d'encapsulation
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI1502 Principes fondamentaux en conception des logiciels
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Classes et objets Types de données abstraits, programmation orientée objet, classes, objets,
Structures de données IFT-2000 Abder Alikacem Concepts orientés objet Édition Septembre 2009 Département dinformatique et de génie logiciel Département.
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Structures des données
Travaux Pratiques Représentation des connaissances
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Créer des packages.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
Introduction à la programmation objet en C++
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
PHP 7° PARTIE : PROGRAMMATION OBJET
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes Introduction aux Langages Orientés Objets
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Campus-Booster ID : Copyright © SUPINFO. All rights reserved La programmation objet, un fondement de la programmation évènementielle.
Introduction à la Programmation Orientée Objet
Langage de Programmation Orientée Objet : C++
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Transcription de la présentation:

Programmation Orientée Objet (POO) UNIVERSITE de METZ Olivier HABERT Maître de Conférences Laboratoire d'Automatique des Systèmes Coopératifs (LASC) http://www.lasc.univ-metz.fr/article.php3?id_article=67

Programmation Orientée Objet (POO) Qu'est ce qu’un Programme Orientée Objet ? Ensemble d'objets autonomes et responsables qui s'entraident pour résoudre un problème final en s'envoyant des messages.

Programmation Orientée Objet Qu’est ce qu’un objet Objet = Données + Méthodes (Fonctions Membres)

Programmation Orientée Objet Exemple d’un objet

Programmation Orientée Objet Encapsulation des données L’accès aux données des objets est réglementé Données privées  accès uniquement par les fonctions membres Données publiques  accès direct par l’instance de l’objet Conséquences Un objet n’est vu que par ses spécifications Une modification interne est sans effet pour le fonctionnement général du programme Meilleure réutilisation de l’objet Exemple de la résistance Les données R et P ne peuvent être utilisées que par les fonctions membres

Programmation Orientée Objet Polymorphisme (du Grecqueplusieurs formes) Un nom (de fonction, d’opérateur) peut être associé à plusieurs mais différentes utilisations Exemple Si a est un nombre complexe, sqrt(a) appellera si elle existe la fonction adaptée au type de a. Dans un langage non OO, il aurait fallu connaître le nom de deux fonctions distinctes (selon que a soit complexe ou réel) C’est le système qui choisit selon le type de l’argument ou de l’opérande

Programmation Orientée Objet L’Héritage Permet de définir les bases d’un nouvel objet à partir d’un objet existant Le nouvel objet hérite des propriétés de l’ancêtre et peut recevoir de nouvelles fonctionnalités Avantages Meilleures réutilisations des réalisations antérieures parfaitement au point

Programmation Orientée Objet Concept de Classe Type réunissant une description D’une collection de données membres hétérogènes ayant un lien entres elles D’une collection de méthodes (fonctions membres) servant à manipuler les données membres Généralisation du type structure ou record des langages non OO (classe = définition de données + définition de méthodes) Possibilité de fixer la visibilité externe des différents constituants de la classe

Programmation Orientée Objet Instance d’une classe C’est un objet initialisé à partir de la description figée d’une classe Fonctions membres publiques Les constructeurs Les destructeurs Les accesseurs Les modificateurs

Programmation Orientée Objet Les Constructeurs Permettent d’initialiser l’objets lors de sa création copie des arguments vers les données membres initialisation de variables dynamiques à la création de l’objet Sont appelés de manière automatique à la création de l’objet Peuvent être surchargésOn peut en définir plusieurs de même nom mais acceptant des arguments différents Possèdent le même nom que la classe

Programmation Orientée Objet Le Destructeur Il est unique Est appelé automatiquement lors de la destruction de l’objet Sert généralement à éliminer les variables dynamiques de l’objet (créées en général par le constructeur) Il a pour nom le nom de la classe précédé du symbole ~

Programmation Orientée Objet Les Accesseurs Catégorie de fonctions membres qui permettent l’accès et l’utilisation des informations privées contenues dans l’objet Les Modificateurs Permettent de modifier l’état des données internes (publiques ou privées) de l’objet

Programmation Orientée Objet Définition d’une Classe en C++ class nom_classe { private: Déclaration des données privées et des fonctions membres privées public: Déclaration des données publiques et des fonctions membres publiques };

Programmation Orientée Objet Exemple class BouteilleBiere { private: char NomBiere[30]; char couleur[30]; float contenance; float TitreAlcool; int NBBPES; public: BouteilleBiere(char *, char *, float,float,int); BouteilleBiere(char *,float); float GetContenance(); int GetNBBPES(); };

Programmation Orientée Objet Ecriture des fonctions membres en C++ Type de l’argument nom de la classe :: nom de la fonction (arguments) Exemple float BouteilleBiere::GetContenance() { return contenance; } BouteilleBiere::BouteilleBiere(char *name, char *color, float c,float t,int n) strcpy(NomBierre,name); strcpy(couleur,color); contenance = c; TitreAlcool = t; NBBPES = n;

Programmation Orientée Objet Création d’un objet statique en C++ nom de la classe nom de l’objet(arguments); Exemple: BouteilleBiere MaBouteille("1664","blonde",33.0,6.5,20); Création d’un objet dynamique en C++ pointeur vers classe = new nom de la classe(argument) BouteilleBiere* Mabouteille; Mabouteille = new BouteilleBiere("Kro","brune",25.0,5.5,30); delete Mabouteille;

Programmation Orientée Objet Accès aux fonctions membres d’un objet en C++ Si l’objet est représenté par une variable Nom_Variable.Nom fonction; Exemple: Mabouteille.GetContenance(); Si l’objet est représenté par un pointeur Nom_pointeurNom fonction; pMabouteilleGetContenance();

Programmation Orientée Objet Programme complet #include <iostream.h> #include <string.h> class BouteilleBiere { private: char NomBiere[30]; char couleur[30]; float contenance; float TitreAlcool; int NBBPES; public: BouteilleBiere(char *, char *, float,float,int); BouteilleBiere(char *,float); float GetContenance(); int GetNBBPES(); }; float BouteilleBiere::GetContenance() return contenance; } int BouteilleBiere::GetNBBPES() return NBBPES; BouteilleBiere::BouteilleBiere(char *name, char *color, float c,float t,int n) { strcpy(NomBierre,name); strcpy(couleur,color); contenance = c; TitreAlcool = t; NBBPES = n; } BouteilleBiere::BouteilleBiere(char *name,float c) strcpy(couleur,"BLONDE"); contenance = 33.0; TitreAlcool = c; NBBPES = 20; main() BouteilleBiere* Mabouteille; Mabouteille = new BouteilleBiere("Kro","brune",25.0,5.5,30); cout << MabouteilleGetContenance(); delete Mabouteille; 25

Programmation Orientée Objet Programme complet avec destructeur #include <iostream.h> #include <string.h> class BouteilleBiere { private: char NomBiere[30]; char couleur[30]; float contenance; float TitreAlcool; int NBBPES; public: BouteilleBiere(char *, char *, float,float,int); BouteilleBiere(char *,float); float GetContenance(); int GetNBBPES(); ~BouteilleBiere(); }; float BouteilleBiere::GetContenance() return contenance; } int BouteilleBiere::GetNBBPES() return NBBPES; BouteilleBiere::BouteilleBiere(char *name, char *color, float c,float t,int n) { strcpy(NomBierre,name); strcpy(couleur,color); contenance = c; TitreAlcool = t; NBBPES = n; } BouteilleBiere::BouteilleBiere(char *name,float c) strcpy(NomBierre,name); strcpy(couleur,"BLONDE"); contenance = 33.0; TitreAlcool = c; NBBPES = 20; BouteilleBiere::~BouteilleBiere() cout <<"c'est fini !!"<<'\n'; main() BouteilleBiere* Mabouteille; Mabouteille = new BouteilleBiere("Kro","brune",25.0,5.5,30); cout << MabouteilleGetContenance(); delete Mabouteille; 25 c'est fini !!

Programmation Orientée Objet Héritage en C++ Spécifications Classe Dérivée = Spécifications Classe Ancêtre + Nouvelles Spécifications Héritage des données et des fonctions membres sauf: Les constructeurs et destructeurs de l'ancêtre Introduction d'un nouveau statut: protected membre ne pouvant être utilisé que par les fonctions membres de la classe et de celles qui en seront dérivées

Programmation Orientée Objet Syntaxe d'héritage class nom_nouvelle_classe : type héritage nom_ancêtre {…}; Exemple On désire créer une classe BouteilleVin à partir de BouteilleBiere class BouteilleVin : public BouteilleBierre {…}

Programmation Orientée Objet Type d'héritage Règles de dérivation de classe mode de dérivation statut du membre dans la classe ancêtre statut du membre dans la classe dérivée private protected public inaccessible

Programmation Orientée Objet Conséquences des différents type de dérivation Dérivation privée: ( mode par défaut) Les membres deviennent private ou inaccessible Tous les membres seront inaccessibles à la seconde dérivation Dérivation publique: Les membres gardent le même statut sauf les membres private qui deviennent inaccessibles Dérivation protégée: Tous les membres non privés deviennent de type protected, les membres privés deviennent inaccessibles

Programmation Orientée Objet Ajout de données et de fonctions membres class BouteilleVin : public BouteilleBierre { public: BouteilleVin(char *n, char *coul, float c, float t, int n, int a) : BouteilleBiere(n, coul, c, t, n); BouteilleVin(char * nom, float t) : BouteilleBiere(nom,t) ; int GetAnnee(); private: int annee; };

Programmation Orientée Objet Constructeurs et Destructeur dans les opérations d'héritages Quand à la fois la classe de base et la classe dérivée ont des constructeurs et des destructeurs: Constructeurs sont exécutés dans l'ordre de la dérivation Destructeurs dans l'ordre inverse de la dérivation C'est au constructeur de l'objet dérivé en dernier de passer les arguments dont a besoin son ancêtre. (voir exemple précédent)

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { int x; public: void setx(int n) {x=n;} void showx() {cout <<x<<'\n';} }; class derive : public base { int y; void sety(int n) {y=n;} void showy() {cout << y << '\n';} void show_somme() {cout << x+y <<'\n';} main() { derive ob; ob.setx(10); ob.sety(20); ob.showx(); ob.showy(); return(0); } Cherchez l'erreur ?

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { int x; public: void setx(int n) {x=n;} void showx() {cout <<x<<'\n';} }; class derive : private base { int y; void sety(int n) {y=n;} void showy() {cout << y << '\n';} main() { derive ob; ob.setx(10); ob.sety(20); ob.showx(); ob.showy(); return(0); } Cherchez l'erreur ?

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { int x; public: void setx(int n) {x=n;} void showx() {cout <<x<<'\n';} }; class derive : private base { int y; void setxy(int n,int m) {setx(n) ; y=m;} void showxy() {showx(); cout << y << '\n';} main() { derive ob; ob.setxy(10,20); ob.showxy(); return(0); } Pourquoi ça marche maintenant ?

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { public: base(){ cout <<"construction de la classe de base \n;} ~base(){ cout <<"destruction de la classe de base \n;} }; class derive : public base{ derive() { cout << "construction de la classe dérivée \n";} ~derive(){cout << "destruction de la classe dérivée \n";} main() { derive o; return(0); } Affichage Ecran construction de la classe de base construction de la classe dérivée destruction de la classe dérivée destruction de la classe de base

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { public: base(){ cout <<"construction de la classe de base \n;} ~base(){ cout <<"destruction de la classe de base \n;} }; class derive : public base{ int j; derive(int n) { j = n; cout << "construction de la classe dérivée \n";} ~derive(){cout << "destruction de la classe dérivée \n";} showj(){ cout <<j <<'\n';} main() { derive o(10); o.showj(); return(0); } Affichage Ecran construction de la classe de base construction de la classe dérivée 10 destruction de la classe dérivée destruction de la classe de base

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { int i; public: base(int n){ i=n; cout <<"construction de la classe de base \n;} ~base(){ cout <<"destruction de la classe de base \n;} void showi(){cout <<i<<'\n';} }; class derive : public base{ int j; derive(int n) :base(n){ j = n; cout << "construction de la classe dérivée \n";} ~derive(){cout << "destruction de la classe dérivée \n";} showj(){ cout <<j <<'\n';} main() { derive o(10); o.showi(); o.showj(); return(0); } Affichage Ecran construction de la classe de base construction de la classe dérivée 10 destruction de la classe dérivée destruction de la classe de base

Programmation Orientée Objet Quelques exemples d'héritages #include <iostream.h> class base { int i; public: base(int n){ i=n; cout <<"construction de la classe de base \n;} ~base(){ cout <<"destruction de la classe de base \n;} void showi(){cout <<i<<'\n';} }; class derive : public base{ int j; derive(int n,int m) :base(m){ j = n; cout << "construction de la classe dérivée \n";} ~derive(){cout << "destruction de la classe dérivée \n";} showj(){ cout <<j <<'\n';} main() { derive o(10,20); o.showi(); o.showj(); return(0); } Affichage Ecran construction de la classe de base construction de la classe dérivée 20 10 destruction de la classe dérivée destruction de la classe de base

Programmation Orientée Objet Surcharge des Fonctions On peut définir des fonctions de même nom mais se différentiant par le nombre et le type d'arguments Exemple: float Val_Absolue(float v) {return fabs(v);} int Val_Absolue(int v){return abs(v);} Le système choisira la fonction à appeler selon les arguments.

Programmation Orientée Objet Surcharge des opérateurs en C++ Même principe que la surcharge des fonctions Le fonctionnement de l'opérateur s'effectue en fonction du nombre et du type des opérandes La surcharge d'un opérateur doit obligatoirement s'associer à une classe

Programmation Orientée Objet Surcharge des opérateurs en C++ Exemple: #include <iostream.h> class point { public: int x,y; point(){x=0;y=0;} point(int i,int j) {x=i;y=j;} point operator+(point p2); }; point point::operator+(point p2) { point temp; temp.x = x + p2.x; temp.y = y + p2.y; return temp; } main() { point p1(10,10),p2(5,3),p3; p3 = p1 + p2; cout << p3.x <<< p3.y <<'\n'; }

Programmation Orientée Objet Passage de paramètres par référence en C++ Idem dans les spécifications au passage par pointeurs mais évite leurs lourdeurs d'écriture Exemple: Passage par pointeur: void permutter ( int *a, int *b) {int temp = *a; *a =*b;*b =temp;} main(){ int a=8;int b=7; permutter(&a,&b);} Passage par référence: void permutter (int &a, int &b) {int temp = a;a = b; b = temp;} main() {int a=8;int b=7;permutter(a,b);}

Programmation Graphique sous Windows Programmation avec les API (Application Programming Interface) Que sont les API Ensemble d'interfaces pour accéder à la fonctionnalité des services de bas niveau (gestion des périphériques, du système, du réseau,…) Implantées sous forme de librairie (DLL)

Prototype de Fonctions Création de la classe de la fenêtre Création de la Fenêtre Prototype de Fonctions et Variables Globales int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgs, int nWinMode) { //create a window class by filling in a WNDCLASSEX structure WNDCLASSEX WinClass; WinClass.cbSize=sizeof(WNDCLASSEX); //size of the structure WinClass.hInstance=hInstance; //instance of the application hMainInst=hInstance; WinClass.lpszClassName=pClassName; //window class name WinClass.lpfnWndProc=WindowFunc; //callback function WinClass.style=CS_HREDRAW | CS_VREDRAW; //load default application icon //WinClass.hIcon=LoadIcon(NULL, IDI_APPLICATION); //load standard (32 x 32) icon WinClass.hIcon=LoadIcon(hInstance, MAKEINTRESOURCE(IDI_BIG)); //load small (16 x 16) icon //if specified then it is used on the taskbar and in the system menu //otherwise 32 x 32 icon is scaled to 16 x 16 by Windows //WinClass.hIconSm=LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SMALL)); WinClass.hIconSm=0; //load cursor WinClass.hCursor=LoadCursor(NULL, IDC_ARROW); //here we can specify a menu handle WinClass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU); WinClass.cbClsExtra=0; WinClass.cbWndExtra=0; WinClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //register window class we just created if(!RegisterClassEx(&WinClass)) return 0; //registration failed HWND hwnd=CreateWindow(pClassName, "Generic Windows 95 application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, HWND_DESKTOP, NULL, hInstance, NULL); if(!hwnd) //window creation failed return 0; hMainWnd=hwnd; //show window ShowWindow(hwnd, nWinMode); //force a repaint UpdateWindow(hwnd); MSG WinMsg; //start message pump while(GetMessage(&WinMsg, NULL, 0, 0)) { TranslateMessage(&WinMsg); DispatchMessage(&WinMsg); } return WinMsg.wParam; //useful defines #define STRICT #define WIN32_LEAN_AND_MEAN #include <windows.h> #include "resource.h" //entry point for a windows program int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int); //main window callback function LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM); // GLOBAL VARIABLES const char* pClassName="TTWin32Generic"; HINSTANCE hMainInst=0; //instance of the application HWND hMainWnd=0; //handle to main window of the application //various variables used with virtual window HDC memdc=0; HBITMAP hbit=0; HBRUSH hbrush=0; HPEN hpen, hOldPen; RECT rClient; int MaxX=0, MaxY=0;

Définition de la Procédure de Fenêtre (Réponse aux différents messages) LRESULT CALLBACK WindowFunc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) { //device context for drawing HDC hdc=0; switch(Msg) case WM_CREATE: //get height and width of the screen MaxX=GetSystemMetrics(SM_CXSCREEN); MaxY=GetSystemMetrics(SM_CYSCREEN); //get device context hdc=GetDC(hwnd); //create compatible device context to memory memdc=CreateCompatibleDC(hdc); hbit=CreateCompatibleBitmap(hdc, MaxX, MaxY); SelectObject(memdc, hbit); hpen=CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); hOldPen=(HPEN)SelectObject(memdc, hpen); //if we did not set window background //while registering window class then //we need following two lines hbrush=(HBRUSH)GetStockObject(WHITE_BRUSH); SelectObject(memdc, hbrush); PatBlt(memdc, 0, 0, MaxX, MaxY, PATCOPY); ReleaseDC(hwnd, hdc); break; }   //this message is sent when a window needs to //be repainted case WM_PAINT: { PAINTSTRUCT paintstruct; //get device context for drawing hdc=BeginPaint(hwnd, &paintstruct); //paint the window BitBlt(hdc, 0, 0, MaxX, MaxY, memdc, 0, 0, SRCCOPY); EndPaint(hwnd, &paintstruct); break; } case WM_LBUTTONDOWN: //if we press left mouse button... //some drawing code... RECT rClient; GetClientRect(hwnd, &rClient); for(int nCnt=0; nCnt < rClient.right; nCnt+=5) MoveToEx(memdc, nCnt, 0, (POINT*)NULL); LineTo(memdc, rClient.right-nCnt, rClient.bottom); //invalidate window to force a WM_PAINT message InvalidateRect(hwnd, (const RECT*)NULL, TRUE); //if menu item selected case WM_COMMAND: { WORD wID=LOWORD(wParam); //id of the menu item switch(wID) case IDM_FOPEN: //File->Open is disabled for now break; case IDM_EXIT: DestroyWindow(hwnd); } case WM_DESTROY: //release used resources SelectObject(memdc, hOldPen); DeleteObject(hpen); DeleteObject(hbit); DeleteDC(memdc); PostQuitMessage(0); default: //all other messages are handled by default return DefWindowProc(hwnd, Msg, wParam, lParam); return 0;

Programmation Graphique sous Windows Exécution du programme

Programmation Graphique sous Windows Programmation avec une bibliothèque d'objets Exemple: ObjectWindows de Borland ou Microsoft Fundation Classes (MFC) Collection d'objets graphiques que l'on peut dériver et améliorer

Programmation Graphique sous Windows Exemple de Programme avec ObjectWindows #include <owl/pch.h> #include <owl/applicat.h> #include <owl/framewin.h> class TDrawApp : public TApplication { public: TDrawApp() : TApplication() {} void InitMainWindow() { SetMainWindow(new TFrameWindow(0, "Ma premiere Fenetre avec ObjectWindows")); } }; int OwlMain(int /*argc*/, char* /*argv*/ []) TDrawApp MaFenetre; MaFenetre().Run(); return 1;

Programmation Graphique sous Windows Exécution du Programme

Programmation Graphique sous Windows Programmation Visuelle Avec Visual Basic, Delphi, C++ Builder Interface de haut qui permet de construire graphiquement l'architecture graphique d'une application Couche logicielle qui gère graphiquement la manipulation des objets

Programmation Graphique sous Windows Création d'une Application avec C++ Builder

Programmation Graphique sous Windows Création d'une Application avec Visual Basic