Bonjour, cela fait quelques semaines que j'étudie le C++ et pour le moment voici ce que j'ai compris des différents moyens qu'offre ce langage pour généraliser et particulariser des 'concepts' :
1) On peut le faire via l'héritage et le polymorphisme, ce qui permet en utilisant des pointeurs et des références de spécialiser des concepts à l’exécution.
2) On peut le faire via des instances de template (pas très sûr du vocabulaire), ce qui permet de particulariser des concepts... "a la compilation".
3) J'imagine, qu'on peut imaginer tout un tas de tricotage des deux briques de bases ci-dessus.
Justement je m'essaye de manière abstraite (je ne code pas) à imaginer comment utiliser un tel tricotage et je dois avouer que je m'y perds, à la fois par méconnaissance du langage et par manque de méthode.
A titre d'exercice, j'essaie de modéliser une classe noeud de graphe et j'en suis arrivé à imaginer quelque chose comme ça (plus facile à exprimer en terme de code mais je n'ai pas testé et ne suis meme pas sur que certaines constructions soient réellement valides, voir commentaires) :
Est ce que cette "organisation" vous semble plausible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 template <typename Vtype> Node { /*class de noeud de base */ Vtype val; //Valeur dans le Noeud class Linktype { Node<Vtype>* pointedNode; public : virtual/*?*/ Node<Vtype>* linkTo(); }; vector<Linktype*> links; public : /* ...Vtype get() const ; .... Constructeurs etc ...... */ }; template<typename Vtype, typename Ftype> class Node : public Node<Vtype> { /* classe de noeud dont les liens peuvent être flaggés * vraiment pas sur de la validité syntaxique */ template<typename Ftype> class Linktype : public Node<Vtype>::Linktype { /* Toujours pas du tout sur de la validité */ Ftype flag; }; /* .... etc ..... */ };
Est ce que vous pouvez me diriger vers des liens méthodiques ?
J'aimerais avoir assez de méthodes pour que la partie codage soit le plus proche d'une formalité possible (toujours modulo ma connaissance du langage...).
Partager