Home
C++ : Leçon 14 Privilèges d`accès, this et amitié
Contents
1. 0 c ajoute 3 amp joute s c m entier contient maintenant 8 Ce type de notation s av re tr s agr able utiliser lorsque la classe concern e supporte l arithm tique usuelle Elle devient encore plus naturelle lorsque les fonctions membre sont d sign es par des symboles etc et utilisent une syntaxe op rateur op randes au lieu d tre d sign es par des noms et d utiliser la syntaxe des appels de fonction cf Le on 15 4 Amiti Le code qui d finit le comportement associ une classe est normalement contenu dans des fonctions membre de la classe en question Du fait qu elles sont membres de la classe ces fonctions acc dent librement aux variables membre prot g es ce qui leur permet d effectuer les traitements n cessaires Diff rentes raisons peuvent toutefois nous contraindre rejeter hors d une classe une fonction qui contribue pourtant la d finition de celle ci Parmi les causes possibles d un tel rejet on peut citer des contraintes syntaxiques certains op rateurs ne peuvent pas tre pris en charge par des fonctions membre comme nous le verrons dans la prochaine Le on et l utilisation d une fonction ayant comme param tre un pointeur sur une fonction cf Le on 21 Lorsqu une telle situation se pr sente une classe peut accorder une fonction qui lui est trang re des privil ges d acc s quivalents ceux d une fonction membre On dit alors que cette foncti
2. Cet artifice repose sur l usage d un param tre cach utilis automatiquement lors de l appel d une fonction membre l aide d un s lecteur Ce param tre est de type pointeur sur une instance et permet de transmettre la fonction membre l adresse de l instance au titre de laquelle l appel est effectu La fonction membre peut ensuite utiliser ce pointeur pour compl ter de fa on invisible les acc s aux variables membre Si ce param tre tait rendu visible la classe CExemple_1 ressemblerait ceci d finition de la classe normalement contenu dans CExemple 1 h class CExemple_1 public int m_entier void fonctionMembre CExemple this E d finition de la fonction membre normalement contenu dans CExemple 1 cpp void CExemple 1 fonctionMembre CExemple this acc s au membre de l instance au titre de laquelle la fonction est invoqu e cam entier 12 acc s au membre d une autre instance CExemple 1 uneAutrelnstance uneAutrelnstance m entier 7 CExemple_1 ptrSurInstance amp uneAutrelnstance ptrSurIinstance gt m entier 6 et on peut imaginer que l appel de la fonctionMembre se pr senterait ainsi CExemple 1 a CExemple 1 fonctionMembre amp a Bien entendu la transmission de ce param tre doit rester invisible et le code pr sent ci dessus ne serait accept par aucun compilateur Le mot this est un mot r serv du langage C et ne saurait donc tre utilis pour
3. qui d pend troitement de la fa on dont l information est repr sent e en m moire En n gligeant cette distinction le langage C renonce 1 Ou plus exactement du compilateur ou de l interpr teur utilis pour mettre en uvre le langage J L P ris 10 06 03 U A LNAK N K C Le on 14 Privil ges d acc s this et amiti 3 9 circonscrire le code dont le fonctionnement correct est remis en cause lorsqu une modification est apport e un type Modifier un programme crit en C ou dans un langage similaire est une entreprise qui a depuis longtemps acquis une r putation d testable notamment parce qu il est tr s difficile de mesurer les cons quences exactes de chaque intervention effectu e sur le code Il s agit l d un probl me qui ne doit pas tre sous estim m me dans le contexte d un programme de petite taille Qu il s agisse d individus ou de soci t s multinationales les auteurs de programmes cherchent le plus souvent aller jusqu aux limites de leurs comp tences et ils ont donc tout int r t utiliser tous les syst mes de s curit disponibles Un amateur d butant n entreprendra sans doute que des projets modestes mais il n en viendra bout qu au prix de multiples remises en cause de sa vision initiale et l encapsulation lui est aussi utile qu un groupe d experts confront un projet de plus grande envergure Gr ce leurs fonctions membre les classes permettent d tabl
4. unelnstance m valeur 6 bien que cette variable soit protected Du bon usage de l amiti L tablissement de relations d amiti est un moyen de contourner la protection mise en place par les privil ges d acc s Abuser de ce genre de relations peut conduire une situation complexe pr sentant exactement les m me propri t s que la situation simple qui aurait t obtenue en laissant tous les membres publics Le bon sens recommande donc de n utiliser l amiti que lorsque des raisons s rieuses obligent d porter hors de la classe des fonctions qui participent r ellement l impl mentation des fonctionnalit s que doit offrir la classe Une fonction ou une classe qui ne fait qu utiliser une classe ne doit jamais tre autoris e entretenir des liens d amiti avec celle ci 5 Bon c est gentil tout a mais a fait quand m me 8 pages Qu est ce que je dois vraiment en retenir 1 Les membres d une classe peuvent tre publics ou prot g s 2 Les membres publics sont accessibles quiconque acc s l instance dont ils font partie 3 Les membres prot g s ne sont accessibles qu aux fonctions membre de la m me classe 4 L ensemble des membre publics d une classe constitue l interface de cette classe 5 L interface d une classe ne doit comporter aucune variable mais seulement des fonctions 6 Lorsqu une fonction membre op re sur les autres membres de l instance au titre de laque
5. C Le on 14 Privil ges d acc s this et amiti Centre Informatique pour les Lettres et les Sciences Humaines I Notion d interface suisse seen bn metre ere breer tante 2 2 Les privil ges d acc s publi t protected ssh ddirtenanannntedinennt tendus 3 Acces aux membres publi esse a rienne entiere dettes ETER 3 Acces aux membre protected sis erinesvendoann aie AATE RETE E E indus 4 Comment d terminer quels membres doivent rester publics 5 3 Comment une fonction membre acc de aux membres de l instance au titre de laquelle elle est invoqu e l pointeur CHIS ear naaa EEEa EERE nes entendent sens 6 Ae ATIE sn de sn EE EA E E EE OEE AE EET O add EOE ARTET 8 Fonctions amies d une classe ss i inaa EE EEEN AEA NEEN 8 Classes AMIES enserre a E OORE A A EE A A EAEE 9 Du bon usage de l Amiti sosisini irion ennaa nEn ans aaa EAEEREN RERE 9 5 Bon c est gentil tout a mais a fait quand m me 8 pages Qu est ce que je dois vraiment ern Tetenir Perses ienei a e E TE a E none N mines te 9 Document du 10 06 03 Retrouvez la version la plus r cente sur http www up univ mrs fr wcpp C Le on 14 Privil ges d acc s this et amiti 2 9 Un des avantages d terminants de l utilisation des classes est li au regroupement que celles ci op rent entre les donn es et les fonctions qui les manipulent Cette notion nous est famili re depuis la Le on 2 mais nous ne no
6. autant moins de probl me qu il s agit l du privil ge dont nous avons syst matiquement b n fici jusqu pr sent Rappelons donc simplement que les membres d clar s comme tant public peuvent tre utilis s librement et que cette libert prend deux formes Les fonctions membre acc dent aux membres de l instance au titre de laquelle elles sont invoqu es en utilisant simplement le nom de ce membre Dans tous les autres cas l acc s au membre suppose l application du s lecteur point une instance de la classe ou du s lecteur fl che un pointeur sur une instance Les diff rents cas possibles sont illustr s dans l exemple suivant d finition de la classe normalement contenu dans CExemple 1 h class CExemple 1 public int m entier void fonctionMembre d finition de la fonction membre normalement contenu dans CExemple 1 cpp void CExemple 1 fonctionMembre acc s au membre de l instance au titre de laquelle la fonction est invoqu e m entier 12 2 Ou simplement corriger J L P ris 10 06 03 NAUA OO 0 amp amp NN H WU N K o NAUA aU AUNAK C Le on 14 Privil ges d acc s this et amiti 4 9 acc s au membre d une autre instance CExemple 1 uneAutrelnstance uneAutrelnstance m entier 7 CExemple 1 ptrSurInstance amp uneAutrelnstance ptrSurIinstance gt m entier 6 On remarque dans cet exemple que lorsqu il s agit d acc d
7. baptiser un param tre ordinaire Par ailleurs l appel d une fonction membre au titre de la classe elle m me et non au titre d une instance sugg r ici exigerait qu il s agisse d une fonction statique notion que nous n aborderons qu la Le on 17 L existence du pointeur this est cependant bien r elle et si sa transmission reste automatique et invisible il est possible et m me parfois indispensable de l utiliser explicitement Un cas classique est celui d une fonction membre qui retourne une r f rence l objet au titre duquel elle est invoqu e Ajoutons par exemple une fonction ajoute notre classe CExemple 1 CExemple 1 amp CExemplel ajoute int val m entier val return this this est un pointeur Il faut donc le d r f rencer pour renvoyer une r f rence Etant donn que la fonction ajoute renvoie une r f rence un CExemple 1 une expression qui l appelle d signe un CExemple 1 qui peut lui m me tre utilis pour appeler une autre ou la m me fonction membre de cette classe Il devient alors possible d crire des choses comme 4 Ce comme si a cependant ses limites Le comportement des variables locales statiques d une fonction membre en particulier r v le clairement qu il n existe qu un exemplaire de la fonction J L P ris 10 06 03 OS LL JO O WU OS OU amp OU NN H C Le on 14 Privil ges d acc s this et amiti 8 9 CExemple 1 c c m entier
8. e avec une instance de la classe leur liste constitue une sorte de mode d emploi de la classe pour les programmeurs qui utilisent celle ci La consultation de cette liste permet de se faire une id e de ce dont la classe est capable et donc de comment on peut s y prendre pour obtenir le r sultat souhait Une modification du fonctionnement interne de la classe op r e par les programmeurs responsables de la conception de celle ci qui ne remet pas en cause le fonctionnement de l interface tel qu il a t d crit aux programmeurs utilisateurs de la classe restera sans cons quence sur le bon fonctionnement du programme L interface peut tre vue comme un contrat liant concepteurs et utilisateurs d une classe Les premiers annoncent certaines caract ristiques et ne s autorisent ensuite que des extensions de nouvelles possibilit s peuvent tre ajout es mais tout ce qui tait possible doit le rester Les utilisateurs de leur c t s engagent ne rien utiliser qui ne fasse partie de l interface de la classe Le langage les aide respecter ce contrat en refusant de compiler toute ligne de code qui ne s y conformerait pas Une fois l id e de ce contrat admise comment d termine t on concr tement quels membres peuvent tre prot g s et quels membres doivent rester publics Ce probl me est facile r soudre pour autant qu on garde pr sent l esprit l objectif poursuivi qui est que l interface doit permettre d utilise
9. e les lignes a fonctionMembre et b fonctionMembre n appellent pas la m me fonction Il devient alors assez facile de comprendre que la ligne m entier 12 qui figure dans les deux fonctions n op re pas sur la m me variable dans les deux cas Vu sous cet angle ce ph nom ne rappelle la situation banale de deux fonctions qui auraient chacune une variable locale que le hasard auraient rendues homonymes personne ne s tonnerait alors du fait que le m me nom de variable permet aux deux fonctions d acc der des variables diff rentes J L P ris 10 06 03 OS OU AUNAK N 10 11 12 13 14 U A UNAK C Le on 14 Privil ges d acc s this et amiti 7 9 Cette explication pr sente l avantage d tre tout fait conforme l esprit dans lequel le syst me des classes et des instances a t con u et doit tre utilis Elle pr sente toutefois un l ger inconv nient elle n est pas du tout conforme la r alit En effet l id e selon laquelle chaque instance pourrait poss der sa propre copie de chaque fonction membre para t totalement irr aliste d s que l on se pr occupe de l efficacit du syst me car la quantit de m moire requise deviendrait rapidement prohibitive Le langage C a donc recours un artifice qui lui permet de fonctionner comme si chaque instance disposait de sa propre copie de chaque fonction membre sans avoir pour autant dupliquer les fonctions en questions
10. er un membre d une autre instance que celle au titre de laquelle elle est invoqu e une fonction membre ne jouit d aucun privil ge particulier il lui faut videmment sp cifier sur quelle instance elle veut op rer et appliquer un s lecteur Elle se trouve donc exactement dans le m me cas qu une fonction non membre de la classe qui comporterait un fragment de code tel que CExemple unelnstance unelnstance fonctionMembre Acc s aux membre protected A la diff rence des membres public L acc s aux membres prot g s d une classe est r serv aux fonctions membre de cette classe En d autres termes pour une fonction membre le fait que les variables membre de la m me classe soient publiques ou prot g es ne change rien la fonction acc de aux membres de l instance au titre de laquelle elle est invoqu e en utilisant leur nom et aux membres des autres instances en appliquant un s lecteur sur le nom de ces instances 4 finition de la classe normalement contenu dans CExemple 2 h class CExemple 2 public void fonctionMembre protected int m entier fr d amp finition de la fonction membre normalement contenu dans CExemple 2 cpp void CExemple 2 fonctionMembre acc s au membre de l instance au titre de laquelle la fonction est invoqu e m entier 12 acc s au membre prot g d une autre instance CExemple uneAutrelnstance uneAutrelnstance m entier 7 CExemple ptrSurInsta
11. ion Avec quelques autres termes tels que h ritage et polymorphisme le mot encapsulation forme le vocabulaire indispensable toute conversation mondaine en mati re de programmation orient e objets Sous une forme rudimentaire cette id e est accept e de tous et incorpor e tr s concr tement dans pratiquement tous les langages de programmation Lorsque nous souhaitons d crire la proc dure permettant de calculer la moyenne d une s rie de valeurs par exemple il est clair que nous voulons pouvoir dire quelque chose comme a faire la somme de toutes les valeurs b diviser le r sultat ainsi obtenu par le nombre de valeurs Il ne serait pas r aliste d exiger que la description de la t che calcul de la moyenne prenne en compte le d tail des op rations n cessaires pour faire la somme de deux valeurs Lorsqu on s en tient aux types de donn es pr d finis la distinction entre ces deux descriptions est faite de fa on si radicale qu on oublie de la remarquer d crire la proc dure de calcul de la moyenne rel ve g n ralement d un programme qu il faut crire alors que la description de la m thode d addition rel ve du langage lui m met Comme les programmeurs ne voient jamais aucun texte source correspondant la proc dure d addition celle ci est parfaitement et d finitivement isol e de l usage qui est fait d elle dans les textes sources crits par les programmeurs en question La technique tablit ici une disti
12. ir une distinction tr s marqu e entre le code qui d finit une classe les fonctions membre principalement et le code qui se contente d utiliser cette classe en l instanciant le plus souvent Cette distinction peut tre renforc e par la mise en place de r gles claires dont le compilateur garantira le respect qui d finissent l usage qui peut tre fait de la classe En C ces r gles d usage d une classe sont essentiellement institu es en limitant l acc s certains des membres L ensemble des membres dont l acc s reste offert aux utilisateurs de la classe constitue l interface de celle ci 2 Les privil ges d acc s public et protected Dans la d finition d une classe les sp cificateurs public et protected permettent d indiquer dans quelles conditions les variables et fonctions membre dont les d clarations suivent peuvent tre utilis es L usage de ces sp cificateurs est tr s libre chacun d entre eux peut appara tre autant de fois que n cessaire et s applique jusqu ce que le sp cificateur contraire en annule l effet Les programmeurs pr f rent cependant le plus souvent regrouper les membres soumis aux m me r gles d acc s ce qui revient diviser la d finition de la classe en une partie public et une partie protected Chacun de ces sp cificateur n appara t alors qu une seule fois Acc s aux membres public La compr hension de l effet du sp cificateur d acc s public pose d
13. ite comme si tous les membres de CExemple_2 taient public void monAmie CExemple_2 unelnstance unelnstance m valeur 5 bien que cette variable soit protected unelnstance fonctionMembre bien que cette fonction soit protected D clarer amie une fonction qui est elle m me membre d une autre classe ne pr sente aucune difficult particuli re il suffit de veiller utiliser le nom complet de cette fonction lors de la d claration d amiti 5 Que cette d claration d amiti figure dans une section public ou protected de la classe ne fait aucune diff rence J L P ris 10 06 03 SI AM U N K U A L NAK 5 w SJ A U A L NAK C Le on 14 Privil ges d acc s this et amiti 9 9 class CExemple_3 protected int m valeur friend void CUneAutreClasse monAmieMembreDUneAutreClasse Classes amies Pour d clarer une classe enti re comme tant amie de la classe en cours de d finition il suffit d ins rer une d claration de la classe amie pr c d e du mot friend class CExemple_4 protected void fonctionMembre J class CExemple_5 protected int m valeur friend class CExemple_4 E Cette relation d amiti tant tablie une fonction membre de CExemple_4 acc de librement aux membres d une instance de CExemple_5 comme s ils taient tous public void CExemple 4 fonctionMembre CExemple 5 unelnstance
14. lle elle a t invoqu e elle acc de ceux ci en d r f ren ant implicitement le pointeur this un param tre cach qui contient l adresse de cette instance 7 Les classes peuvent avoir comme amies des fonctions ou d autres classes 8 Rien n est prot g contre une amie J L P ris 10 06 03
15. nce amp uneAutrelnstance ptrSurinstance gt m entier 6 L acc s aux membres prot g s est normalement interdit aux fonctions ext rieures la classe void demo CExemple uneInstance uneInstance m entier 12 ERREUR Compilation impossible unelnstance fonctionMembre OK la fonction membre est public La seule fa on de modifier le contenu d une variable membre prot g e est donc d utiliser une fonction membre qui effectue la modification De m me la seule fa on de conna tre le contenu d une variable membre prot g e est d invoquer une fonction membre qui renvoie l information Ces limitations sont la cl de vo te du syst me qui permet C de maintenir la distinction entre le code utilisant une classe et le code d finissant celle ci si une variable membre est prot g e seules les fonctions membre de la m me classe peuvent tre concern es par une modification suppression changement de type etc concernant la variable La protection est fondamentalement un dispositif de limitation de la propagation des cons quences des modifications apport es au code J L P ris 10 06 03 C Le on 14 Privil ges d acc s this et amiti 5 9 Comment d terminer quels membres doivent rester publics Etant donn que l usage des membre publics est laiss libre ces membres constituent l interface de la classe Puisque ces membres d terminent ce qu il est possible de fair
16. nction nette entre les utilisateurs d un langage et les concepteurs de ce langage bien qu il s agisse dans l un et l autre cas de programmeurs Lorsqu un langage permet aux utilisateurs de cr er de nouveaux types de donn es cette distinction s estompe cr er de nouveaux types c est tendre le langage ce qui s approche assez vite d une activit de conception d un nouveau langage Toute la question est alors de savoir comment est maintenue la distinction entre utilisation et conception et la r ponse qui semble actuellement remporter le plus de succ s est gr ce l encapsulation permise par les langages orient s objets Parmi les autres r ponses possibles cette question il en est une tr s simple et donc tr s attrayante qui s est malheureusement r v l e le plus souvent inad quate Elle consiste tout bonnement ne rien faire du tout pour maintenir la distinction entre conception et utilisation Un langage tel que C par exemple permet tout fait de cr er de nouveaux types les classes du C ne sont gu re que les struct du C auxquelles ont t ajout es des fonctions membre Cette adjonction n a toutefois rien d anodin car les fonctions membre et divers dispositifs rendus possibles par leur pr sence permettent d tablir une distinction claire entre le code utilisateur d un type de donn e qui ne d pend que de la pr sence de l information et de son exactitude et le code de conception de ce type
17. on est amie friend de la classe Ce lien amical peut galement tre tabli entre deux classes si deux classes sont con ues conjointement il arrive que toutes les fonctions membre de l une aient besoin d acc der aux variables membre de l autre Plut t que d avoir accorder individuellement ce privil ge chacune des fonctions il est alors possible de d clarer globalement l une des classes comme tant amie de l autre Remarquez au passage que la d finition de l amiti esquiss e ci dessus implique qu il ne s agit pas d une relation sym trique lorsqu une classe en d clare une seconde amie elle lui accorde des privil ges d acc s ses membre sans obtenir aucune r ciprocit C est seulement si la seconde classe d clare galement la premi re comme tant amie que les fonctions membre de la premi re classe auront acc s aux membres prot g s de la seconde Fonctions amies d une classe L attribution du privil ge d acc s aux membres prot g s d une classe une fonction ext rieure la classe est r alis e simplement en ajoutant la d finition de la classe une d claration de cette fonction pr c d e du mot friend La classe CExemple 2 est ainsi dot e d une fonction amie qui est la seule pouvoir acc der ses membres class CExemple 2 protected int m valeur void fonctionMembre friend void monAmie E Du point de vue de la fonction monAmie tout se passe ensu
18. ont elle doit tre utilis e ont toutes chances de s av rer incompr hensibles pour un simple utilisateur de la classe Il est par ailleurs probable que les param tres d une telle fonction d pendent troitement des choix faits au niveau des variables membre et il est donc tout fait l gitime que l volution de la classe remette en cause ces param tres Rendre une telle fonction publique ne ferait qu obscurcir l usage de la classe et compromettre l encapsulation en permettant au code utilisateur de d pendre de la nature des variables membre Lors de la mise au point d une classe il faut prendre en compte le fait que le regard que les utilisateurs porteront sur la classe doit tre diff rent du regard du concepteur En particulier Les fonctions de l interface doivent porter des nom voquant la signification de leur action et non la nature de celle ci Dans bien des cas les programmeurs d butants ont tout int r t crire d abord le code utilisateur d une classe et seulement ensuite le code d finissant la classe en question Le simple relev des fonctions dont ils ont eu besoin de supposer la pr sence lors de l criture du code utilisateur d crit l interface de la classe r aliser Toutes les autres fonctions membre qu il s av re ensuite n cessaire d crire pour conf rer la classe les propri t s souhait es pourront vraisemblablement tre prot g es puisque le code utilisateur a pu tre crit sans les in
19. r les fonctionnalit s offertes par la classe tout en masquant le plus possible la mani re dont ces fonctionnalit s sont obtenues Quelques r gles g n rales permettent d orienter dans la bonne direction le d veloppement d une classe La plus importante de ces r gles est sans doute que Toutes les variables membre doivent tre prot g es En effet la fa on dont l information est cod e en m moire ne concerne que les concepteurs de la classe et le code utilisateur ne doit pas tre autoris en d pendre La protection des variables membre permet aux concepteurs de modifier ces variables leur nom leur type leur nombre sans que ces modifications affectent le code utilisateur Pour ce qui est des fonctions membre la situation est bien entendu un peu plus complexe Un certain nombre de ces fonctions doivent sans doute rester publiques faute de quoi la classe risque de devenir inutilisable Il est par exemple assez vident que l interface d une classe destin e tre instanci e directement doit comporter au moins un constructeur D une fa on g n rale les fonctions membre publiques seront celles qui offrent les services qui sont la raison d tre de la classe alors que les fonctions de service ont vocation rester prot g es Une fonction cr e pour viter la duplication de code dans plusieurs fonctions membre est un exemple typique de fonction membre qui doit tre exclue de l interface son r le et la fa on d
20. tre de laquelle elle est appel e et ensuite la variable membre d uneAutreInstance d amp finition de la classe normalement contenu dans CExemple 1 h class CExemple 1 public int m entier void fonctionMembre F5 d amp finition de la fonction membre normalement contenu dans CExemple 1 cpp void CExemple 1 fonctionMembre acc s au membre de l instance au titre de laquelle la fonction est invoqu e nn entier 12 acc s au membre d une autre instance CExemple 1 uneAutrelnstance WneAuEmemSEAncermeenEnesEnN CExemple 1 ptrSurInstance amp uneAutrelnstance ptrSurinstance gt m entier 6 Si l on y r fl chit le premier de ces acc s pr sente une particularit assez curieuse En effet bien que la variable en cause soit d sign e par son nom m entier il est tr s probable que des ex cutions successives de la fonction se traduisent par des acc s diff rentes variables La m me ligne de code op re effectivement sur des variables diff rentes lorsque la fonction est appel e au titre d instances diff rentes CExemple 1 a CExemble 1 b a fonctionMembre MMSMEMES re oit la valeur 12 b fonctionMembre b m entier re oit la valeur 12 Cet aspect essentiel du fonctionnement des classes peut tre conceptualis de deux fa ons diff rentes La premi re fa on consiste imaginer que chaque instance poss de son propre exemplaire de la fonction membre ce qui revient dire qu
21. us sommes pas encore r ellement attard s sur les moyens que C nous propose pour syst matiser cette approche Bien que ces moyens soient simples et faciles utiliser ils ne trouvent leur pleine efficacit que si l usage qui en est fait est en harmonie avec le style de programmation en vue duquel ils ont t con us L objet de cette Le on est donc de pr senter la fois la fa on dont ces outils peuvent tre utilis s c est dire comment crire du code que le compilateur acceptera et la fa on dont ils doivent tre utilis s c est dire comment rendre leur usage r ellement utile 1 Notion d interface Comme nous l avons soulign d s la Le on 1 la fa on correcte d appliquer un traitement l mentaire sur des donn es d pend de fa on tr s troite du syst me de codage utilis pour repr senter ces donn es en m moire La fa on dont ces traitements doivent s encha ner pour produire le r sultat souhait en revanche r pond une logique diff rente li e au probl me que nous cherchons r soudre Un des postulats de base de la programmation orient e objets est qu il est pr f rable d isoler nettement cette description des traitements que nous souhaitons voir ex cuter dans un but particulier de la description plus g n rale de la fa on dont une op ration l mentaire peut tre effectu e sur un certain type de donn es Cette volont d isolement porte le doux nom de principe d encapsulat
22. voquer Comme AUCUNE variable membre ne doit faire partie de l interface un autre 3 Une r gle g n rale est une r gle qui ne doit tre viol e que lorsqu on sait exactement pourquoi gle g gle q q q p J L P ris 10 06 03 U A UNAK a 10 11 12 13 A L N K C Le on 14 Privil ges d acc s this et amiti 6 9 avantage de cette fa on de proc der est qu elle conduit ne prendre des d cisions sur les variables membre qu apr s un inventaire complet des fonctionnalit s qui seront n cessaires Le choix des structures de donn es tableaux listes etc et des modes de gestion allocation dynamique ou non utilis s a alors toutes les chances d tre bien plus judicieux que s il avait t fait a priori 3 Comment une fonction membre acc de aux membres de l instance au titre de laquelle elle est invoqu e le pointeur this Lorsqu une fonction membre est appel e en appliquant un s lecteur une instance ou un pointeur sur une instance cette fonction acc de par d faut aux membres de l instance en question En d autres termes toute ligne de la fonction qui utilise le nom d un membre de la classe sans l associer une instance particuli re acc de en fait l instance pour laquelle la fonction a t appel e La classe CExemple_1 d j pr sent e plus haut illustre clairement ce ph nom ne la fonctionMembre acc de tout d abord la variable membre de l instance au ti
Download Pdf Manuals
Related Search
Related Contents
GE Evolve Outdoor LED Fixtures Area Light EWS1 Réunion du 14 juin 2015 user Manual istruzioni dvr xdva0420 DVR User Manual - Total Security Adaptation d`un algorithme de Bazant au calcul des Samsung SGH-X660 manual de utilizador Command 222 CPRmeter Mode d`emploi ETU-01(U) User Manual Copyright © All rights reserved.
Failed to retrieve file