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

 Delphi Discussion :

la différence entre 'abstract' et ' virtual'


Sujet :

Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut la différence entre 'abstract' et ' virtual'
    Salut !
    je comprend pas la différence entre 'abstract' et ' virtual'
    merci en avence

  2. #2
    Invité1
    Invité(e)
    Par défaut
    bonjour, j'espère que ça va éclairer ta lanterne, j’ai trouvé c’est définitions dans le help de delphi7

    Une méthode est parfois déclarée abstract dans un composant Delphi. Dans la bibliothèque de composants, les méthodes abstraites se produisent habituellement dans les classes dont les noms commencent par “custom”, comme dans TCustomGrid
    . De telles classes sont elles-mêmes abstraites, au sens où elles ne servent qu'à la dérivation de classes descendantes.
    Bien que vous puissiez créer un objet instance d'une classe contenant un membre abstrait, ce n'est pas recommandé. L'appel du membre abstrait entraîne une exception EAbstractError.
    La directive abstract est utilisée pour indiquer des parties de classes qui doivent être surfacées et définies dans des composants descendants ; cela force les écrivains de composants à redéclarer le membre abstrait dans des classes descendantes avant que des instances actuelles de la classe puissent être créées.


    Les méthodes virtuelles emploient un mécanisme de répartition plus compliqué et plus souple que les méthodes statiques. Une méthode virtuelle peut être redéfinie dans des classes descendantes, mais est toujours appelée dans la classe ancêtre. L'adresse d'une méthode virtuelle n'est pas déterminée lors de la compilation ; à la place, l'objet où la méthode est définie donne l'adresse lors de l'exécution.
    Pour qu'une méthode soit virtuelle, ajoutez la directive virtual après la déclaration de la méthode. La directive virtual crée une entrée dans le tableau de méthode virtuelle, de l'objet, ou VMT, qui contient les adresses de toutes les méthodes virtuelles d'un type objet.
    Lorsque vous dérivez une nouvelle classe d'une classe existante, la nouvelle classe a son propre VMT, qui comprend toutes les entrées provenant du VMT de l'ancêtre plus toutes les méthodes virtuelles supplémentaires déclarées dans la nouvelle classe.

    bonne journée

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Salut.
    Est ce que tu peux dire ce que tu ne comprends pas, car l'aide de Dephi est très clair la dessus.
    cf Aide Delphi :
    Methode Virtuelle
    Les méthodes virtuelles, à la différence des méthodes statiques, peuvent être surchargées dans les classes dérivées. Quand une méthode surchargée est appelée, c'est le type réel (à l'exécution) du type de classe ou d'objet utilisé dans l'appel de la méthode, et non pas le type déclaré de la variable, qui détermine l'implémentation activée.
    Donc c'est grandement utile si tu fais de l'héritage de classe.
    Methode Abstraite
    Une méthode abstraite est une méthode virtuelle ou dynamique n'ayant pas d'implémentation dans la classe où elle est déclarée. Son implémentation est déléguée à une classe dérivée. Les méthodes abstraites doivent être déclarées en spécifiant la directive abstract après virtual ou dynamic. Par exemple :

    procedure FaireQuelquechose; virtual; abstract;

    Vous ne pouvez appeler une méthode abstraite que dans une classe ou une instance de classe dans laquelle la méthode a été surchargée.
    On progresse .....

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut
    Moi déja mon probleme c'est que je n'ai pas l'aide Delphi7 en français

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    TU as eu une réponse il n'y pas longtemps concernant l'aide de Delphi ... même si c'est pas pour Delphi 7, l'explication doit permettre de t'éclairer ...
    C'était ce lien.

    Après, si tu veux vraiment de l'aide en français et un IDE gratuit, regarde ici, il y a tout d'expliqué ...

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Medoou Voir le message
    Salut !
    je comprend pas la différence entre 'abstract' et ' virtual'
    merci en avence
    comprends-tu virtual ?, abstract ça veux juste dire que ce n'est pas défini dans la classe courante.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    type
      TForme = class
       function Surface:Single; virtual; abstract;
      end;
     
      TRectangle = class(TForme)
       function Surface: Single; override;
      end;
    ici TForme ne sait pas calculer sa surface vu qu'il ne sait pas ce qu'il est...on pourrait mettre une méthode vide ou une méthode qui raise une exception...mais Abstract le fait pour nous. De plus, lors de la compilation, un warning nous indique si un dérivé de TForme ne surchage pas la fonction Surface alors qu'ils devraient tous les faire.

    Notons également que dans du code Delphi antérieur à la version ? (je sais plus) les interfaces étaient déclarées comme des classes dont toutes les méthodes était abstraites, c'est ensuite que Borland a introduit la notion d'Interface (IUnknown, etc..) dans Delphi...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut
    Merci Beaucoup ero-sennin

Discussions similaires

  1. Différence entre virtual et abstract
    Par _LVEB_ dans le forum C#
    Réponses: 8
    Dernier message: 29/09/2015, 17h21
  2. différence entre Abstract et Interface?
    Par prugne dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 01/05/2009, 16h28
  3. Réponses: 6
    Dernier message: 26/11/2007, 17h06
  4. [Virtual Pascal] Différences entre TP7 et Virtual Pascal
    Par gbuxo dans le forum Autres IDE
    Réponses: 2
    Dernier message: 25/01/2006, 06h22
  5. [C#] Différences entre Virtual et Abstract
    Par kunfuka dans le forum C#
    Réponses: 2
    Dernier message: 11/11/2005, 12h14

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