Types de pointeurs dans les retours de fonction

Please use this forum to ask for a new feature or to change an existing feature.
Merci d'utiliser ce forum pour demander de nouvelles fonctionnalités ou la modification de fonctionnalités existantes.

Types de pointeurs dans les retours de fonction

Postby Teaniel » Thu 1 Nov 2012 13:00

Bonjour,

- Dans la définition des opérations, il y a dans le volet C++ un bouton 'Editer les paramètres', qui permet de gérer les attributs spécifiques du c++ aux arguments des fonctions.
Dans ce dialogue, une ligne est consacrée à chaque argument.
Je pense qu'une bonne idée serait d'y ajouter une ligne concernant le résultat de la fonction (le nom ne serait pas modifiable, du style <result> ou <return value>). Cela permettrait d'éviter de farfouiller dans la ligne de génération pour y ajouter des symboles de pointeur ou autre modification non uml.
Qu'en pensez vous?

Amicalement,
Marc
Teaniel
 
Posts: 75
Joined: Sun 28 Oct 2012 18:57

Re: Types de pointeurs dans les retours de fonction

Postby Bruno Pagès » Thu 1 Nov 2012 14:03

Bonjour,

Le problème c'est la gestion des opérations retournant un pointeur sur une fonction/opération, par exemple :
Code: Select all
class C {
  public:
    int f(float a) { return (int) a; }

    void pf_as_arg(int(C::* & p)(float)) { p = &C::f; }

    int (C::*pf_as_return(const char *))(float) { return &C::f; }
};



dans le cas d'un paramètre tout est local à celui-ci, mais dans le cas du retour la totalité des arguments de l'opération que l'on défini se retrouvent dans la spécification du type de la valeur retournée
ImageAuthor of Bouml
Bruno Pagès
 
Posts: 474
Joined: Mon 20 Feb 2012 08:23
Location: France

Re: Types de pointeurs dans les retours de fonction

Postby Teaniel » Mon 5 Nov 2012 10:06

Bonjour,

Merci de la réponse.

Ce que je souhaitais pouvoir faire était simplement de choisir le type de 'relation de retour' (par valeur, pointeur, référence, rvalue etc...) sans avoir à intervenir dans le champs 'Déclaration' du volet c++. La manière de demander cela vient simplement du fait que dans certains langages, la valeur de retour d'une fonction est considérée comme un argument (de type 'out' en uml). Par conséquent, il pourrait avoir des comportements identiques à ceux des arguments d'entrée.
Par ailleurs, rien n'oblige à utiliser ce bouton, on peut toujours écrire directement dans le champs 'Déclaration', ce qui n'empêchera donc pas l'expression de la classe C.
Ceci dit, j'ai un peu du mal à voir comment exprimer cette classe en UML (modéliser les interactions que représentent les deux dernières fonctions en particulier).

Amicalement,
Marc
Teaniel
 
Posts: 75
Joined: Sun 28 Oct 2012 18:57

Re: Types de pointeurs dans les retours de fonction

Postby Bruno Pagès » Mon 5 Nov 2012 16:21

Bonjour,

j'avais bien compris votre demande, mais je ne peux pas me permettre d'oublier les cas gênants.

Pour être plus clair, si on défini la classe ci dessus, qu'on édite les paramètres en C++ de pf_as_arg on se retrouve avec :
Image

C'est quelque peu tiré par les cheveux mais cela marche.

Si on veut faire la même chose avec la valeur de retour de pf_as_return on va se retrouver avec par exemple :
  • specifier :
  • ${t<i>} : int (C::
  • Pointer : *
  • ${p<i>} : ${name}
  • ${v<i>} :
  • Modifier : ${(}const ${t0}${)})(float)

c'est à dire que le modifier contient l'ensemble des paramètres de l'opération courante que l'on est en train de potentiellement modifier :?

pour éviter cela il faudrait remplacer le groupement nom + paramètres par une marque spéciale, donnant quelque chose comme :
  • specifier :
  • ${t<i>} : int (C::
  • Pointer : *
  • ${p<i>} : $$
  • ${v<i>} :
  • Modifier : )(float)

mais c'est pas terrible ...
ImageAuthor of Bouml
Bruno Pagès
 
Posts: 474
Joined: Mon 20 Feb 2012 08:23
Location: France

Re: Types de pointeurs dans les retours de fonction

Postby Teaniel » Tue 6 Nov 2012 19:11

Bonjour,

ok. je comprends mieux le souci.
Par contre, perso, j'essayerais peut-être de passer par des typedef (quitte à les définir en temps que classe stéréotypée comme le fait la rétro ingéniérie sur les classes template).
Mais bon, ce n'est pas le sujet ;)

Cordialement,
Marc
Teaniel
 
Posts: 75
Joined: Sun 28 Oct 2012 18:57


Return to Change requests / Demandes d'évolution

Who is online

Users browsing this forum: No registered users and 3 guests

cron