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 :

Avantages de OnSomething / override


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut Avantages de OnSomething / override
    Quels sont les avantages et inconvénients comparés de l'utilisation des méthodes d'objets et de l'utilisation de la surcharge des méthodes.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Je ne comprend pas trés bien ta question, la surcharge des méthodes rentre dans l'enrichissement d'un objet, cela revient à dire que l'objet de base ne te convient pas : tu l'adaptes à ta convenance, s'il te convient tel quel : tu prends ses methodes sans les changer, donc je ne vois pas de comparaisons à faire la dessus.(Si j'ai bien compris)
    Alain

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    A priori je suis d'accord. Cependant, j'ai utilisé récemment les composants TMS Grid, en particulier TAdvStringGrid. Et Y a plein de fonctions qui ne sont pas à proprement parler des événements. En particulier OnFixedCell ou qqch comme ca qui permet de déterminer pour chaque ligne ou colonne si elle est fixe.

    Ca n'a rien d'un événement. Je trouve qu'il serait plus "correct" de prévoir la fonction IsCellFixed virtuelle que l'utilisateur se chargerait de surcharger.

    Pourtant, les développeurs de TMS Software ont choisi la technique OnFixedCell.

    L'un des avantages est bien évidemment de l'avoir dans l'inspecteur d'objet.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Meme remarque que Alain : Je ne comprend pas bien

    La question n'est elle pas plutot celle du polymorphisme de déclaration de methode?

  5. #5
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par ploumploum
    L'un des avantages est bien évidemment de l'avoir dans l'inspecteur d'objet.
    Pour qu'une property apparaise dans l'inspecteur, il suffit qu'elle soit déclarée sous 'published'. Pas besoin que ce soit un event.
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    Bon faut que je réexplique ce que je veut dire.

    Prenons l'exemple du message Click. Lorsque le message click est envoyé à une fenêtre, il est réceptionné par la fenêtre qui dans le cas où la propriété OnClick a été définie lance la fonction correspondante.

    On aurait très bien pu avoir le lancement d'une procédure Click virtuelle ne faisant rien dans la fenêtre de base, procédure que l'utilisateur aurait surchargée.

    Le gros intérêt est que la manière dont cela a été fait permet l'utilisation que l'on connaît à savoir double cliquer dans l'inspecteur et attérir directement au bon endroit.

    La question est cela a-t-il un inconvénient ?

    En particulier quand la fonction n'est pas reliée à un message windows mais un événement d'un composant du style OnFixedCell.

  7. #7
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    La grosse différence est que si tu ne veux pas utiliser le mécanisme d'évènement, tu vas être obligé de dériver la classe à chaque fois que tu veux t'en servir. En effet, la surcharge d'une méthode ne peut se faire que dans une classe fille. Imagine un peu une fenêtre dans laquelle il y aurait 5 ou 6 composants de ce type. Tu serais obligé de créer autant de classes dérivées. En plus, tu ne pourrais pas utiliser l'aspect RAD puisque tu ne peux poser un composant sur une fiche que s'il est enregistré dans la VCL. Très lourd, très, très lourd...
    Or avec le mécanisme d'évènement Delphi, c'est une méthode d'un autre objet (généralement la fenêtre) qui est utilisée. Donc pas besoin de dériver autre chose que TForm. Et comme tu es obligé de dériver TForm pour créer une nouvelle fenêtre, cela ne demande pas de code supplémentaire. En plus, tu peux très bien changer le gestionnaire à la volée, ce qui peut être pratique dans certains cas.
    Pour terminer, il faut résonner en terme de classe et d'instance. La surcharge fonctionne au niveau de la classe alors que les gestionnaires d'évènement fonctionnent au niveau de l'instance.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    Pour terminer, il faut résonner en terme de classe et d'instance. La surcharge fonctionne au niveau de la classe alors que les gestionnaires d'évènement fonctionnent au niveau de l'instance
    C'est exactement ce que je cherchais. Merci.

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

Discussions similaires

  1. Avantages du 2.6 par rapport a 2.4, Apache 2 plutot que 1.3.
    Par Aeternus dans le forum Administration système
    Réponses: 9
    Dernier message: 08/04/2004, 10h49
  2. avantages de MySQL ?
    Par meufeu dans le forum Administration
    Réponses: 4
    Dernier message: 06/04/2004, 13h29
  3. Oracle -> Postgres (avantages/ inconvénients)
    Par milka dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/03/2004, 11h58
  4. Réponses: 4
    Dernier message: 22/05/2003, 11h15
  5. Problème d'override...
    Par NeoMan dans le forum Langage
    Réponses: 6
    Dernier message: 10/03/2003, 14h21

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