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

Langage Delphi Discussion :

La POO accessibilité


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut La POO accessibilité
    Bonjours, voilà j'ai quelques problèmes avec la poo.
    Pour bien me faire comprendre, j'ai fais un petit code d'exemple tout simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    program objets;
     
    type
      tParent = object
       public 
        nombre : integer; // Un champs
        procedure init;   // Une méthode
      end;
     
      tEnfant = object(Tparent)
       public
         procedure affiche; //Une méthode
      end;
     
    //Implementation
     
    Procedure tParent.init;
    begin
      nombre := 5; //On donne une valeur au champs parent
    end;  
     
    procedure tEnfant.Affiche;
    begin
      write(nombre);
    end;
     
     
    // Instance de classe
    var
      Enfant : tEnfant;
      Parent : tParent
     
    // Main
    begin
      Parent.init;
      Enfant.Affche;
    end.
    Ce programme affiche 0. Alors qu'il 'devrait' afficher 5.
    Merci de vos réponses

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    c'est mignon

    tu as deux objets distincts, tu initialises le premier et affiche le second, pas étonnant de ne pas avoir le résultat que tu voudrais

    ton code est équivalent à ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var
      a : integer;
      b : integer;
    begin
      a := 5;
      writeln(b);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    Et donc, je doit faire quoi, parce que quand je met

    tparent.nombre, j'ai une erreur du type

    méthode identifier exepted

    merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Le problème est que ton objet n'est pas instancié (pas de Create), donc pas d'allocation
    Ce code pourrait te renvoyer 0 comme n'importe quelle autre valeur ! N'as-tu pas une violation d'accès à la sortie ? (Peut-être pas avec un simple entier...)

    Ensuite comme le dit Paul, attention au concept. Ce n'est pas du parent/enfant, mais du ancêtre/héritier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    begin
      Enfant := TEnfant.Create;
     
      try
        Enfant.init;
        Enfant.Affiche;
      finally
        Enfant.Free;
      end;
    end.

  5. #5
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    ça marche

    il c'est juste qu'à la fin c'était bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      enfant.init;
      enfant.affiche;

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Sans instanciation, tu vas au-devant de grands ennuis

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

Discussions similaires

  1. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 15h53
  2. [POO] Accessibilite d'une fonction membre
    Par Tymk dans le forum C++
    Réponses: 11
    Dernier message: 17/10/2008, 14h53
  3. [POO] Soucis d'accessibilité de variable
    Par foolib dans le forum Langage
    Réponses: 6
    Dernier message: 01/08/2008, 08h45
  4. [langage] Pb POO perl
    Par loothoof dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 12h08
  5. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46

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