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 :

type abstrait et gestionnaire de données.


Sujet :

Ada

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut type abstrait et gestionnaire de données.
    Bonjour,
    Je suis amateur en programmation, Je me fait vieux, j'ai l'impression de ne plus savoir programmer. En plus j'ai découvert de nouveau mot réservé.. bref.

    Je voudrait faire un petit programme d'information sur des objets divers.
    Je voudrais mémoriser tout les objets dans un unique gestionnaire de donnée.

    Je voudrais en gros construire ma bibliothèque ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with Ada.Finalization;
    package Libmy is
       type My_type is abstract tagged limiited private;
    private
       type My_Type is new Ada.Finaliization.Limiited_Controlled with null record;
       type My_Access is access all My_Type'class;
    end Libmy;
    Et je souhaiteras définir un manager pour tous les objets dérivé du type My_Type;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package Libmy.Manager is
        -- Action dans un gestiionnaire de donnée;
    private
        --- ...
        Manager : -- à définir;
    end Libmy_Manager;
    En suite dériver le type My_Type dans des paquet enfants de Libmy, et pouvoir ajouter ces nouveau type dans mon gestionnaire.

    Eventuellement doc, je pourrais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    package Libmy.Machine.Animal.Human is
     type Human_Type is new Animal_Type with private;
    private
       --- ...
    end Libmy.Machine.Animal.Human;
    Mais en réalité j'ai aucune idée de comment bien organiser la chose.

    Si vous pouviez m'éclairer, s'l vous plaît. Merci.

  2. #2
    Membre chevronné Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Par défaut
    C'est pas très clair tout ça !!!
    Que fait ton gestionnaire ? A quoi correspond ton ajouter dans le gestionnaire ?
    C'est un ensemble de my_Type et dérivés ?
    En tout cas, l'utilisation de paquetages enfant n'est pas forcément obligatoire et seule la relation d'héritage importe. D'ailleurs en n'en faisant pas des paquetages enfant, tu verras directement ce à quoi la relation d'héritage te donne accès.
    Ensuite, les fonctions et procédures qui devront être utilisables par les types dérivés devront utiliser les pointeurs de classe (attribut 'Class).

    Mais il faudrait que tu sois plus clair sur ce que tu veux faire parce que si tu n'arrives pas à l'expliquer, c'est normal que tu n'arrives pas à l'organiser

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Blackknight Voir le message
    C'est pas très clair tout ça !!!
    Que fait ton gestionnaire ? A quoi correspond ton ajouter dans le gestionnaire ?
    C'est un ensemble de my_Type et dérivés ?
    En tout cas, l'utilisation de paquetages enfant n'est pas forcément obligatoire et seule la relation d'héritage importe. D'ailleurs en n'en faisant pas des paquetages enfant, tu verras directement ce à quoi la relation d'héritage te donne accès.
    Ensuite, les fonctions et procédures qui devront être utilisables par les types dérivés devront utiliser les pointeurs de classe (attribut 'Class).

    Mais il faudrait que tu sois plus clair sur ce que tu veux faire parce que si tu n'arrives pas à l'expliquer, c'est normal que tu n'arrives pas à l'organiser
    Bonjour, merci.
    Je vais essayer de pas répondre à coté.
    Mon gestionnaire doit me permettre de manipuler en ensemble de données.
    Comme ajouter, supprimer, afficher, sauvegarder, trier si c'est pas déjà fait.

    Ajouter c'est ajouter un élément, je comprends pas la question en fait.

    Ca devrait être un ensemble de My_Type et dérivé, mais je n'ai actuellement réussi à faire qu'un ensemble d'accès sur des type My_Type à l'échelle de classe.

    Et j'ai aucune idée de l'impact sur le programme.

    En fait j'ai plutôt ceci comme spécification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with Ada.Finalization;
    package Libmy is
       type My_type is abstract tagged limiited private;
       type My_Access is access all My_Type'class;
    private
       type My_Type is new Ada.Finaliization.Limiited_Controlled with null record;
     
    end Libmy
    Ah oui, et pour ajouter en fait, je dois créer l'objet de toute pièce et je dois le mettre dans mon gestionnaire.

  4. #4
    Membre chevronné Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Par défaut
    Bonjour, merci.
    Je vais essayer de pas répondre à coté.
    Mon gestionnaire doit me permettre de manipuler en ensemble de données.
    Comme ajouter, supprimer, afficher, sauvegarder, trier si c'est pas déjà fait.

    Ajouter c'est ajouter un élément, je comprends pas la question en fait.
    Ok, en fait, tu avais bien compris ma question
    Donc si tu précises que ton gestionnaire prend tous les types issus de my_Type, ça devrait fonctionner.
    Par exemple, un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure add(le_gestionnaire : my_Type_List; Object : my_type'Class);
    Pour les créations d'objet, moi, je passerai par un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Create(mes_params : Param_my_type) return my_Type'Class is abstract;
    Bon, après, il faut vérifier que tu peux construire ta liste (i.e. Vector par exemple en Ada2005 ou une implémentation à toi) avec des objets juste my_type'class.

    En tout cas, regardes bien le Wikibook sur la partie objet, tu y trouveras peut-être des infos.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Blackknight Voir le message
    Ok, en fait, tu avais bien compris ma question
    Donc si tu précises que ton gestionnaire prend tous les types issus de my_Type, ça devrait fonctionner.
    Par exemple, un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure add(le_gestionnaire : my_Type_List; Object : my_type'Class);
    Ca ok, c'est possible je suis en train de ré-écrire du code.
    Mais j'a une iintérogation pour le trie, comment fais-je ?
    Citation Envoyé par Blackknight Voir le message
    Pour les créations d'objet, moi, je passerai par un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Create(mes_params : Param_my_type) return my_Type'Class is abstract;
    Bon, après, il faut vérifier que tu peux construire ta liste (i.e. Vector par exemple en Ada2005 ou une implémentation à toi) avec des objets juste my_type'class.

    En tout cas, regardes bien le Wikibook sur la partie objet, tu y trouveras peut-être des infos.
    Je fait une liste doublement chaîné à moi.

    Par contre je vois pas ce à quoi peut ressembler le type Param_My_Type.

    Merci pour tes réponses. déjà.

  6. #6
    Membre chevronné Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Par défaut
    Par contre je vois pas ce à quoi peut ressembler le type Param_My_Type.
    C'était juste un exemple, cela correspondrait juste aux paramètres nécessaires à la construction d'un objet de type my_Type.

    Mais j'a une iintérogation pour le trie, comment fais-je ?
    Je fait une liste doublement chaîné à moi.
    Heu là, il va falloir que tu regardes les algorithmes de tri sur une liste chaînée... Mais j'aurais tendance à te dire que tu devrais utiliser un composant existant déjà plutôt que de ré-inventer la roue. Je suis sûr que tu pourras en trouver un qui fait de l'insertion trié
    ... Comme tu n'es plus étudiant, je te conseille de regarder dans Ada2005... Là précisément en fait

Discussions similaires

  1. Les types abstraits de données (ADT)
    Par Emmanuel Delahaye dans le forum C
    Réponses: 5
    Dernier message: 05/06/2013, 14h59
  2. Classe : type abstrait de donnée
    Par problems99 dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2011, 13h59
  3. Réponses: 26
    Dernier message: 10/01/2008, 22h37
  4. Type abstrait de donnée
    Par mia123 dans le forum Pascal
    Réponses: 1
    Dernier message: 01/06/2007, 14h00

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