Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    juin 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations forums :
    Inscription : juin 2006
    Messages : 916
    Points : 372
    Points
    372

    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.

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

    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 :
    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.

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

    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 :
    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
    916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations forums :
    Inscription : juin 2006
    Messages : 916
    Points : 372
    Points
    372

    Par défaut

    Ok, Merci bien pour vos réponses.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    juin 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations forums :
    Inscription : juin 2006
    Messages : 916
    Points : 372
    Points
    372

    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 : 26
    Points
    26

    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
    916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations forums :
    Inscription : juin 2006
    Messages : 916
    Points : 372
    Points
    372

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •