27
Programmation Un aveniruneformation , Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Embed Size (px)

Citation preview

Page 1: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation

Un avenir une formation,

Initiation Aux Langages C et C++ (3)

Bruno Permanne 2006

Page 2: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

ProgrammationSommaire

Bruno Permanne 2006

Programmation Orientée ObjetProgrammation Orientée Objet sans objetProgrammation Orientée Objet avec objetProgrammation Evènementielle

Page 3: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetIntroduction

Retour sommaireBruno Permanne 2006

• Un objet est une sorte de grande structure

• Il regroupe les données et les traitements relatifs aux différents aspects d'une même fonctionnalité.

Page 4: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple

Retour sommaireBruno Permanne 2006

• Définissons un objet très simple nommé Tirelire

• Cet objet sera défini par:• Le nombre de pièces qu'il peut contenir (donnée de construction)• Le fait qu'on puisse ajouter des pièces• Le fait qu'on doive le casser pour récupérer les pièces

TirelireNbPieces

Taille

AjouterPiecesCasserTirelire

ConstruireTirelire

Page 5: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation classique entête

Retour sommaireBruno Permanne 2006

#include <cstdlib>#include <iostream>

using namespace std;

void NouvelleTirelire(int);void AjouterPieces(int);void CasserTirelire(void);

int Taille, NbPieces;

Page 6: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation classique, fonctions

Retour sommaireBruno Permanne 2006

void NouvelleTirelire(int t){ Taille=t; NbPieces=0; cout<<"Nouvelle tirelire vide"<<endl;} void AjouterPieces(int n){ if (n<Taille) { NbPieces+=n; cout <<n<<" Pieces ajoutees"<<endl; } else cout <<"tirelire pleine!"<<endl;} void CasserTirelire(void){ cout <<"La tirelire contenait: "<<NbPieces<<" Pieces"<<endl; NbPieces=0;}

Page 7: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation classique, fonctions

Retour sommaireBruno Permanne 2006

int main(int argc, char *argv[]){ NouvelleTirelire(50); AjouterPieces(5); AjouterPieces(10); CasserTirelire(); system("PAUSE"); return EXIT_SUCCESS;}

Page 8: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation classique, exécution

Retour sommaireBruno Permanne 2006

Page 9: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation classique, critique

Retour sommaireBruno Permanne 2006

• Cette approche n'est pas encapsulée• Car on peut quand même connaître et/ou modifier la taille et le nombre de pièces sans faire appel aux fonctions que nous avons créées.• Car ces variables sont de portée globale• C'est un problème si le programme est de grande taille.• Il faut absolument cacher les variables internes de la tirelire• D'où l'approche objet

Page 10: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation objet entête, et classe

Retour sommaireBruno Permanne 2006

#include <cstdlib>#include <iostream>

using namespace std;

class Tirelire{ private: int Taille, NbPieces; // données membres public: Tirelire(int); // prototype constructeur void AjouterPieces(int); // prototype méthode ~Tirelire(); // prototype destructeur};

Page 11: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation objet, méthodes

Retour sommaireBruno Permanne 2006

Tirelire::Tirelire(int t) // constructeur{ Taille=t; NbPieces=0; cout<<"Nouvelle tirelire vide"<<endl;} void Tirelire::AjouterPieces(int n) // méthode{ if (n<Taille) { NbPieces+=n; cout <<n<<" Pieces ajoutees"<<endl; } else cout <<"tirelire pleine!"<<endl;} Tirelire::~Tirelire(void) // destructeur{ cout <<"La tirelire contenait: "<<NbPieces<<" Pieces"<<endl; NbPieces=0;}

Page 12: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation objet, instanciation statique

Retour sommaireBruno Permanne 2006

int main(int argc, char *argv[]){ Tirelire MaTirelire(50); // l'objet est créé MaTirelire.AjouterPieces(5); MaTirelire.AjouterPieces(10); MaTirelire.~Tirelire(); //l'objet n'est pas détruit system("PAUSE"); return EXIT_SUCCESS;} // l'objet est détruit

Page 13: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation objet, instanciation dynamique

Retour sommaireBruno Permanne 2006

int main(int argc, char *argv[]){ Tirelire* Matirelire=new Tirelire(50); // l'objet est créé MaTirelire->AjouterPieces(5); MaTirelire->AjouterPieces(10); delete MaTirelire(); // l'objet est détruit system("PAUSE"); return EXIT_SUCCESS;}

Page 14: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation Orientée ObjetExemple, programmation objet, autres concepts

Retour sommaireBruno Permanne 2006

• Surdéfinition (ou surcharge) de méthode• Surdéfinition d'opérateurs• Héritage, classes amies, classes virtuelles pures• Patrons de classes

Page 15: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés

Retour sommaireBruno Permanne 2006

• S'applique à windows, linux, unix, OSx, etc.• Des objets reçoivent des données (exemple objet d'affichage)• Des objets provoquent l'exécution de méthodes (boutons)• A l'intérieur des méthodes, la programmation est séquentielle

Page 16: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• Créons une application affichant le texte "HelloWorld" quand on appuie sur un bouton• On lance d'abord wxDevCPP• On fait FichierNouveauProjet• On choisis WxWidgets Dialog, puis name: HelloWin, puis projet C++• Faire ok, sauvegarder le projet puis create

Page 17: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• On obtient la fenêtre suivante:

Page 18: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• On clique sur Static Text à droite puis dans la fenêtre HelloWin:

Page 19: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• On Peut choisir une taille de caractères plus grande de l'objet StaticText par la propriété (colonne de gauche) FontEditFont:

Page 20: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• Sur le même principe, on ajoute un bouton, dans la propriété Label du bouton,on peut écrire par exemple Exécuter

Page 21: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• Dans l'onglet Events (évènements) du bouton AddNewFunction, la méthode WxButton1Click est crée.

Page 22: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• On la retrouve dans le fichier HelloWinDlg.cpp (onglets du haut) comme une nouvelle méthode de l'objet fenêtre HelloWinDlg

Page 23: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

•La méthode HelloWinDlg ::WxButton1Click sera donc appelée quand le bouton Exécuter sera clické.

•Dans cette méthode, on va écrire le code qui permettra l'affichage du message souhaité "Hello World"

•Le résultat doit ressembler à cela

void HelloWinDlg::WxButton1Click(wxCommandEvent& event){

// insert your code hereWxStaticText1->SetLabel("Hello

World !");}

Page 24: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• Voilà le travail effectué.

Page 25: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• On compile:

Page 26: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation EvènementielleEt objet des systèmes fenêtrés, exemple

Retour sommaireBruno Permanne 2006

• On appuie sur le bouton Exécuter :

Page 27: Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006

Programmation

Un avenir une formation,

Fin de la troisième partie

Bruno Permanne 2006