Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
657 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] je debute. classe amie. classe abstraite, heritage.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] je debute. classe amie. classe abstraite, heritage.

n°518627
slvn
Posté le 19-09-2003 à 23:21:26  profilanswer
 

je dois me mettre au c++.
 
je vois pas l interet d avoir des classes amie en plus de l heritage.  
a part que.  
si A a une classe amie B.  et que C herite de A, C n est pas amie de B.  
ca permet de conserver le fonctionnement, mais de masquer les fonctionnalite, cest a dire de masquer la complexite.
 
est ce qeu c est l utilite des classe amie??
ex:

Code :
  1. class Component
  2. 00058 {
  3. 00059     friend AwCompFactory;
  4. 00060     friend Container;
  5. 00061
  6. 00062     protected:
  7. 00063         Component(int id, AwRectangle& r) :
  8. 00064         _id(id),
  9. 00065         _rect(r),
  10. 00066         _parent(0),
  11. 00067         _visible(true)
  12. 00068         {
  13. 00069
  14. 00070         }
  15. 00071         virtual ~Component(){};
  16. 00072
  17. 00073         void setParent(Component* parent){ _parent = parent; };
  18. 00074
  19. 00075     public:
  20. 00083         virtual void addChild(Component *c){};
  21. 00084
  22. 00092         virtual void removeChild(Component *c){};
  23. 00093
  24. 00099         virtual void show() = 0;
  25. 00100
  26. 00106         virtual void hide() = 0;
  27. 00107
  28. 00118         virtual void showFocus( bool focus ) = 0;
  29. 00119
  30. 00120
  31. 00121         //virtual void Move( AwRectangle& r) = 0;
  32. 00122
  33. 00129         virtual void setBackColor( AwColor& color) = 0;
  34. 00130
  35. 00137         virtual void setForeColor( AwColor& color) = 0;
  36. 00138
  37. 00147         virtual void setVisible( bool visible )
  38. 00148         {
  39. 00149             _visible = visible;
  40. 00150             if( _visible != visible )
  41. 00151             {
  42. 00152                 if( visible )
  43. 00153                 {
  44. 00154                     if( _parent )
  45. 00155                         _parent->show();
  46. 00156                     else
  47. 00157                         show();
  48. 00158                 }
  49. 00159                 else
  50. 00160                     if(  _parent )
  51. 00161                         _parent->show();
  52. 00162                     else
  53. 00163                         hide();
  54. 00164
  55. 00165                 _visible = visible;
  56. 00166             }
  57. 00167         }
  58. 00168
  59. 00174         bool isVisible(){ return _visible; };
  60. 00175
  61. 00176     protected:
  62. 00177         int _id;
  63. 00178         AwRectangle _rect;
  64. 00179         AwColor _backColor;
  65. 00180         AwColor _foreColor;
  66. 00181         Component* _parent;
  67. 00182         bool _visible;
  68. 00183
  69. 00184     private:
  70. 00185 };
  71. 00186
  72. 00195 class Container : public Component
  73. 00196 {
  74. 00197     friend AwCompFactory;
  75. 00198
  76. 00199     protected:
  77. 00200         Container(int id, AwRectangle& r)
  78. 00201             : Component(id, r)
  79. 00202         {
  80. 00203         };
  81. 00204         virtual ~Container(){};
  82. 00205     public:
  83. 00212         void addChild(Component *c);
  84. 00213
  85. 00221          void removeChild(Component *c);
  86. 00222
  87. 00228         virtual void show();
  88. 00229
  89. 00235         virtual void hide();
  90. 00236     private:
  91. 00237         Vector<Component *> _ComponentList;
  92. 00238 };
  93. 00239
  94. 00247 class Button : public Component
  95. 00248 {
  96. 00249     friend AwCompFactory;
  97. 00250
  98. 00251     protected:
  99. 00252         Button(int id, AwRectangle& r)
  100. 00253             : Component(id, r)
  101. 00254         {
  102. 00255         };
  103. 00256         virtual ~Button(){};
  104. 00257     public:
  105. 00263         virtual void activate() = 0;
  106. 00264
  107. 00270         virtual void deactivate() = 0;
  108. 00271
  109. 00272     private:
  110. 00273
  111. 00274 };

mood
Publicité
Posté le 19-09-2003 à 23:21:26  profilanswer
 

n°518630
slvn
Posté le 19-09-2003 à 23:24:21  profilanswer
 

j ai oublie une classe dans l exemple:  
 
la classe virtuel, amie :D
 

