Bon{jour, soir}
L'amitié
Je suis tombé sur un cas en C++ qui m'intrigue. En C++ l'héritage n'hérite pas tout. En C++ si nous sommes amis alors nos enfants le seront pas. Je m'explique :
J'ai une classe M abstraite pure qui sert d'interface à disons A, B et C et j'ai une classe X avec qui A, B et C doivent être amies. Donc intuitivement je dit que X et M sont amies (ou plutôt M est une amie de M) mais lorsque je fais ça je n'est pas accès au champ privé. Je suis donc obligé de faire des amitiés une à une avec A, B et C. Donc ça coince pourquoi ?
La protected-iticé...
Les notions de POO ne devrait-elle pas être universel ? Une définition en UML d'une "chose" devrait être la même quelque soit le langage. Un attribut privé est privé ! Une Interface ne peut pas être instanciable ! Mais qu'en est-il du mot clef protected. En Java le mot clef protected veut dire que les champs sont accessibles par la classe et ces les enfants (mais pour les enfants cela devient private) et surtout accessible par les classes du même package. Je ne suis pas un expert en Java mais voilà ce que j'en est retenu, le Java étant plus récent donc devrait être plus proche des normes UML (mais en UML il me semble que protected veut dire accessible que à la classe et à ces fonctions comme en C++).
Mais en C++ qu'est ce qu'un package ? Un namespace ? Mais il n'existe pas de visibilité package !
Est ce qu'un jour "ils" vont se mettre d'accord sur les définitions de la POO pour qu'on puisse coder comme un seul Homme quelque soit le langage ?
Partager