IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Astuce objet avec Ada ?


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    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é
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 114
    Points : 139
    Points
    139
    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
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 30
    Points
    30
    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
    Invité
    Invité(e)
    Par défaut
    Ok, Merci bien pour vos réponses.

  5. #5
    Invité
    Invité(e)
    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
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 30
    Points
    30
    Par défaut
    Oui, cela fonctionne autant pour une procédure qu'une fonction.

  7. #7
    Invité
    Invité(e)
    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.

Discussions similaires

  1. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    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