Code :
  1. 00604 class AwCompFactory
  2. 00605 {
  3. 00606     public:
  4. 00607         AwCompFactory(){};
  5. 00608         virtual ~AwCompFactory(){};
  6. 00609
  7. 00617         virtual Panel*      createPanel( int id, AwRectangle& r ) = 0;
  8. 00618
  9. 00626         virtual ButtonText* createButtonText( int id, AwRectangle& r ) = 0;
  10. 00627
  11. 00635         virtual ButtonPic*  createButtonPic( int id, AwRectangle& r ) = 0;
  12. 00636
  13. 00644         virtual Label*      createLabel( int id, AwRectangle& r ) = 0;
  14. 00645
  15. 00653         virtual TextField*   createTextField( int id, AwRectangle& r ) = 0;
  16. 00654
  17. 00662         virtual ListBox*      createListBox( int id, AwRectangle& r ) = 0;
  18. 00663
  19. 00671         virtual PictureBox* createPictureBox(int id,  AwRectangle& r ) = 0;
  20. 00672
  21. 00680         virtual ProgressBar* createProgressBar(int id,  AwRectangle& r ) = 0;
  22. 00681 };

n°518632
Taz
bisounours-codeur
Posté le 19-09-2003 à 23:25:07  profilanswer
 
n°518651
slvn
Posté le 19-09-2003 à 23:47:29  profilanswer
 

et avoir en amie, une classe constitue de methode virtuel. c est l equivalent d une interface en java on dirait

n°518652
Taz
bisounours-codeur
Posté le 19-09-2003 à 23:49:12  profilanswer
 

ben non. les interfaces en java, c'est l'adaptation de l'éhritage multiple du C++
 
une interface -> une classe abstraite .|

n°518653
red factio​n
Posté le 19-09-2003 à 23:49:32  profilanswer
 

depuis qd on numerote les lignes en c++ ????


Message édité par red faction le 19-09-2003 à 23:50:06
n°518654
red factio​n
Posté le 19-09-2003 à 23:49:39  profilanswer
 

:D


Message édité par red faction le 19-09-2003 à 23:50:24
n°518657
slvn
Posté le 20-09-2003 à 00:07:12  profilanswer
 

Taz a écrit :

ben non. les interfaces en java, c'est l'adaptation de l'éhritage multiple du C++
 
une interface -> une classe abstraite .|


 
bah la c'est bien une classe abstraite :??:
 
AwCompFactory  est une classe, consituee de fonctions virtuelles.
Component a pour amie la classe AwCompFactory.  (donc AwCompFactory est une interface je pense)
 
 
 
par contre,  
button herite de component. donc je sais pas ce qui se passe entre button et AwCompFactory!!


Message édité par slvn le 20-09-2003 à 00:08:21
n°518659
Taz
bisounours-codeur
Posté le 20-09-2003 à 00:10:58  profilanswer
 

tain mais tu mélanges tout. friend n'a rien à voir avec l'éhritage ou les « interfaces ». c'est juste un passe droit qu'on s'ocrtoie entre classes ou avec une fonction non-membre

n°518662
slvn
Posté le 20-09-2003 à 00:21:45  profilanswer
 

oui pardon, y a un bug dnas ce que je raconte sur le interface, je suis d accord que ca rien a voir.
 
en fait dans l exemple, je vois pas l interet qu il peut y avoir a mettre comme amie une classe qui a que des fonctions virtuels :/  
 quelles classes va overloader ces fonctions

mood
Publicité
Posté le 20-09-2003 à 00:21:45  profilanswer
 

n°518666
Taz
bisounours-codeur
Posté le 20-09-2003 à 00:39:01  profilanswer
 

ben je sais pas d'ou il vient ton code ... mais ça n'empeche

n°518669
slvn
Posté le 20-09-2003 à 00:47:39  profilanswer
 

bah, ce code vient de la boite ou je fais mon stage. pour l instant je m arrache les cheveux dessus. ... sachant que y a une 50-aine de classe comme ca.
 
 
plus precisement, les fonctions virtuel de la classe AwCompFactory, sont implemente dans une classe HCompFactory, qui herite de AwCompFactory.  ...bref, peut etre que ca un interet, mais c pas flagrant.
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] je debute. classe amie. classe abstraite, heritage.

 

Sujets relatifs
[ Delphi ] Copier une instance de classeclasse socket std ?
pb de classe qui contient un pointeur vers une autre et inversement...[php]variables statiques dans une classe
(win32) classe dans une dllProbleme d'importation de classe
Intercerpter des messages depuis une sous-classe de TComponent [resolu[Acces:Pages d'acces au donnée] je debute besoin d'aide
[python]classe + liste dans constructeur ??j'aimerais debuté en programmation! Quel language me conseillez-vous
Plus de sujets relatifs à : [C++] je debute. classe amie. classe abstraite, heritage.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR