Académique Documents
Professionnel Documents
Culture Documents
Message
Objet 3
Objet 2
Fonction
6
Fonction 2
DONNEES
Fonction 5
Fonction 4
Fonction
3
GetRmin
GetRmax
SetValueP
GetValueP
GetValueR
Consquences
Un objet nest vu que par ses spcifications
Une modification interne est sans effet pour le fonctionnement
gnral du programme
Meilleure rutilisation de lobjet
Exemple de la rsistance
Les donnes R et P ne peuvent tre utilises que par les fonctions
membres
Avantages
Meilleures rutilisations des ralisations antrieures
parfaitement au point
Les constructeurs
Les destructeurs
Les accesseurs
Les modificateurs
10
11
12
Les Modificateurs
Permettent de modifier ltat des donnes internes
(publiques ou prives) de lobjet
13
14
15
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;
}
16
17
Mabouteille.GetContenance();
pMabouteilleGetContenance();
18
25
19
int BouteilleBiere::GetNBBPES()
{
return NBBPES;
}
}
25 c'est fini !!
20
21
Exemple
On dsire crer une classe BouteilleVin partir de
BouteilleBiere
class BouteilleVin : public BouteilleBierre {}
22
protected
public
private
protected
public
private
protected
public
private
protected
public
inaccessible
private
private
inaccessible
protected
protected
inaccessible
protected
public
23
Drivation publique:
Les membres gardent le mme statut sauf les membres private qui
deviennent inaccessibles
Drivation protge:
Tous les membres non privs deviennent de type protected,
protected les membres
privs deviennent inaccessibles
24
25
26
main()
class base {
int x;
derive ob;
public:
ob.setx(10);
ob.sety(20);
ob.showx();
};
ob.showy();
return(0);
int y;
public:
void sety(int n) {y=n;}
void showy() {cout << y << '\n';}
void show_somme() {cout << x+y <<'\n';}
};
Cherchez l'erreur ?
27
main()
class base {
int x;
derive ob;
public:
ob.setx(10);
ob.sety(20);
ob.showx();
};
ob.showy();
return(0);
int y;
public:
void sety(int n) {y=n;}
void showy() {cout << y << '\n';}
};
Cherchez l'erreur ?
28
main()
class base {
int x;
derive ob;
public:
ob.setxy(10,20);
ob.showxy();
return(0);
};
Pourquoi a marche
maintenant ?
29
Affichage Ecran
30
main()
{
derive o(10);
o.showj();
return(0);
}
};
class derive : public base{
int j;
public:
derive(int n) { j = n; cout << "construction de la classe drive \n";}
~derive(){cout << "destruction de la classe drive \n";}
showj(){ cout <<j <<'\n';}
};
Affichage Ecran
construction de la classe de base
construction de la classe drive
10
destruction de la classe drive
destruction de la classe de base
31
main()
{
derive o(10);
o.showi();
o.showj();
return(0);
}
Affichage Ecran
int j;
public:
derive(int n) :base(n){
j = n; cout << "construction de la classe drive \n";}
~derive(){cout << "destruction de la classe drive \n";}
showj(){ cout <<j <<'\n';}
32
main()
{
derive o(10,20);
o.showi();
o.showj();
return(0);
}
Affichage Ecran
construction de la classe de base
construction de la classe drive
20
10
destruction de la classe drive
destruction de la classe de base
33
34
35
main()
{
point p1(10,10),p2(5,3),p3;
p3 = p1 + p2;
cout << p3.x <<< p3.y <<'\n';
}
36
37
38
Prototype de Fonctions
et Variables Globales
//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;
Cration de la classe
de la fentre
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_BRUS
H);
//register window class we just created
if(!RegisterClassEx(&WinClass))
return 0; //registration failed
Cration de la
Fentre
HWND hwnd=CreateWindow(pClassName,
"Generic Windows 95
application",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
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;
}
39
40
Excution du programme
41
42
};
int OwlMain(int /*argc*/, char* /*argv*/ [])
{
TDrawApp MaFenetre;
MaFenetre().Run();
return 1;
}
43
44
45
46