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

  FORUM HardWare.fr
  Programmation
  C++

  Héritage public, accès aux données privée de la mère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Héritage public, accès aux données privée de la mère

n°594038
antsite
Je me souviens
Posté le 19-12-2003 à 11:11:44  profilanswer
 

Salut,
Quelle est la manière la plus élégante pour permettre l'accès aux donnés membres privée de la mère à une classe dérivée fille ? Pour l'instant j'utilise le fait que j'ai défini la fille comme amie de la mère, peut être y a-t-il un meilleur moyen ?
 
sinon, le constructeur de la fille est le même que celui de la mère, donc dans le constructeur de la fille je me contente d'un simple appel au constructeur de la mère. c nul ? y a mieux ?
 
merci
   ANT

mood
Publicité
Posté le 19-12-2003 à 11:11:44  profilanswer
 

n°594045
chrisbk
-
Posté le 19-12-2003 à 11:16:06  profilanswer
 

Soit tu passes tes donnees en protected, soit tu laisses en private et tu fais des accesseurs protected

n°594048
antsite
Je me souviens
Posté le 19-12-2003 à 11:17:41  profilanswer
 

chrisbk a écrit :

Soit tu passes tes donnees en protected, soit tu laisses en private et tu fais des accesseurs protected
 


 
ça searit mieux que
friend class fille ?

n°594049
chrisbk
-
Posté le 19-12-2003 à 11:18:02  profilanswer
 

ANTSite a écrit :


 
ça searit mieux que
friend class fille ?


 
Ben, c'est un peu a ca que ca sert, protected

n°594052
antsite
Je me souviens
Posté le 19-12-2003 à 11:19:32  profilanswer
 

ok merci je vais voir donc du côté de protected :-)

n°594255
blackgodde​ss
vive le troll !
Posté le 19-12-2003 à 15:42:05  profilanswer
 

simple petite question :
 
qu'est ce qu'un accesseur ?
 

Code :
  1. class A
  2. {
  3.    int Value;
  4. public:
  5.    int GetValue() { return Value; }
  6.    void SetValue(const int & val) { Value = val; }
  7. };


 
ca ?


---------------
-( BlackGoddess )-
n°594260
MagicBuzz
Posté le 19-12-2003 à 15:46:21  profilanswer
 

oui.
 
perso, j'aime mieu la notion d'attribut qu'on a en C#, mais je sais pas si elle s'implémente de la même façon en C++.
 

Code :
  1. public class test
  2. {
  3.     private int _myVal;
  4.     public test()
  5.     {
  6.         this._myVal = 0;
  7.     }
  8.     public int myVal
  9.     {
  10.         get()
  11.         {
  12.             return this._myVal;
  13.         }
  14.         set()
  15.         {
  16.             this._myVal = ((value == null)?0:value);
  17.         }
  18.     }
  19. }


 
Comme ça, c'est visible comme un attribut, (monObj.myVal = 3;) et tu peux associer du code à l'affectation et à la lecture de la valeur. Ainsi que bloquer la lecture ou écriture en te contenant de ne pas l'indiquer.


Message édité par MagicBuzz le 19-12-2003 à 15:48:11
n°594266
blackgodde​ss
vive le troll !
Posté le 19-12-2003 à 15:52:12  profilanswer
 

oui, je connaissais la notation c#, il me semble pas qu'elle s'applique en c++ (d'ailleurs en c++ managé on ecrit get_myVal et set_myVal je crois), mais j'ignorais qu'on appelait ca un accesseur :)
 
sinon, je vois comme interet de cette méthode une plus grande sécurité d'accès au données possible, existe-t-il d'autres avantages/inconvénients ?


Message édité par blackgoddess le 19-12-2003 à 15:52:28

---------------
-( BlackGoddess )-
n°594279
MagicBuzz
Posté le 19-12-2003 à 16:07:24  profilanswer
 

Bah y'a aussi la validation des données lors de la lecture/écriture.
 
Mettons que tu stockes dans ton objet un mot de pass.
Pour des raisons de performances, le mot de pass doit être stocké dans l'objet en clair, mais pour des raisons de sécurité, il doit être en crypté dans le code du programme principal.
 
A ce moment, tu vas pouvoir mettre dans tes accesseurs l'envryption et la décryption du mot de pass.
 
