p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre éclairé

    Homme Profil pro
    Inscrit en
    juin 2006
    Messages
    1 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45

    Informations forums :
    Inscription : juin 2006
    Messages : 1 134
    Points : 399
    Points
    399
    Billets dans le blog
    2

    Par défaut Astuce objet avec Ada ?

    Bonjour,

    Je vois parfois écrit quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre habitué
    Inscrit en
    janvier 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 114
    Points : 137
    Points
    137

    Par défaut

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    function bar(o : object) return value;
    Par contre, la notation pointée n'est apparue qu'avec Ada 2005 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Nouveau Membre du Club
    Inscrit en
    octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 21
    Points : 29
    Points
    29

    Par défaut

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre éclairé

    Homme Profil pro
    Inscrit en
    juin 2006
    Messages
    1 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45

    Informations forums :
    Inscription : juin 2006
    Messages : 1 134
    Points : 399
    Points
    399
    Billets dans le blog
    2

    Par défaut

    Ok, Merci bien pour vos réponses.

  5. #5
    Membre éclairé

    Homme Profil pro
    Inscrit en
    juin 2006
    Messages
    1 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45

    Informations forums :
    Inscription : juin 2006
    Messages : 1 134
    Points : 399
    Points
    399
    Billets dans le blog
    2

    Par défaut

    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 ?

  6. #6
    Nouveau Membre du Club
    Inscrit en
    octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 21
    Points : 29
    Points
    29

    Par défaut

    Oui, cela fonctionne autant pour une procédure qu'une fonction.

  7. #7
    Membre éclairé

    Homme Profil pro
    Inscrit en
    juin 2006
    Messages
    1 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45

    Informations forums :
    Inscription : juin 2006
    Messages : 1 134
    Points : 399
    Points
    399
    Billets dans le blog
    2

    Par défaut

    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Syntaxe
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  2. Réponses: 9
    Dernier message: 22/12/2005, 22h20
  3. Réponses: 3
    Dernier message: 22/12/2005, 00h40
  4. nommer un objet avec une variable
    Par fatcat dans le forum C++
    Réponses: 4
    Dernier message: 11/12/2005, 16h16
  5. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo