Hello,
Citation:
Envoyé par
kennyflorian
1 – Cette classe vous semble-t-elle correcte syntaxiquement ?
- Encore une classe C++ écrite à la mode Java ! :-) « class » et « public » doivent être écrits en minuscules.
- Les méthodes sont inline. Rien d'incorrect à cela si tant est que ce soit clair dans l'esprit du programmeur qui a rédigé cette classe, ce qui est loin d'être certain.
Citation:
2 – La notion d’encapsulation au sens C++ est – elle présente dans cette classe ? Justifiez dans les 2 cas (oui ou non) votre réponse. Au cas où il n’y a pas d’encapsulation dans cette classe, proposez la mise en oeuvre de cette notion au sein de cette classe.
Citation:
- L’encapsulation est mal faite. Les attributs ne sont pas déclarés en Private. Pour la mise en œuvre je rajoute un private où je met les attributs dedans.
En l'occurence, si tu déclares les membres en question comme étant privés, tu ne pourras jamais attribuer de valeur à x ou y, ni appeler les méthodes que tu déclares (pas même dans une classe dérivée car il faudrait, en C++, que ces membres soient déclarés protected).
Citation:
3 – Cette classe peut-elle être une classe de base dans le cas de l’héritage ? Justifiez votre réponse. Répondre oui ou non tout simplement ne constituera pas une réponse valide.
Et pourquoi pas ? Il n'y a pas de classe finale en C++
Citation:
3. Cette classe ne peut pas servir pour l’héritage car elle ne contient pas de d’encapsulation protected nécessaire.
En l'occurence, ce n'est pas un problème puisque tous les membres sont publics. Si tous les membres étaient private, dériver cette classe ne servirait pas à grand chose, si ce n'est donner la nature de la classe Contenu à la classe-fille, mais ça ne l'empêcherait pas d'être étendue.
Citation:
4 – Que signifie le polymorphisme au sens C++ ?
J'avoue que les avis divergent, mais il semblerait qu'en C++, la bonne réponse soit « l'utilisation de méthodes virtuelles ». Mais bon, la surcharge en est un exemple également.
Citation:
4. Le polymorphisme sert a utiliser une même classe sur des contenus différents. On ne peut effectivement pas traiter des entiers comme des chaînes de caractères.
On n'utilise pas une « classe » sur un « contenu ». On instancie un objet d'une classe particulière et on passe des données à ses méthodes, ou on en remplit directement ses variables membres.
Citation:
5 – Citez deux cas ou la notion de polymorphisme est utilisée en C++.
Voir au-dessus.
Citation:
6 – Pour que cette classe soit une classe abstraite, que doit-elle contenir ? Cette notion a des incidences sur son utilisation. Citez-en au moins 2.
C'est dans la FAQ. Voir « méthode virtuelle pure ».
Citation:
7 - Modifier cette classe pour qu’elle puisse accepter tous types de données (char, int, float, double, pointeur, …). Imaginez dans cette version de la classe, un cas d’application en définissant tous les membres. Chaque membre correspond à votre vision d’un traitement qu’il peut faire. Créez des objets sur cette classe dans tous les cas de figures (type de données proposé ci-dessus).dans une fonction main() par exemple.
« Créer des objets sur cette classe » ne veut rien dire. Ensuite, « accepter tous les types », c'est très ambigü, également. Le bon sens voudrait que l'on utilise les templates mais je ne pense pas que ce soit ce qui t'est demandé. S'il s'agit de surdéfinir toutes les méthodes pour accepter les différents types, c'est possible aussi mais dans ce cas-là, il faut avoir un ensemble fini de cas de figures à prendre en charge. Les « ... » entre tes parenthèses me posent problème.