La programmation par Objets

  • Published on
    13-Feb-2016

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

La programmation par Objets. Tour dhorizon avec C++. Entre / Sortie Lecture / Ecriture Cin / Cout. Entre / Sorties. E/S par l'intermdiaires de flots (ou flux) Flot dentre : fournit de linformation ( envoie des valeurs) oprateur : >> (lecture sur un flot dentre) - PowerPoint PPT Presentation

Transcript

  • Tour dhorizon avec C++

  • BTS IRIS 1re annePOO

    *Entre / SortieLecture / EcritureCin / Cout

    POO

  • Entre / SortiesE/S par l'intermdiaires de flots (ou flux)

    Flot dentre : fournit de linformation (envoie des valeurs)oprateur : >> (lecture sur un flot dentre)standard : cin (connect par dfaut au clavier)

    Flot de sortie :reoit de l'information (rcupre des valeurs)oprateur :

  • Flux BTS IRIS 1re annePOO

    *coutcinFlux sortie>>

    Flux entre

  • Cration de fluxInclure les fichiers d'en-tte :

    Crer un flux dentre (ouvrir un fichier en lecture) :ifstream nomFlux ("nomFichier");ifstream fluxE("C:\MesDocs\Cpp\test.txt");

    Crer un flux de sortie (ouvrir un fichier en criture) :ofstream nomFlux ("nomFichier");ofstream fluxS("test2.txt");//meme repertoire BTS IRIS 1re annePOO

    *

    POO

  • Ouverture / FermeturePar dfaut, un flux de sortie remplace (supprime) les donnes existantes du fichierIl faut prciser sil sagit dun ajout (ouvrir le fichier en mode ajout):fstream nomFlux ("nomFichier ", ios_base::app);fstream fluxSA("test3.txt", ios_base::app);

    Fermeture d'un flux (fermeture du fichier)nomFlux.close();fluxSA.close(); BTS IRIS 1re annePOO

    *

    POO

  • Lecture/criture dans fichierscriture sur un flux (dans un fichier)nomFlux nom >> age;(espaces et le sauts de ligne sont des sparateurs de lecture) BTS IRIS 1re annePOO

    *

    POO

  • Lecture/criture dans fichiersTest de fin de fichiernomFlux.eof( )b = fluxE.eof();//b : bool

    Vrai si la lecture a dj dclench une erreurAttention :

    Fait une boucle de trop !Il faut donc que la dernire chose de la boucle soit une lecture ! BTS IRIS 1re annePOO

    *

    POO

  • Exemple criture#include#include#includeusing namespace std; main (){ string nomSaisi; int ageSaisi; cout > nomSaisi; cout > ageSaisi; ofstream fluxS("personne1.txt", ios::in|ios::app); fluxS
  • Exemple Lecture#include#include#includeusing namespace std; main ( ){string nom;int tel ;ifstream fluxE("repertoire.txt");fluxE >> nom >> tel;while ( !fluxE.eof() ){cout tel ;}fluxE.close( );} BTS IRIS 1re annePOO

    *

  • BTS IRIS 1re annePOO

    *Les classes

    POO

  • IntroductionQuelques dfinitionsProblme ?AlgorithmeProgramme

    Un algorithme est une description non ambigu dun calcul ou de la rsolution dun problme en un nombre fini dtapes.Un programme est limplantation dun algorithme dans un langage de programmationUn langage de programmation nest donc quun moyen dexpression des traitements que peut raliser une machine pour rsoudre le problme.

  • IntroductionTraitement + Donnes = Programmes

    Priorit aux donnes :SGBD + langages de requtePriorit aux traitements :Algorithmes + langages de programmation structursApproche combine :Structures de donnes & fonctions Classes dobjets

  • IntroductionAperu des langages :

    Il existe un grand nombre de langages de programmation (>2000 !)Ces langages partagent beaucoup de concepts commun :Nombre limit de structures lexicales (vocabulaire)Nombre limit de syntaxe (grammaire)Nombre limit de smantiques (interprtation)Nombre limit de mcanismes de traduction et dexcution

  • IntroductionAperu des langages :Point commun ultime : quivalence des langages avec celui de la machine de Turing universelle (1936)e1011010Bande magntiqueTte de lecture pouvant lire, crire et se dplacer droite et gauche

  • IntroductionLa gense des langagesOrigine (
  • IntroductionLa gense des langagesLe langage assembleurUn peu plus lisibleDifficile car ncessite une trs bonne connaissance de larchitecture de la machine (registres du processeur)

    Langage Bas niveaumov 10(%ebp), %ax; lire premier entier dans le reg. AXAdd 20(%ebp), %ax; lire second entier et ajouter AX

  • IntroductionLa gense des langagesLe langage haut niveauNotation plus lisible et familiresPortabilit (peut tre excuter sur diffrentes machines sans trop de modifications)Dtection plus simple derreursAX = X+Y;

  • IntroductionLa gense des langages :Le langage ObjetsOn mlange les structures avec des fonctionsPermet davoir des blocs autonomes (qui se chargent de tout : sinitialiser, modifier les valeurs de la structure, safficher)

  • Les objetsLes objets sont les lments logiciels fondamentaux associs au paradigme de programmation par objets (sic!)

    Dfinition : un objet reprsente une chose, une entit ou un concept et est caractris par un tat, un comportement et une identit.Ltat dun objet est gal la valeur des donnes qui lui sont associesLe comportement correspond la responsabilit de lobjetLidentit prcise lexistence de lobjet indpendamment de sa valeur et de la faon dont on le dsigne

  • Les objetsPour simplifier :Un objet, cestUne structureDes fonctionsDonc dans un objet, on aDes variables (comme dans une structure)Des fonctions

  • Les objetsUn objet reprsente une chose, une entit ou un concept et est caractris par un tat, un comportement et une identit.

    Objet : association des donnes (attributs) et fonctions (mthodes) agissant sur ces donnesObjet = Attributs + Mthodes

    Autre vocabulaire :Attribut : donne membreMthode : fonction membre

  • Les objetsExemple : Un jeu de Tetris-like reprsente chaque pice par un objetLes donnes associes une pice sont sa dimension (nombre de blocs composants), sa forme (disposition relative des blocs), son orientation, sa position dans le tableau et sa couleur.La responsabilit dune pice inclut la capacit de se dplacer verticalement dune ou plusieurs cases, de pivoter gauche et droite

  • La programmation par objetsLapproche par objets est bas sur une nouvelle approcheMessageObjets

  • La programmation par objetsLapproche par objets est bas sur une nouvelle approche

    Rsoudre un problme en adoptant une dmarche par objets consiste donc crer un certain nombre dobjets correspondant aux lments du problme, et faire communiquer ces objets entre eux.

  • La programmation par objetsExemple (Tetris) : Un objet pice reoit un message demandant un dplacement maximum vers le bas

    Lobjet envoie des messages toutes les pices dj disposes dans le tableau, afin de leur demander dvaluer leur positionLobjet calcule sa position finale en fonction des contraintes imposes par les autres picesLobjet ralise le dplacement en envoyant un message chacun de ses blocs composants avec leurs nouvelles positions respectives

  • Apports de la POOClasse : description dun type dobjetune variable de ce type est appel instanceEncapsulation des donnesComme pour une structure, la variable contient plusieurs informations de plusieurs types diffrentsHritage de classePermet de donner des fonctions ses enfants (permet de ne pas avoir a tout rcrire)

    BTS IRIS 1re annePOO

    *

    POO

  • EncapsulationIl nest pas possible dagir directement sur les attributs dun objetPar dfaut, les attributs sont privs, cest--dire quils ne sont pas accessibles partir du main() !Il faut passer par lintermdiaire de mthodes ddiesEn gnral prcd de set et get.Un objet se caractrise alors uniquement par les spcifications de ses mthodes BTS IRIS 1re annePOO

    *

    POO

  • Avantages principauxFacilite la maintenance : modification sans incidenceFacilite la rutilisabilit : dtails dimplmentation sont cachs

    Lencapsulation nest pas obligatoire en C++ mais fortement conseillecest l-dessus que vous serez not ! BTS IRIS 1re annePOO

    *

    POO

  • HritagePermet de dfinir une nouvelle classe partir dune classe existanteLa nouvelle classe hrite des attributs et mthodes de lancienneAjout de nouveaux attributs et mthodes Peut-tre ritr autant de fois que ncessaire (C hrite de B qui hrite de A)

    Facilite grandement la rutilisation et lextensibilit BTS IRIS 1re annePOO

    *

    POO

  • Classes et ObjetsAttributs et MthodesConstructeursInitialisationDestructionAttributs et mthodes de classeComposition de classe

    BTS IRIS 1re annePOO

    *

    POO

  • DfinitionsUne classe est la gnralisation de la notion de type dfini par lutilisateur

    Classe : association la fois les donnes et les fonctions

    Les objets sont des instances de classesIls possdent les mmes caractristiques que les variables ordinaires BTS IRIS 1re annePOO

    *

    POO

  • La structure dun objetLtat dun objet est dfini par le contenu de ses variablesLe comportement dun objet est dfini par un ensemble doprations, chacune tant reprsente par une mthodeUne demande deffectuer une opration est transmise par un message, ventuellement accompagn de paramtresUn message se traduit par lappel dune mthode de lobjet

  • Objet Un objet se dfinit par :Ses attributs (variables) : caractrisent son tat variant au cours de lexcution du programme Ses mthodes (fonctions) : dterminent son comportement BTS IRIS 1re annePOO

    *Nom de la classeAttributs Mthodes

  • Classes et instancesIl arrive bien souvent que plusieurs objets partagent les mmes caractristiquesExemple : Bien que les pices de Tetris ne sont pas strictement identiques, leur mmoire possde la mme structure, i.e. une variable de dimension, de forme, dorientation, De mme, leur comportement est dfini partir des mmes oprations telles que se dplacer dune case, se dplacer de plusieurs cases, pivoter gauche et pivoter droite.Dfinition : Une classe est un ensemble dobjets possdant des variables et des mthodes identiques.

    La mthode invoque par un objet ds quil reoit un message est dtermine sur la base de la classe de cet objet.

  • Compte.hCompte.cppDfinition en C++ class Compte{int solde;int numero;string proprietaire;

    public :void creation(int, string);void depot(int);void retrait(int);};void Compte::creation(int num, string prop){numero = num;proprietaire = prop;solde = 0;}

    void Compte::depot(int montant){solde = solde + montant;}

    void Compte::retrait(int montant){solde = solde - montant;} BTS IRIS 1re annePOO

    *

    POO

  • Utilisationmain(void){Compte c1;c1.creation(101, "Lelore");c1.depot(1 000 000 000);c1.retrait(200);Compte c2;c2.creation(102, "Eleve");c2.depot(100);c2.retrait(1000);} BTS IRIS 1re annePOO

    *

    POO

  • Interaction Les objets interagissent entre eux par envoi de messages : demande dexcution dune de ses mthodes et ventuellement retour dun rsultatLexcution dun programme se traduit donc par une succession denvois de messages BTS IRIS 1re annePOO

    *

    POO

  • class Guichet{int identifiant;public :void depotAutomatique (Compte&, int);void retraitAutomatique (Compte&, int);};void Guichet::depotAutomatique(Compte &c, int montant){c.depot(montant);}void Guichet::retraitAutomatique(Compte &c, int montant){c.retrait(montant);}main(void){Compte CptDupond, CptDurand;Guichet CredL;CompteDupond.creation(123, "Dupond");CompteDurand.creation(333, "Durand");CredL.depotAutomatique(CptDupond, 200); CredL.retraitAutomatique(CptDurand, 400);}Exemple BTS IRIS 1re annePOO

    *

    POO

  • Appel entre mthodesDun autre objet (instance) : prfix de lidentifiantSa propre mthode : mot cl this

    Exemple :

    void Compte::virement(Compte &c, int montant){c.depot(montant);this->retrait(montant);} BTS IRIS 1re annePOO

    *

    POO

  • class Compte{int solde;int numero;string proprietaire;

    public :void creation(int, string);void depot(int);void retrait(int);void virement(compte&, int);};main(void){Compte c1, c2;c1.creation(123, "Robert");c2.creation(333, "Michel");c2.depot(500);c2.virement(c1,300);} BTS IRIS 1re annePOO

    *

    POO

  • MthodesChaque mthode tant lie sa classe, il est possible que des mthodes ayant la mme signature (mme nom, mme nombre et types de paramtres) soient dfinies dans des classes diffrentesLa surcharge des mthodes est possible dans une classe (mme nom, mais liste de paramtres diffrente) BTS IRIS 1re annePOO

    *

    POO

  • Affectation dobjetIl est possible daffecter un objet la valeur dun autre objet :Compte c1, c2;c1 = c2;

    Recopie lensemble des valeurs des attributsAttention : comportement parfois incohrentUtilisation dun constructeur de copie (voir plus loin) BTS IRIS 1re annePOO

    *

    POO

  • Constructeur et DestructeurEn gnral, il est ncessaire de faire appel une mthode pour initialiser les valeurs des attributs (ex : creation(int, string);) Le constructeur permet de traiter ce problme la dclaration de lobjetLe destructeur est appel lorsque lobjet est supprim BTS IRIS 1re annePOO

    *

    POO

  • Constructeur Mthode appele automatiquement chaque cration dobjetLe constructeur porte le mme nom que la classe

    Exemple :

    class Compte{int solde;int numero;string proprietaire;

    public :Compte(int, string);void depot(int);void retrait(int);}; BTS IRIS 1re annePOO

    *Compte::Compte(int num, string prop){numero = num;proprietaire=prop;solde = 0;}

    main(void){Compte c1(123, "Robert");}

    POO

  • Utilisation partir du moment o une classe possde un constructeur, il nest plus possible de crer un objet sans fournir les arguments requis par son constructeurLa dclaration Compte c1; ne convient plusLutilisateur est oblig de donner des valeurs dinitialisation

    Lutilisation de constructeur est fortement recommande BTS IRIS 1re annePOO

    *

    POO

  • UtilisationLe travail ralis par le constructeur peut-tre plus labor quune simple initialisationAffectation de valeur fabrique au hasardAllocation dynamique de mmoire (encore les pointeurs quon verra plus tard) BTS IRIS 1re annePOO

    *

    POO

  • Exemple #include#includeusing namespace std;

    class Hasard{double val[10];public:Hasard(int);void affiche();};

    Hasard::Hasard(int max){int i;for (i=0; i

  • DestructeurMthode appele automatiquement au moment de la destruction de lobjet (fin de la fonction, boucle o lobjet a t cr)Porte le mme nom que la classe prcd dun tilde (~)Ne dispose daucun argument et ne renvoie pas de valeurUn destructeur devient indispensable lorsque lobjet alloue de la mmoire dynamiquement

    BTS IRIS 1re annePOO

    *

    POO

  • Exemple #includeusing namespace std;

    class Matiere{string nom;string prof;int nbElevesstring *eleves;float *notes;public:Matiere(int, string, string);~Matiere();bool validiteMotDePasse(string);void saisirNote();void modifierNote(string);void afficherNotes();void afficherMoyenne();};Matiere::Matiere(int nb, string n, string p){nbEleves = nb;eleves = new string [nbEleves ];notes = new float [nbEleves ];nom = n;prof = p;}

    Matiere ::~ Matiere(){delete eleves;delete notes;}

    main(void){Matiere info(11, info, lelore);

    } BTS IRIS 1re annePOO

    *

    POO

  • Objets et tableauxComme tous les types, il est possible de dfinir des tableaux dobjetsSi des constructeurs ont t dfinisCest le constructeur sans arguments qui est appelil faut donc quil existe !Il est possible de faire appel un constructeur particulier, mais dans ce cas, il faut le prciser pour tout les lments !

    BTS IRIS 1re annePOO

    *

    POO

  • Exemple class maClasse{string nom;public :maClasse();maClasse(string);void affiche();};maClasse::maClasse(){nom="inconnue";}maClasse::maClasse(string s){nom = s;} BTS IRIS 1re annePOO

    *void maClasse::affiche(){cout

  • class maClasse{string nom;public :maClasse();maClasse(string);void affiche();};maClasse::maClasse(){nom="inconnue";}maClasse::maClasse(string s){nom = s;} BTS IRIS 1re annePOO

    *void maClasse::affiche(){cout

  • Attributs de classe priori, les diffrents objets dune mme classe possdent leurs propres attributsPossibilit de permettre aux objets dune mme classe de partager une donne : attributs de classeUn attribut de classe est un attribut indpendant de toute instance de classe (Sorte de variable globale limite une classe)

    BTS IRIS 1re annePOO

    *

    POO

  • Utilisation class MaClasse{int normal;static string global;public :MaClasse(int);};

    MaClasse::MaClasse(int a){ normal = a;}

    string...

Recommended

View more >