La programmation par Objets

  • Published on
    13-Feb-2016

  • View
    50

  • Download
    0

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 / CoutPOOEntre / 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 entreCration 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*POOOuverture / 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*POOLecture/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*POOLecture/criture dans fichiersTest de fin de fichiernomFlux.eof( )b = fluxE.eof();//b : boolVrai 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*POOExemple 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 classesPOOIntroductionQuelques dfinitionsProblme ?AlgorithmeProgrammeUn 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 = ProgrammesPriorit aux donnes :SGBD + langages de requtePriorit aux traitements :Algorithmes + langages de programmation structursApproche combine :Structures de donnes & fonctions Classes dobjetsIntroductionAperu 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 dexcutionIntroductionAperu 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 gaucheIntroductionLa 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 AXIntroductionLa 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 dsigneLes objetsPour simplifier :Un objet, cestUne structureDes fonctionsDonc dans un objet, on aDes variables (comme dans une structure)Des fonctionsLes 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 + MthodesAutre vocabulaire :Attribut : donne membreMthode : fonction membreLes 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 droiteLa programmation par objetsLapproche par objets est bas sur une nouvelle approcheMessageObjetsLa programmation par objetsLapproche par objets est bas sur une nouvelle approcheRsoudre 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 basLobjet 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 respectivesApports 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*POOEncapsulationIl 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*POOAvantages principauxFacilite la maintenance : modification sans incidenceFacilite la rutilisabilit : dtails dimplmentation sont cachsLencapsulation nest pas obligatoire en C++ mais fortement conseillecest l-dessus que vous serez not ! BTS IRIS 1re annePOO*POOHritagePermet 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*POOClasses et ObjetsAttributs et MthodesConstructeursInitialisationDestructionAttributs et mthodes de classeComposition de classe BTS IRIS 1re annePOO*POODfinitionsUne classe est la gnralisation de la notion de type dfini par lutilisateurClasse : association la fois les donnes et les fonctionsLes objets sont des instances de classesIls possdent les mmes caractristiques que les variables ordinaires BTS IRIS 1re annePOO*POOLa 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 lobjetObjet 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 MthodesClasses 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*POOUtilisationmain(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*POOInteraction 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*POOclass 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*POOAppel entre mthodesDun autre objet (instance) : prfix de lidentifiantSa propre mthode : mot cl thisExemple :void Compte::virement(Compte &c, int montant){c.depot(montant);this->retrait(montant);} BTS IRIS 1re annePOO*POOclass 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*POOMthodesChaque 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*POOAffectation 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*POOConstructeur 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*POOConstructeur Mthode appele automatiquement chaque cration dobjetLe constructeur porte le mme nom que la classeExemple :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");}POOUtilisation 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 dinitialisationLutilisation de constructeur est fortement recommande BTS IRIS 1re annePOO*POOUtilisationLe 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*POOExemple #include#includeusing namespace std; class Hasard{double val[10];public:Hasard(int);void affiche();};Hasard::Hasard(int max){int i;for (i=0; iDestructeurMthode 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*POOExemple #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*POOObjets 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*POOExemple 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*POOUtilisation class MaClasse{int normal;static string global;public :MaClasse(int);};MaClasse::MaClasse(int a){ normal = a;}string MaClasse::global = "MaClasse"; BTS IRIS 1re annePOO*a.normalb.normala.globalb.globalObjet aObjet bPOOExemplePOO*POOArguments par dfautPossibilit dcrire une mthode en indiquant quelle valeur doit prendre largument si rien na t pass en paramtrePermet dcrire une fonction au lieu de deux BTS IRIS 1re annePOO*POOExemple class Compte{int solde;int numero;string proprietaire;static int nbComptes;public :Compte(int, string, int = 0);void depot(int);void retrait(int);void afficheSolde();}; BTS IRIS 1re annePOO*POOObjet argument dune mthodeUne mthode peut avoir en paramtre des arguments de type objetCest un argument comme les autres BTS IRIS 1re annePOO*POOExemple par valeur class Personne{string nom;int portefeuille;public :Personne(string);void retireArgent(Compte);};void Personne::retireArgent(Compte c,int valeur){ portefeuille = portefeuille + c.retrait(valeur);}main(void){Compte c1(120,"Robert");Personne p("Robert");p.retireArgent(c1,100);} BTS IRIS 1re annePOO*POOExemple par rfrence class Personne{string nom;public :Personne(string);void deposerCompte(Compte&,int)};void Personne::deposerCompte (Compte &c, int somme){ c.depot(somme);} main(void){Compte c1(120,"Robert");Personne p("Robert");p.deposerCompte(c1, 100);} BTS IRIS 1re annePOO*POOObjet en retour de fonctionExemple :class Banque{string nom;public :Banque(string);Compte creerCompte();int newNum();};Compte Banque::creerCompte(){coutAutorfrenceLe mot cl this fait rfrence sur lobjet layant appelPermet davoir ladresse en mmoire de lobjetPermet de rsoudre les ambigits BTS IRIS 1re annePOO*POOExempleclass Compte{int solde;int numero;string proprietaire;public :Compte(int, string);void changePropritaire(string);};void Compte::copie(string proprietaire){this->proprietaire = proprietaire;} BTS IRIS 1re annePOO*POOMthode de classeMthode appartenant une classePeut-tre appele en dehors de toute instancePermet de crer lquivalent dune fonction globaleLa fonction ne peut pas accder au pointeur this !Pas dobjet associNa accs quaux variables globales (statiques) de la classe BTS IRIS 1re annePOO*POOExemple BTS IRIS 1re annePOO*POOComposition Une classe peut possder un attribut dune autre classeSi lattribut ne possde pas de constructeur par dfaut, un constructeur doit tre dfini Le constructeur de lattribut est appel avec des arguments du constructeur de la classe BTS IRIS 1re annePOO*POOExemple 1class Compte{int solde;int numero;string proprietaire;public :Compte(string);};Compte::Compte(string s){proprietaire = s;} BTS IRIS 1re annePOO*class Personne{string nom;Compte c;public :Personne(string);};Personne::Personne(string s) : c(s){ nom=s;}void main(){Personne p("Robert");}POOExemple 2class Compte{int solde;int numero;string proprietaire;public :Compte(string);};Compte::Compte(string s){proprietaire = s;} BTS IRIS 1re annePOO*class Personne{string nom;Compte c;public :Personne();};Personne:: Personne(){cout >n; nom=n; c=Compte(n);} main(void){Personne p;}POOExemple 3class Compte{int solde;int numero;string proprietaire;public :Compte(string);};Compte::Compte(string s){proprietaire = s;} BTS IRIS 1re annePOO*class Personne{string nom;Compte c1, c2;public :Personne();};Personne:: Personne(string s) : c1(s), c2(s){nom=s;} main(void){Personne p(" bob ");}POO BTS IRIS 1re annePOO*HritagePOONotion dhritageUn des fondements de la POO la base de la rutilisationLhritage autorise la dfinition dune nouvelle classe dite drive, partir dune classe existante dite de baseLa classe drive hrite des caractristiques de la classe de base auxquelles sont ajoutes ses propres caractristiques BTS IRIS 1re annePOO*POONotion dhritagePlusieurs classes peuvent tre drives dune mme classe de baseUne classe drive peut devenir son tour classe de base dune autre classeLhritage multiple est autoris par le C++, mais reste controvers (et mme dconseill)Dclaration :class classeDerivee : public classeDeBase{}; BTS IRIS 1re annePOO*POODclaration dune classe de baseclass Point{int x;int y;public:void init(int, int);void deplace(int, int);void affiche();}; BTS IRIS 1re annePOO*POODclaration dune classe driveclass PointColore : public Point{string couleur;public:void colore(string c){couleur = c;}}; BTS IRIS 1re annePOO*POOConsquences le mot cl public signifie que les attributs et mthodes publics de la classe de base resteront publics (notion classique de lhritage)Prcis plus tardChaque objet de type PointColore peut alors avoir accs :Aux attributs et mthodes publics de PointColore Aux attributs et mthodes publics de Point BTS IRIS 1re annePOO*POOExemple de programmemain(){PointColore p;p.init(10, 10);p.colore("bleu"); p.affiche();p.deplace(15, 30);p.affiche();} BTS IRIS 1re annePOO*POOUtilisation des attributs et mthodes de la classe de baseUne classe drive na pas accs aux attributs et mthodes privs de la classe de baseEx : impossible de dfinir une mthode dans la classe pointColore qui affiche directement les valeurs des attributs x et yUne classe drive (public) a accs aux attributs et mthodes publiquesEx : ajouter une mthode daffichage la classe pointColore BTS IRIS 1re annePOO*POOExemple class PointColore : public Point{string couleur;public:void colore(string c){couleur = c;}void afficheC();};void pointColore::afficheC(){affiche();cout Redfinition de mthodeUne mthode dune classe de base peut tre redfinie dans une classe driveclass PointColore : public Point{string couleur;public:void colore(string c){couleur = c;}void affiche();};void pointColore::affiche (){Point::affiche();cout Exemple main(){PointColore p;p.init(10, 10);p.colore("bleu"); p.affiche();p.deplace(15, 30);p.affiche();} BTS IRIS 1re annePOO*POORedfinition dattributUn attribut de classe de base peut-tre redfini dans une classe driveExemple :class A{string couleur;};class B : public A{int couleur;}; BTS IRIS 1re annePOO*POOConstructeurs et destructeursLes constructeurs et destructeurs ne sont pas hritsPour crer un objet de type driv :Appel au constructeur de la classe de baseAppel au constructeur de la classe driveLors de la destruction dun objet de type driv :Appel du destructeur de la classe driveAppel du destructeur de la classe de baseAutomatique, pas dappel explicite BTS IRIS 1re annePOO*POOtransmission dinformationSi le constructeur de la classe de base ncessite des arguments, il faut lui transmettre partir du constructeur de la classe driveIl faut alors utiliser une syntaxe prcise :On appelle le constructeur de la classe mre BTS IRIS 1re annePOO*POOExemple classe de base class Point{int x;int y;public:Point(int, int);void deplace(int, int);void affiche();}; BTS IRIS 1re annePOO*POOExemple classe drive class PointColore : public Point{string couleur;public:PointColore(int, int, string);void colore(string c){couleur = c;}void afficheC();};PointColore::PointColore(int a, int o , string c):Point(a, o){couleur = c;} BTS IRIS 1re annePOO*POOContrle des accsHritage public :La classe drive a accs aux attributs et mthodes publics de la classe de baseLes utilisateurs de la classe drive ont accs ses attributs et mthodes publics, ainsi que ceux de sa classe de baseAutorisation daccs peut-tre dfinie :Lors de la conception de la classe de baseLors de la conception de la classe drive BTS IRIS 1re annePOO*POONiveaux daccsPublique (public): accessible de nimporte oPriv (private): accessible uniquement lintrieur de la classe o il est dfiniProtg (protected): Priv pour les utilisateurs de la classePublic pour la classe drive elle mme BTS IRIS 1re annePOO*POOExempleclass A{string s1;protected string s2;};class B : public A{void affiche();};B::affiche(){cout Drivation priveIl est possible dinterdire un utilisateur dune classe drive laccs aux membres publics de sa classe de baseclass classeDerivee : private classeDeBase{} BTS IRIS 1re annePOO*POOExemple class Point{public:Point(int, int);void deplace(int, int);void affiche();};class PointColore : private Point{public:PointColore(int,int,string)void colore(string);};main(){pointColore p (10, 10,"bleu");p.deplace(15, 30);p.affiche();} BTS IRIS 1re annePOO*POODrivation protgePossibilit de drivation intermdiaire entre drivation publique et priveLes membres publics de la classe de base seront considrs comme protgs lors de drivation ultrieures BTS IRIS 1re annePOO*POO BTS IRIS 1re annePOO*Surdfinition doprateursPOOSurdfinition doprateurs Surdfinition de mthode (ou fonction) : attribuer le mme nom des mthodes (ou fonctions) diffrentesLors dun appel le choix de la mthode est fait par le compilateur en fonction du type et du nombre dargumentsLe C++ permet galement de surdfinir des oprateurs existant BTS IRIS 1re annePOO*POOMcanisme Dfinir une mthode de nom operator suivie du symbole de loprateurElle prend en argument les objets sur lesquels lopration a lieu et retourne le rsultat de loprationExemple : dfinir la somme de 2 Points laide de loprateur + BTS IRIS 1re annePOO*POOExemple class Point{int x;int y;public:Point(int a=0, int o=0){x=a;y=o;}Point operator + (Point);}Point Point::operator + (Point a){Point p;p.x = x + a.getX();p.y = y + a.getY();return p;}main(){Point p1(2,2);Point p2(5,3);Point p3;p3 = p1 + p2;p3 = p1 + p2 + p3;} BTS IRIS 1re annePOO*POO BTS IRIS 1re annePOO*PolymorphismePOOConversionSoit la classe B drive de Ales membres de A sont membres de B Les membres publics de A peuvent tre atteints travers un objet Btous les services offerts par un A sont offerts par un B=> l o un A est prvu, on doit pouvoir mettre un Bla conversion (explicite ou implicite) d'un objet de type B vers le type A a le statut de conversion standard BTS IRIS 1re annePOO*POOExempleclass Point {int x, y;public:Point(int, int);...};class Pixel : public Point{ // pixel = point colorstring couleur;public:Pixel(int, int, string);...};Main(){Pixel px(1, 2, "rouge");Point pt = px;} BTS IRIS 1re annePOO*POO**************************************************************************************************

Recommended

View more >