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 :

Questions sur la programmation objet en Delphi


Sujet :

Delphi

  1. #1
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut Questions sur la programmation objet en Delphi
    Bonjour,
    ayant programmé pendant 2 ans en Delphi "Procédural" je pense être à l'aise avec ce langage. Pour un entretien d'embauche, je dois passer un test technique portant sur la programmation Objet avec Delphi. Je vois en gros la syntaxe a utiliser pour ce faire, mais le souci c'est que pour un petit programme tout simple, je n'en vois pas l'intérêt, du point de vue optimisation. Loin de moi l'idée de lancer un troll sur Objet ou Procédural, j'aimerais juste qu'un gentil développeur "objet" puisse me donner un lien sur un bout de code d'une application vraiment basique (genre le truc qu'on écrit en 30 minutes pas plus) respectant la façon de penser objet, pour que je puisse allier le théorique que j'ai de l'objet, avec la pratique que j'ai de Delphi.

    Merci d'avance !

  2. #2
    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
    Salut,
    voir
    http://delphi.developpez.com/cours/i...AGE&them=Objet
    http://delphi.developpez.com/cours/index.php?dom=COURS

    Tu as aussi les démos livrées avec Delphi. Ou encore réécrire ce que tu as développé en procédurale. Qu'est-ce que tu n'as pas compris dans la programmation objet ou plutot dans le concept.

    Et il me semble t'avoir déjà donné ce genre d'infos...
    [Edit]
    Je te conseille ce bouquin, l'implémentation date (Tp5.5) mais il reste trés pédagogique sur le sujet.
    http://www.jcolibri.com/livres/livre_programmation_objet/livre_programmation_objet.html
    [/Edit]

  3. #3
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Merci Laurent, je vais relire tout ça. Désolé si j'ai déjà posé la question il y a quelques mois

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tu sais que lorsque tu utilises la VCL, c'est de l'objet à 100% ??

    Faire du procédural strict en Delphi, ça se résume aux applications console : je ne peux m'empêcher de me dire qu'utiliser un RAD pour faire uniquement des applis console, c'est un peu prendre une Ferrari pour aller au bistrot 2 pâtés de maison plus loin... ;-)
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    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
    Citation Envoyé par -Sylvain Leray-
    Désolé si j'ai déjà posé la question il y a quelques mois
    De rien, tu peux me poser 10 fois la question
    Le probléme c'est que t'avance pas dans la compréhension du concept.

    Achéte le bouquin indiqué, tu ne perdras pas ton argent et puis qui ne risque rien n'a rien !

    Dans l'article de HDD34 sur l'objet, tu trouveras un lien sur les sources du bouquin cité, si je me souviens bien il y un exemple de gestion de liste procédurales et la même en objet. regarde si cela peut t'aider.

    Essaie de formuler clairement ce que tu comprends pas.

  6. #6
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Après moultes lectures et une tentative d'exercice, je recontre un souci, si vous pouvriez me donner des pistes je vous en serais reconnaissant

    l'exercice : Une sombre histoire d'employes avec leur salaires hebdo a calculer.

    3 classes

    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
      TEmploye = class
         public
           nom : String;
           Constructor create(nom : String);
         end;
     
      TEmployeHoraire = class(TEmploye)
        public
           Constructor create (nom : String;nbheures : Integer; TarifH,Augment : Real);
           Function GetSalaire : real;
           Procedure SetinfosSalaire(nbheures : integer; TarifH,Augment : Real);
        private
           nbheures : Integer;
           TarifHoraire : Real;
           AugmentationHeuresSupp : Real;
      end;
      TCommercial = class(TEmploye)
        fixe : real;
        ChiffreAffaire : Real;
        Constructor create (nom : String; fixe,CA : Real);
        Function GetSalaire : real;
      end;
    Dans la procédure de calcul l'exercice stipule qu'il faut stocker les salariés dans un Tableau, puis de faire une boucle dessus afin d'appeler la fonction getsalaire. La création dans le tableau est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
      TableauEmployes : Array [0..9] of TEmploye;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // création des 10 salaries (avec des valeurs en Dur), stockage dans le tableau de TEmploye
    TableauEmployes[0]:= TEmployeHoraire.create('Sylvain');
    TableauEmployes[0].SetinfosSalaire(38,100,30);
    //Création avec le constructeur surchargé
    TableauEmployes[2]:= TEmployeHoraire.create('Michel',50,60,30);
    //Création des commerciaux
    TableauEmployes[6]:= TCommercial.create('Arnaud',500,15000);
    Mon problème est que 1) erreur de compilation TableauEmployes[0].SetinfosSalaire(38,100,30); setinfosSalaire n'est pas trouvé
    et les champs spécifique à un commercial ne sont pas sauvegardés dans mon tableau.

    Comment faire pour que des salairés horaires et des commerciaux cohabitent dans le même tableau s'il vous plait ?

    PS : désolé si ça fait un peu correction d'exercice à l'école, mais j'essaye vraiment de comprendre

    PPS : Merci Laurent, grâce à ta patience et toute cette lecture, je vois un objet TLumière au bout du tunnel du procédural !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Je pense que c'est normal qu'il ne trouve pas cette procédure (SetInfosSalaire) car elle appartient à la classe tEmployeHoraire ...

    En changeant la déclaration de ton tableau en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var 
      TableauEmployes : Array [0..9] of tCommercial;
    Je n'ai pas suggéré de le déclarer en tEmployeHoraire car ensuite tu dis devoir appeler la function GetSalaire ...

    Si erreur, qu'on me corrige !

  8. #8
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Si je fais un tableau de TCommercial, il ne trouvera pas non plus setinfosSalaire puisque ça appartient à la classe TEmployeHoraire, qui est un enfant de TEmploye au meme titre que TCommercial ?

    Pareil, si je me trompe qu'on m'arrete !

  9. #9
    Membre actif
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Juin 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 177
    Points : 223
    Points
    223
    Par défaut
    Salut,

    pour ton souci tu peut faire le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // création des 10 salaries (avec des valeurs en Dur), stockage dans le tableau de TEmploye
    TableauEmployes[0]:= TEmployeHoraire.create('Sylvain');
     
    -- ICI Modification
    if TableauEmployes[0] is TEmployeHoraire then
       TEmployeHoraire(TableauEmployes[0]).SetinfosSalaire(38,100,30);
    --- ICI Fin Modification
     
    //Création avec le constructeur surchargé
    TableauEmployes[2]:= TEmployeHoraire.create('Michel',50,60,30);
    //Création des commerciaux
    TableauEmployes[6]:= TCommercial.create('Arnaud',500,15000);
    En fait le TableauEmployes[0] is TEmployeHoraire permet de vérifier que c'est le type attendu.
    TemployeHoraire(TableauEmployes[0])... permet de "surcharger" le type TableauEmployes[0]. Cette surcharge n'est pas obligatoire mais elle permet de protéger son code au cas où.

    A+

  10. #10
    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
    Salut,
    je vois un petit soucis de conception, si un employé est un salarié, ce qui touche au salaire devrait être dans la classe TEmploye.
    Si ce n'est pas le cas tu as une autre entité/concept qui n'est pas pris en compte ? où placerais-tu les bénévols et les stagiaires ?
    L'un n'a pas de salaire le second dans qq cas à droit à une prime.
    Donc la POO c'est surtout de la conception ( COO ), la syntaxe de codage suit...

    Tu n'utilise pas de méthode virtuelle ?

  11. #11
    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
    Programmer objet c'est surtout comprendre les concepts de la POO et les appliquer.

    Les concepts de base:
    • Généralisation/spécialisation (héritage): qu'est ce qui est commun aux classes mères et qu'est ce que est spécifique aux classes filles.

      Méthodes virtuelles et des classes abstraites (A priori TEmploye doit une classe abstraite).


    Regarde les cours pour comprendre ces deux concepts déjà.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par -Sylvain Leray-
    Si je fais un tableau de TCommercial, il ne trouvera pas non plus setinfosSalaire puisque ça appartient à la classe TEmployeHoraire, qui est un enfant de TEmploye au meme titre que TCommercial ?

    Pareil, si je me trompe qu'on m'arrete !
    Non ca devrait aller :-)

  13. #13
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Si je déclare le tableau en tant que Tcommercial :

    [Erreur] USalaire01.pas(109): Types incompatibles : 'TCommercial' et 'TEmployeHoraire'
    à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableauEmployes[0]:= TEmployeHoraire.create('Sylvain');
    Laurent, c'était juste un exercice pour comprendre le Polymorphisme (et vu que ça marche pas je ne suis plus très sur de comprendre) Je n'ai donc pas pensé aux bénévoles pour simplifier et répondre à l'énnoncé

    Je vais essayer un autre exercice en laissant celui ci de coté, je ne voudrais pas abuser de votre temps en mettant 75 réponses à ce sujet !

    Merci d'avoir tenté de m'aider, promis un jour je penserais Objet bien comme il faut et je pourrais à mon tour (j'espère) aider mes petits camarades en détresse

  14. #14
    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
    Le problème est que chaque employé a un salaire donc GetSalaire doit être déclaré au niveau de TEmployé, mais comme le mode de calcul des salaire est spécifique aux types d'employés il faut dire que cette méthode sera rédéfinie au niveau des classes filles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      TEmploye = class
         public
           nom : String;
           Constructor create(nom : String);
           Function GetSalaire : real; virtual; abstract;
      end;

  15. #15
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut


    j'ai trouvé l'objet TLumière au bout du tunnel ça y est enfin ! j'ai compris le polymorphisme ! je suis un homme nouveau woohooo !

    En relisant vos réponses et l'excellent cours sur le POO de Frédérique Beaulieu j'ai trouvé la solution !

    j'ai donc déclaré le tableau en TEmploye, classe parente


    Puis dans la boucle For :
    je n'avais pas compris qu'il fallait préciser qu'on avait à faire à un enfant pour avoir la visibilité sur ses fonctions spécifiques. Maintenant c'est limpide !

    Merci encore à tous de votre patience, je retourne au travail j'ai encore de nombreuses notions dans l'objet à décourir Merci merci !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If TableauEmployes[i] is TEmployeHoraire then
    FrmSalaires.MemoAffichage.Lines.Add(TableauEmployes[i].nom+' gagne '+
                                        floattoStr((TableauEmployes[i] as TEmployeHoraire).GetSalaire)+' Euros');
     
    If TableauEmployes[i] is TCommercial then
    FrmSalaires.MemoAffichage.Lines.Add(TableauEmployes[i].nom+' gagne '+
                                        floattoStr((TableauEmployes[i] as TCommercial).GetSalaire)+' Euros');

  16. #16
    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
    Citation Envoyé par -Sylvain Leray-
    Laurent, c'était juste un exercice pour comprendre le Polymorphisme (et vu que ça marche pas je ne suis plus très sur de comprendre) Je n'ai donc pas pensé aux bénévoles pour simplifier et répondre à l'énnoncé
    J'ai bien compris, c'était pour forcer le trait. Une classe mal conçue te feras perdre du temps et de l'énergie.
    Au fait connais-tu UML ?
    Citation Envoyé par -Sylvain Leray-
    Je ne voudrais pas abuser de votre temps
    Laisse nous en décider .
    Perso cela ne me gêne pas

  17. #17
    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
    Citation Envoyé par -Sylvain Leray-


    j'ai trouvé l'objet TLumière au bout du tunnel ça y est enfin ! j'ai compris le polymorphisme ! je suis un homme nouveau woohooo !
    On ne dirait d'après le code que tu as écrit
    La méthode GetSalaire est commune à tous les employés (cf mon post précedent), mais est implémentée au niveau de chaque classe fille car la méthode de calcul est spéficique à la classe fille donc grace au polymorphisme tu n'as pas besion de connaitre la classe de tes employés pour récuperer le salaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FrmSalaires.MemoAffichage.Lines.Add(TableauEmployes[i].nom+' gagne '+
                                        floattoStr((TableauEmployes[i].GetSalaire)+' Euros');
    Ce qui tu as écrit ne tiens pas du tout compte du polymorphisme.

  18. #18
    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
    [edit]
    Les post se sont croisés
    [/edit]
    Le soucis avec ton approche est que si demain tu crées une nouvelle classe dérivée tu dois reprendre chaque traitement pour ajouter cette classe dans les tests, pas trés pratique.


    Un petit test :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    program testobj;
     
    {$APPTYPE CONSOLE}
     
    {Define TCADRE} // ajouter $
     
    uses
      SysUtils;
     
    {$ifDef TCADRE}
     const Nb=5;
    {$Else}
     const Nb=4;
    {$Endif}
     
    type
      TEmploye = class
         public
           Fnom : String;
           Constructor Create(nom : String);
           Function GetSalaire : String;Virtual;Abstract;
         end;
     
      TEmployeHoraire = class(TEmploye)
        private
           Fnbheures : Integer;
           FTarifHoraire : Real;
           FAugmentationHeuresSupp : Real;
        public
           Constructor create(nom : String;nbheures : Integer; TarifH,Augment : Real);
           Function GetSalaire : String;Override;
      end;
     
      TCommercial = class(TEmploye)
        Ffixe : real;
        FChiffreAffaire : Real;
        Constructor create (nom : String; fixe,CA : Real);
        Function GetSalaire : String;Override;
      end;
     
    {$ifDef TCADRE}
      TCadre = class(TEmploye)
        Function GetSalaire : String;Override;
      end;
    {$Endif}
     
    Constructor TEmploye.Create(nom : String);
    begin
     FNom:=Nom;
    end;
     
     {EmployeHoraire}
    Constructor TEmployeHoraire.Create(nom : String;nbheures : Integer; TarifH,Augment : Real);
    begin
     Inherited create(Nom);
     Fnbheures := nbheures;
     FTarifHoraire :=TarifH;
     FAugmentationHeuresSupp :=Augment;
    end;
     
    Function TEmployeHoraire.GetSalaire : String;
    begin
     result:='Salaire employé(e) horaire';
    end;
          {TCommercial}
    Constructor TCommercial.Create(nom : String; fixe,CA : Real);
    begin
     Inherited create(Nom);
     Ffixe:=Fixe;
     FChiffreAffaire:=ca;
    end;
     
    Function TCommercial.GetSalaire : String;
    begin
     result:='Salaire commercial(e)';
    end;
     
       {TCadre}
    {$ifDef TCADRE}
    Function TCadre.GetSalaire : String;
    begin
      result:='Salaire cadre';
    end;
    {$Endif}
     
    var
      TableauEmployes : Array [1..nb] of TEmploye;
     
     
     
    procedure TraiteTableau;
    // l'ajout d'une nouvelle classe ne nécessite pas la modification de ce 
    // traitement POUR CE CONTEXTE
     
    var I : Integer;
    begin
     For I:=1 to Length(TableauEmployes) do
     begin
      Write(TableauEmployes[I].Classname+' : ');
      Writeln(TableauEmployes[I].GetSalaire);
     end;
    end;
     
    begin
     TableauEmployes[1]:=TEmployeHoraire.Create('E1',8,100,10);
     TableauEmployes[2]:=TCommercial.Create('E2',2000,100);
     TableauEmployes[3]:=TCommercial.Create('E43',2000,500);
     TableauEmployes[4]:=TEmployeHoraire.Create('E4',8,100,5);
    {$ifDef TCADRE}
     TableauEmployes[5]:=TCadre.Create('E5');
    {$Endif}
     
     TraiteTableau;
     
     readln;
    end.
    [edit]
    As-tu compris ton erreur ?
    [/edit]

  19. #19
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    donc si j'ai bien compris l'exemple,

    si dans ma classe Parente (TEmploye) je déclare

    Function GetSalaire en virtual abstract
    et dans chaque classe enfant Function Getsalaire en Override

    1) je ne pourrais pas créer d'objet TEmploye à cause de l'abstract (on en a pas besoin c'est juste pour comprendre
    2) Dans une variable déclarée TEmploye et créée en TCommercial

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var 
    UnEmploye : TEmploye
    begin
    UnEmploye := TCommercial.create('Bill Gates');
    end;
    J'en viens à ma question Avec le bout de code si dessus, si j'appelle

    Mon résultat sera calculé de la façon d'un commercial ?
    Et il n'y a pas d'implémentation de TEmploye.getsalaire puisque Abstract ?

    Si je n'ai dis aucune idiotie dans tout ce message c'est que j'ai compris le polymorphisme, sinon je vais continuer à vous embêter, ayant de la chance de tomber sur des gens patients et compétents

  20. #20
    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
    Mon résultat sera calculé de la façon d'un commercial ?
    Oui, c'est tout l'interet de l'heritage et des methodes virtuelles.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Question sur la programmation Orienté-Objet
    Par gibea00 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/11/2008, 19h21
  2. question sur mon programme
    Par PHPkoala dans le forum Réseau
    Réponses: 5
    Dernier message: 01/06/2007, 23h40
  3. question sur le programme eclipse
    Par jayjay.f dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 24/02/2007, 00h43
  4. Question sur les chemins Hiérarchiques et delphi
    Par dederfred dans le forum Delphi
    Réponses: 2
    Dernier message: 19/10/2006, 20h32
  5. Questions sur la programmation Api de windows
    Par ApolloCrid dans le forum MFC
    Réponses: 7
    Dernier message: 22/02/2004, 01h43

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