De la même façon, mettons que tu veuilles respecter un standard de complexité du mot de passe. Par exemple, il faut qu'il fasse plus de 13 caractères, et qu'il contienne au moins 10% de caractères ascii étendus, et à la fois des caractères alpha et numéririques pour le reste. dans ton accesseur "set", tu pourras effectuer la validation, et lever une exception si le mot de pass n'est pas assez complexe.
 
Ou alors, tu as un objet "division".
 
Avec dividante et diviseur comme attributs.
 
Ton accesseur du diviseur devra contrôler que l'ont ne met jamais 0 dedans.
 
En fait, ça garantis la sécurité d'accès aux données, mais aussi l'intégrité.


Message édité par MagicBuzz le 19-12-2003 à 16:08:20
n°594284
blackgodde​ss
vive le troll !
Posté le 19-12-2003 à 16:10:28  profilanswer
 

bien, merci :jap:


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 19-12-2003 à 16:10:28  profilanswer
 

n°594366
Kristoph
Posté le 19-12-2003 à 19:44:17  profilanswer
 

Après avoir bossé sur un gros projet en Delphi, je ne suis pas un gros fan de ces trucs. Mais peut-être que C# fait ça mieux que Delphi aussi :)
 
Par exemple, est-ce qu'une propriété en lecture-ecriture peut-être considérée comme une lvalue ?
 
Si ce n'est pas le cas, l'interet principal de ce mecanisme tombe à l'eau ( pouvoir mettre de la validation sur les accès à un attibut sans avoir à changer le code client ). À ce compte là, autant forcer l'utilisation d'accesseurs dès le debut car au moins le client sait exactement à quoi s'en tenir.

n°594368
chrisbk
-
Posté le 19-12-2003 à 19:45:36  profilanswer
 

Kristoph a écrit :

Par exemple, est-ce qu'une propriété en lecture-ecriture peut-être considérée comme une lvalue ?


 
absolument
(j'ai peur de pas bien comprendre quand meme, ca me parait evident (ceci dit je connais pas delphi donc bon)

n°594371
Kristoph
Posté le 19-12-2003 à 19:48:44  profilanswer
 

chrisbk a écrit :


 
absolument
(j'ai peur de pas bien comprendre quand meme, ca me parait evident (ceci dit je connais pas delphi donc bon)


 
Il y a une difference entre affectable et lvalue en fait. Peut-être que le terme lvalue n'est pas le bon. Peut on passer un attribut en paramètre à une fonction qui attend une reference ? Peut on prendre l'addresse d'un attribut ?

n°594381
chrisbk
-
Posté le 19-12-2003 à 20:02:49  profilanswer
 

Kristoph a écrit :


 
Il y a une difference entre affectable et lvalue en fait. Peut-être que le terme lvalue n'est pas le bon. Peut on passer un attribut en paramètre à une fonction qui attend une reference ? Peut on prendre l'addresse d'un attribut ?


 
c'est la ma foi une excellent question (sauf pour l'histoire d'adresse qui n'a pas de sens en c#), j'essayerais a l'occas
 
edit : a la reflexion, je pense que c'est pas la peine d'essayer, quand tu va donner la proprio a ta fonction ca va faire un get et schluss


Message édité par chrisbk le 19-12-2003 à 20:04:16
n°594399
Taz
bisounours-codeur
Posté le 19-12-2003 à 20:16:21  profilanswer
 

la différence va au delà de la l-value et de l'affectation. en C les tableaux ne sont pas des l-value, ce qui implique l'impossibilité de réaliser une affectation. en C++, outre cette contrainte, on ne peut pas construire un tableau à partir d'un autre (constructeur de recopie)


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

  Héritage public, accès aux données privée de la mère

 

Sujets relatifs
Source du clipboard. De quelle application viennent les données ?[TOMCAT] acces zone d'admin
Héritage de classe et vectorProbleme d'heritage et de surcharge en C#
fonction mail, base de données, variable, petit problème![SGBDR - ASP] Cryptage de données avec ASP?
récupération des données d'une liste en php[SGBD] - redondance de données (réprimé ds tt les cas?)
VB6 : code pour connection base de données ???Connection à une base de données site web
Plus de sujets relatifs à : Héritage public, accès aux données privée de la mère


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