Mes reponses dans le texte
2012/8/11 Jocelyn Batton <
batton....@gmail.com>:
> Bonjour à tous,
>
> Pas mal d'entre nous doivent être en vacances mais j'essaye quand
> même ;)...
Et non meme pas en vacances
> Plusieurs points :
>
> - la routine standard_clone (qui est dépréciée)
> - l'autocomplétion (avec Ctrl + Espace)
> - comment vérifier l'involution d'une routine (sens mathématique du
> terme)
>
> - Pour le premier point j'ai, tout à fait par hasard écrit
> "standard_clone." suivi d'un "Ctrl + Espace". Cela m'a surpris car
> j'ai obtenu l'aide à la saisie (commençant par "as_attached"). Cela me
> paraît bien étrange car "standard_clone" est le nom d'une routine
> possédant un élément...Cela ne "pose" pas de problème car celle-ci est
> dépréciée et le compilateur ne laisse pas passer mais cela fait perdre
> quelques secondes tout de même et je me dis que ce comportement n'est
> peut-être pas isolé.
je remarque le "." apres "standard_clone" donc le point va lancer la
completion automatique a partir du "type" de standard_clone ...
et donc le compilateur sait que c'est "ANY", il te propose donc la
completion disponible pour la classe ANY
Maintenant ... standard_clone a des arguments donc "standard_clone."
n'est pas une expression qui va compiler
donc on pourrait dire que la completion devrait plutot dire ...
attention il manque les arguments...
maintenant qd on code, je ne sais pas si ce ne serait pas un peu
penible, car defois on veut juste connaitre les features disponible de
"foo" .. et "foo (bar)" n'est pas forcement utile pour ca.
D'autre part si tu fais la completion de "standard_clo" ... cela
completera en "standard_clone" et affichera les arguments a fournir...
Mais la, j'empiete sur la prochaine question
> - Toujours avec l'autocomplétion, j'aimerais savoir pourquoi lorsque
> je fais "Ctrl + Espace", je n'obtiens que les attributs et routines de
> ma classe sans celles héritées de classes ancêtres.
Si tu as FOO qui herite de BAR, tu auras bien les features de FOO et de BAR ...
Ce que tu rapporte ici est le cas particulier d'une classe FOO qui
n'heriterait que de ANY (bref toutes les classes qui n'heritent pas
d'une classe autre que FOO).
Donc ton affirmation est en partie fausse.
> J'ai par exemple
> une classe "POINT" et en faisant "Ctrl + Espace", je n'obtiens que les
> attributs et routines de "POINT" et non de "ANY"...
Ceci est fait pour ne pas trop surcharger la completion avec plein de
routines qui ne sont pas forcement pertinentes, il y a une 30aine de
routines dans ANY
donc c'est penible qd tu veux vraiment voir les routines propres a une
classe et son ascendance .. mais sans pour autant avoir la 30aine de
routines de ANY.
Cela dit, si tu trouves que c'est dommage, tu peux changer ce
comportement dans les "preferences", voir
"editor.eiffel.show_ANY_features"
Dans le meme esprit, dans la "Class tool", tu peux avoir ou non les
routines de ANY, un des dernieres boutons de l'outil "class"
> - Enfin un conseil pour une routine. J'ai créé une classe
> "DEPLACEABLE" représentant les objets du plan (Gaussien) qui
> sont...déplaçables :) A l'intérieur de celle-ci, j'ai une routine
> "symetriser_horizontalement" qui est une involution. Je voudrais avoir
> votre avis sur comment écrire ma postcondition : dois-je cloner
> "Result" puis lui appliquer "symetriser_horizontalement" et tester que
> l'objet obtenu est égal à "Current" ?
La je ne peux pas trop te repondre sans avoir une connaissance plus
complete de ton systeme.
Mais je dirai ... si le clone de ton objet et l'appel de
symetriser_horizontalement ne sont pas couteux en memoire et
acceptable en performance, et qu'il n'y a aucun "side effect", tu peux
faire ca
mais sinon pourquoi ne pas avoir un "est_la_symetrie_horizontale_de
(obj: DEPLACEABLE): BOOLEAN"
apres pour l'implementation, tu dois pouvoir faire ce calcul ou bien
avec ton clone+action+comparaison .. ou alors faire ce calcul en
fonction des proprietes de ton objet
Mais encore une fois, c'est un peu au cas par cas, mais si tes
assertions sont trop couteuses en memoire et en temps d'execution ..
le gros risque c'est de les desactivés lors du developpement ... et
donc a vouloir trop bien faire ... on fini par ne rien avoir.
> Merci d'avance :) !
Pas de quoi en retard
-- Jocelyn Fiat