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 :

[class] Ajouter class devant une fonction


Sujet :

Langage Delphi

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut [class] Ajouter class devant une fonction
    Salut à tous
    En parcourant les posts je suis tombé sur un truc que je ne comprend pas vraiment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      class Fonction Truc:Machin;
    Class? Qu'est-ce qu'il fait là? A quoi ça sert de le mettre là? Et dans quels cas on peut le mettre là?
    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 56
    Points : 63
    Points
    63
    Par défaut
    c'est ce qu'on appel une fonction de classe. Elle se lance en faisant :

    TMaClasse.Truc();

    en gros c'est comme une fonction, mais on souhaite la rattacher à un objet pour etre plus propre.

    je trouve que c'est mieux de faire :

    TMaClasseString.Length(aChaine : string) : Integer;

    qu'une fonction GetMaClassStringLength(aChaine : string) : Integer;

    voila

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    C'est une méthode de classe, cela permet de manipuler des propriétés commune à une classe, il y a la même notion d'héritage que dans les méthodes sur les objets.

    C'est un outil très puissant, mais malheureusement Borland, l'a implémenté à moitié (pas les variables de classe ce qui oblige à faire du bricolage.)

    Une méthode de classe est appelé via le nom de la classe.


  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour vos réponses
    Si je comprends Bien, je peux appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TMaClass.Fonction;
    directement sans créer TMaClass?

    Je comprends pas bien là...
    Vous pouvez me donner un petit exemple svp ?
    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    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
    TMathsOps = class
    public
      class function Addition(Val1, Val2 : integer) : integer;
      class function Substraction(Val1, Val2 : integer) : integer;
    end;
     
    ...
     
    class function TMathsOps.Addition(Val1, Val2 : integer) : integer;
    begin
      Result := Val1 + Val2;
    end;
     
    class function TMathsOps.Substraction(Val1, Val2 : integer) : integer;
    begin
      Result := Val1 - Val2;
    end;
    Et tu appelles comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShowMessage(IntToStr(TMathsOps.Addition(1, 2)));
    ShowMessage(IntToStr(TMathsOps.Substraction(1, 2)));
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK merci
    Mais quel intérêt de faire ça alors? Pourquoi ne pas faire directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      function Addition(Val1,Val2:integer):integer);
      begin
        result:=Val1+Val2;
      end;
    ?
    Qu'est-ce que ça apporte de faire comme ça?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Non, il faut que la classe existe.

    Un constructor est une méthode de classe par exemple.

    Un petit tutorial à ce sujet
    http://laurent-dardenne.developpez.c...es/metaclasse/

  8. #8
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour le lien
    Citation Envoyé par cpdump
    Non, il faut que la classe existe
    Non c'est pas ce que je voulais dire:
    Quel intérêt de créer une classe avec des classes de fonctions plutot que des fonctions seules toutes bêtes?

    Citation Envoyé par cpdump
    Un constructor est une méthode de classe par exemple
    Ah OK d'accord mais là, elle a une utilité: la création de l'objet! Sinon, je ne vois pas l'intérêt...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Parce cela permet de manipuler une propriété commune à tous les objets en une seule fois, cela prendre moins de place puisque cette propriété est stockées dans la classe et non pas dans toutes les instances,...

    Un exemple simple et pas forcéement le plus pertinent:

    Imaginons des objets comptes bancaires dans une devise A, avec une méthode donnant le solde en plusieurs devises via un taux de change par rapport à la devise A.

    Si le taux de change est stocké dans l'objet, cela veut dire qu'il faut modifier les taux de changes dans tous les objets existants, alors qui si le taux de change est une variable de classe, une seul appel à la méthode de classe permet de modifier le taux de change de tous les objets.

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK je comprends un peu mieux...
    Mais n'y a-t-il pas un exemple ou l'utilisation des classes de fonctions est incontournable? Parce que pour l'instant, les exemples que vous m'avez donnés n'obligent pas à utiliser une méthode de classe...
    Je dois être un peu Teuteu pour ne pas comprendre...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Dans le tuto signalé il y a un lien sur une implémentation du pattern singleton.
    Ensuite si tu as une version de Delphi avec les sources, regarde dans l'unité system la déclaration de TObject.
    C'est peut être pas idéal pour apprendre mais il y a tout ce qu'il faut pour ( sauf les méthodes en assembleur). Ensuite utilise le forum ...

    Je peux aussi ajouter qu'une méthode de classe permet de manipuler le concept d'un objet et pas un objet concret/existant. C'est un peu 'sec' et je ne suis pas certain que cela puisse t'aider mais cela te donne une indication.
    Enfin j'espére

  12. #12
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Je ne comprends pas pourquoi tu cherches à connaître un contexte dans lequel les méthodes de classes sont incontournables
    Evidemment qu'il n'y en a pas Mais trouve-moi un exemple dans lequel les propriétés sont indispensables, voire même les objets
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  13. #13
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK merci à tous
    Je viens de comprendre l'utilité de cette méthode grâce aux sources de Sepi (Merci sjrd )...
    Encore merci à tous pour vos explications
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. Property de class en paramètre d'une fonction.
    Par Oberown dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 07/02/2015, 13h52
  2. passer une classe comme parametre d'une fonction
    Par antoine dpt dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/07/2009, 13h10
  3. classe en argument d'une fonction
    Par Tequilapaf dans le forum Général Python
    Réponses: 3
    Dernier message: 06/07/2009, 16h33
  4. que signifie "raw_" devant une fonction?
    Par raoulmania dans le forum MFC
    Réponses: 2
    Dernier message: 10/10/2005, 11h12
  5. [Sécurité] :: @ devant une fonction
    Par bmayer dans le forum Langage
    Réponses: 6
    Dernier message: 06/07/2005, 15h41

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