Advertisement
Guest User

cours

a guest
May 20th, 2019
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. %20/04/2019%
  2. la notaion infixée -> a+b;
  3. la notaion postfixée -> ab+;
  4. la notaion prefixée -> +ab;
  5.  
  6. une expression arethmetique ou logique est formée de operateur et d'operande en pratique en utilise la notaion infxée ou
  7. parfois la notaion prefixée et postfixée ces 3 type de notation sont equivalant a une notaion fonctionelle qui est deduite
  8. des 3 type de notaion en utilisent une structure informatique a dequat qui est l'arbre expression.
  9.  
  10. en C++ le compilateur se charge de transformer une expression ecrite de maniere infixée en une serie d'appele de fonction
  11. mais cette approche demande que l'on fournisse le code des differantes fonctions qui seront appeler par le compilateur pour
  12. evaluer l'expression.
  13.  
  14. Les Regles :
  15. |-> on ne peut surcharger un operateur si il a au-moins de ces un operande "Objet".
  16. |-> on garder la pluralite en d'autre terme "binaire" "unaire" "ternaire".
  17. |-> on peut surcharger JUST LES OPERATEUR existant du C plus "new" et "delete".
  18. |-> on garde la priorite et l'associativite des operateurs meme apres surcharge.
  19.  
  20. Exemple :
  21. class Int
  22. {
  23. private:
  24. int val;
  25. public:
  26. Int(int = 0);
  27. friend const Int operator+ (const Int &, const Int &);
  28. friend const Int operator- (const Int &) const;
  29. };
  30.  
  31. %29/04/2019%
  32. CDU -> Conversion definis par Utilisateur
  33. les Regles CDU
  34. 1 -- Implementer sous forme de methode (Class d'implementation);
  35. |-> 2 cas :
  36. 1 -- la class cible:
  37. |-> on utlise Constructeur pouvant etre appele avec 1 arg de type source;
  38. 2 -- la class source:
  39. |-> dans ce cas on definit une methode pour convertire les obj de la class cible en class source
  40.  
  41.  
  42. 2 -- il ne doit y avoir QU'UNE SEUL CDU par conversion;
  43. 3 -- il ne doit y avoir qu'une seul chaine de conversion possible;
  44. 4 -- a l'aide du mot cle "explicit" on interdit tous conversion implicite
  45.  
  46. REMARQUE :
  47. - Les CDU creent un obj TEMP cible qui est considere par LE C++ Comme etant CONST
  48. et donc toutes fn ou operateur utlisant un passsage par valeur ou passage par ref CONST est valide pour la Conversion
  49. par contre l'utilisation du ref NON-CONST est INTERDITE
  50.  
  51. Derivation et Composition -> Reutilisabilite du code en poo ou "Code re-use" en anglais c'est a dire utliser des classe existante pour creer des nouvelles
  52.  
  53. 1 -- Composition:
  54. |-> Composition faible
  55. |-> Composition Forte (Aggregation)
  56.  
  57. l'objet de class comporte des sous-obj d'autres classes
  58. Exemple :
  59. class point{
  60. float x,y;
  61. public:
  62. point(float =0 ,float =0);
  63. void rotateX (float);
  64. void rotateY (float);
  65. };
  66.  
  67. class circle{
  68. float mr;
  69. point centre;
  70. public:
  71.  
  72. cercle(float r,float x,float y)
  73. :mr(r), centre(x,y)
  74. {}
  75.  
  76. cercle(float r,const point &p)
  77. :mr(r),centre(p)
  78. {}
  79.  
  80. cercle(const cercle &rc)
  81. :mr(rc.mr),centre(rc.centre)
  82. {}
  83.  
  84. ~cercle(){
  85. appele auto des desructeur pour chaque sous obj;
  86. }
  87. };
  88.  
  89. -- le constructeur de l'objet Compose doit rappeler un constructeur pour chaqun des sous obj
  90. -- RECHERCHE LES APPELS DES CONSTRUCTEUR DANS UNE ZONE APPELE LISTE D'INITIALISATION
  91. -- ou cas ou le constructeur manque le compilateur en synthetise un implicitement pour le sous obj qu'on peut apple sans args ! EN GROS IL SE DEBROUILLE !
  92. -- dans le destructeur d'un obj comp le compilateur appel auto les destructeur de chaque ss obj
  93.  
  94. REMARQUE :
  95. pour les obj composer , la liste d'initialisation des constructeurs peut comporter 4 cas de figure:
  96. 1 - appele d'un constructeur normal pour les sous obj a linterieur d un obj composer normal
  97. 2 - appele d'un constructeur de copie a l interieur de normal
  98. 3 - copie copie
  99. 4 - normal copie
  100.  
  101. dans le cas ou on ne fournie pas de constructeur de copie pour obj comp,le compilateur synthetisera un constructeur de copie lui meme
  102. se basent sur lappele d'un constructeur de copie pour chaque sous obj
  103.  
  104. * - l'ordre suivi par le compilateur pour appeller les differant constructeur dans la liste d'initialisation depans
  105. uniquement de l'ordre de definission des differant ss obj dans la class
  106.  
  107. Exemple:
  108.  
  109. class point{
  110. private:
  111. float x,y;
  112. public:
  113. point(float =0, float =0);
  114. void rotate(float);
  115. void translate(float,float);
  116. };
  117.  
  118. class circle{
  119. private:
  120. float r;
  121. point centre;
  122. public:
  123. circle(float rr= 0, float xx=0, float yy=0)
  124. :r(rr),centre(xx,yy)
  125. {}
  126.  
  127. circle(float rr= 0,const point &cc)
  128. :r(rr), centre(cc)
  129. {}
  130.  
  131. void rotate(float);
  132. void translate(float,float);
  133. };
  134.  
  135. Attention :
  136. -> Pour un lecture seule(pas de modif) en privilegie :
  137. - le passage par valeur et le retour par valeur pour les type simple (int,float,double,...etc)
  138. - le passage par referance donnee constante et le retour par referance sur donnee constante pour les Objets
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement