Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Ada
Ada Forum d'entraide sur la programmation en langage Ada
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/12/2012, 17h14   #1
jovalise
Membre éclairé
 
Inscription : juin 2006
Messages : 767
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2006
Messages : 767
Points : 328
Points : 328
Par défaut Astuce objet avec Ada ?

Bonjour,

Je vois parfois écrit quelque chose dans le genre :
Code :
1
2
3
4
5
6
7
8
procedure test
   foo : objet
   function bar(o : objet) return val;
   test : val
begin
   test := foo.bar;
end;
Existe- t- il une astuce semblable avec Ada ?
Merci pour vos réponses.
__________________
Mon développement
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 14h15   #2
Lowelace
Membre habitué
 
Inscription : janvier 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 114
Points : 125
Points : 125
Envoyer un message via Yahoo à Lowelace
Bonjour,

Avec Ada 95, a été introduit la notion de type tagged qui permet d'utiliser les mêmes paradigmes objet déjà défini dans d'autres langages :
Code :
1
2
3
4
5
6
7
8
type object is tagged null record; -- classe sans attribut.
type object is tagged record
A: integer;
end record; -- classe avec attributs
type child_objet is new objet with record
B :integer;
end record; -- classe enfant à laquelle on a ajouté B comme attribut.
Les procédures et fonctions définies dans le même scope que la déclaration du type et ayant au moins un paramètre de ce type sont définies comme les primitives (les méthodes) de l'objet :
Code :
function bar(o : object) return value;
Par contre, la notation pointée n'est apparue qu'avec Ada 2005 :
Code :
1
2
3
bar(o=> foo); -- Ada 95 et suivantes
foo.bar;        -- Ada 2005 et suivantes
Voilà pour les basiques. Après appréhender les concepts et les règles inhérents à l'implémentation Ada est un peu difficile voire perturbant même pour les développeurs C++ ou Java, ou autres.

Si tu as des questions, n'hésite pas.
Lowelace est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/12/2012, 16h08   #3
Jaizu
Nouveau Membre du Club
 
Inscription : octobre 2010
Messages : 21
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 21
Points : 26
Points : 26
Bonjour,

Je me permets d'apporter une petite (mais cruciale) correction ici : la méthode (primitive ou de classe) doit avoir un Object (ou Object'Class) en premier argument sinon, ça ne passe pas. La notation préfixée ne fait, en somme, que remplacer le premier argument par l'objet qui sert de préfixe. Un exemple simple pour vous convaincre :

Code Ada :
1
2
3
type Dummy is separate;
function Compare_To(Left : in Dummy; Right : in Object) return Boolean;

Compare_To n'en demeure pas moins une primitive, mais elle n'est pas préfixable.

D'avance désolé pour les anglophobes :
- Méthodes primitives : http://en.wikibooks.org/wiki/Ada_Pro...ive_operations
- Notation préfixée : http://www.adaic.org/resources/add_c...l/Rat-2-3.html
Jaizu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/12/2012, 11h16   #4
jovalise
Membre éclairé
 
Inscription : juin 2006
Messages : 767
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2006
Messages : 767
Points : 328
Points : 328
Ok, Merci bien pour vos réponses.
__________________
Mon développement
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 00h08   #5
jovalise
Membre éclairé
 
Inscription : juin 2006
Messages : 767
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2006
Messages : 767
Points : 328
Points : 328
Bonsoir,

Je suis en cours de premiers essais, je voudrais savoir si en théorie je peux autant faire une procédure qu'une fonction ?
__________________
Mon développement
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 14h42   #6
Jaizu
Nouveau Membre du Club
 
Inscription : octobre 2010
Messages : 21
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 21
Points : 26
Points : 26
Oui, cela fonctionne autant pour une procédure qu'une fonction.
Jaizu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 12h09   #7
jovalise
Membre éclairé
 
Inscription : juin 2006
Messages : 767
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2006
Messages : 767
Points : 328
Points : 328
Ah yes, merci Jaisu, le meilleur, c'est que ça marche même avec le premier paramètre dans le mode in out.
C'est formidable.
__________________
Mon développement
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h30.


 
 
 
 
Partenaires

Hébergement Web