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 :

Projet Distributeur orienté objet


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut Projet Distributeur orienté objet
    Bonjour tout le monde.

    Je souhaite développer une application sur un distributeur de boisson en Delphi orienté objet.

    Donc pour l'instant j'ai 4 classes
    -Produit
    -boissons hérite de produit
    -bonbon hérite de produit
    -monnaie

    Et la je ne sais pas quoi faire.

    Merci de m'aider stp

    Cordialement,

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 426
    Points : 24 790
    Points
    24 790
    Par défaut
    C'est un projet scolaire ?

    Commence par étudier le fonctionnement d'un distributeur, les actions qu'il peut avoir, ...

    - Saisie d'une touche sur clavier de sélection (par code ou par touche prédéfini)
    - Affichage de la somme à payer
    - Gestion de l'insertion de monnaie
    - Livraison du Produit
    - Restitution Monnaie ...

    avec ce tu constitue un MOT (Modèle Organisationnel de Traitement)

    En parallèle, tu défini les données :

    - Stock Actuel et Stock Maximal par Type de Produit
    - Réserve de Monnaie

    avec cela tu constiture un MCD (Modèle Conceptuel de Données)

    De cela tu peux en découler des classes de données et de traitement, ainsi que les interactions entre-elles ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Oula ca fait pas mal de chose a penser.

    Oui c'est pour une projet scolaire.

    Tu penses que l'on peut le réaliser en combien de temps un projet comme ca?


    Merci encore pour la reponse rapide

    cordialement,

  4. #4
    Membre du Club Avatar de Kephuro
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 61
    Points : 48
    Points
    48
    Par défaut
    Ca dépend. Si ton programme doit juste délivrer ce qu'il doit délivrer quand on clique sur le bon bouton, gérer la monnaie, le rendu de la monnaie, gestion du stock....

    Une heure ou deux ? Si tu maitrises un minimum le Delphi.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Je connais un minumum delphi et pourtant je ne pense pas pouvoir réaliser en 1 ou 2 heure le projet.....

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    J'ai un petit problème d'analyse.
    Tout d'abord, j'ai décider de programmer un distributeur qui fournit des produit.
    Parmit c'est produit on a soit des accessoire soit du matériel (ipod, Zune.....)


    Donc j'utilise un Héritage(polymorphisme) entre produit et accessoire, matériel.

    Mais le problème est que je n'arrive pas a trouver d'élément différent dans accessoire et matériel.

    Je m'explique.

    Donc la classe produit a en privée:libellé, nbrest, nbmax, prix
    les classes Accessoires et matériaux reprennent exactement les même donnée de la classe produit mais je n'arrive pas a trouvé d'élément qui les différencies.

    Avez vous une idée?

    Pour compléter le projet, j'ai une classe portemonnaie comprenant en privée lavaleur, le nbr, le nbrmax, enfin j'ai une dernière classe Distributeur comprenant en privée 2 tableaux, l'un sur les produit et l'autre sur lesportemonnaie.

    Est ce que je suis pour l'instant dans le vrai ou totalement dans le vent?

    Pour vous donnée un exemple voici une vidéo ^^
    http://fr.youtube.com/watch?v=p82Y7hJgVM4

  7. #7
    Teo
    Teo est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    Bonjour

    Citation Envoyé par antoine2405 Voir le message
    J'ai un petit problème d'analyse.

    Donc j'utilise un Héritage(polymorphisme) entre produit et accessoire, matériel.

    Mais le problème est que je n'arrive pas a trouver d'élément différent dans accessoire et matériel.

    Je m'explique.

    Donc la classe produit a en privée:libellé, nbrest, nbmax, prix
    les classes Accessoires et matériaux reprennent exactement les même donnée de la classe produit mais je n'arrive pas a trouvé d'élément qui les différencies.
    Il me semble que si Accessoires et Materiaux n'ont pas de differences, peut etre qu'ils doivent tout simplement etre tous les deux de Classe "PRODUIT", dans ce cas, inutil de les deriver de "produit".

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    En premier lieu il faut faire comme ShaiLeTroll l'a indiqué et bien découper chaque fonctionnalité que doit faire le distributeur. Vu que c'est un projet scolaire, je suppose que vous devez avoir des contraintes à remplir et que vous devez donc intégrer.

    Ensuite la première des choses à penser c'est les conteneurs (et non pas l'affichage !) et ici les classes conteneurs puisqu'il faut penser POO.

    Donc effectivement une classe Distributeur qui sert de grand conteneur pour tout. Ce dernier possède un tableau d'objet Produit (classe de base). Chaque Produit possède donc un nom, un prix et un stock courant (et éventuellement un stock max) et une position dans le distributeur (qui peut correspondre à son indice dans le tableau mais c'est de mieux de l'avoir dans l'objet directement comme ça on peut le savoir directement et ça rend les choses plus simples pour l'affichage par exemple).
    Pour illustrer le principe d'héritage, on pourrait très bien avoir deux classes Bonbon et Boisson et chacune définirait son prix dans le constructeur (0,50€ pour les bonbons, 1,00€ pour les boissons).

    Un autre objet présent dans le Distributeur serait le Monnayeur, l'objet qui gère le rendu de la monnaie après achat (ou annulation). Ce dernier peut être assez complexe si on veut les choses bien car en réalité, ce n'est pas juste le stock d'argent présent dans la machine, je met ça et ça coûte et je rends ça. Non un monnayeur stocke pour chaque type de pièce (0,05, 0,10, 0,20, 0,50, 1,00 et 2,00) un nombre de pièce disponible et rend les pièces en nombre et en type correspondant à la valeur à rendre. De même il devrait être capable d'alerter lorsqu'il passe en statut "plus de monnaie".
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    En faite j'ai comme contrainte de l'héritage ( polymorphisme) et voila tout ^^

    Donc sans être original j'aurai fait un vrai distributeur ( avec boisson, bonbon...) mais bon ça fait trop simple.

    C'est pour ça que j'ai voulu introduire une Classe Accessoire et une Classe Matériel ( baladeur MP3 ....).

    Avez vous des idée original que je pourrai introduire????



    Merci quand même de vos réponses.

    Cordialement,

  10. #10
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Ok voici mon distributeur :


    TDistributeurUniversel

    TProduitGratuit => TRienEstGratuitDansCeMonde


    TProduitPayant => TMatos
    => TBouffe
    => TGonzesse

    TMatos => TLecteur => TLecteurMP3 => TIPod
    => TCreative

    => TLecteurCD => TLecteurCDSony

    TBouffe => TClacosse => TFromageQuiPu
    => TSandwich => TSodebo

    TGonzesse => TPasJolie => TGertrude
    => TJolie => TCindyCrawford (ce produit est cher :\)
    Akim Merabet

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Ha ben ça t'avais demandé un truc original, fallait t'y attendre ^^

    Nan plus sérieusement si j'étais toi je m'appliquerais déjà à coder mon distributeur qui donne des bonbons et des boissons et le fun tu verras après. Mais si ta problématique c'est d'avoir des idée pour avoir des héritages, tu peux déjà pas mal faire rien qu'avec ça :

    TProduit
    => TConfiserie
    => TSachet
    => TBarre
    => TBoisson
    => TBouteille
    => TCanette

    Etc... en cherchant un peu je suis sûr qu'on peut trouver les différences qui permettent de faire les catégories et d'en découler les héritages
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Merci, je pense que dans un premier temps je vais partir sur un sujet comme ça.
    Mais bon en espérant que j' y arrive a développé l'application.

    Je vous tiens au courant si j'ai un problème.

    Merci encore

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    bonjour,

    Le projet avance petit a petit, en meme temps je ne l'ai retouché que aujourd'hui

    Bref je suis un peu perdu.

    J'arrive a afficher les prix des différents objet en vente mais après je ne sais pas trop quoi faire.

    Faut il que je m'occupe que de rendre la monnaie ou il y a un autre concept que j'oublie ?

    merci

    Cordialement,

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    J'ai cet fois ci un probléme d'héritage (polymorphisme) et je ne sais pas du tout d'ou ca vient.

    S'il y a une personne qui pourrait m'aider ca serait avec plaisir.

    Voici le code :

    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    unit distributeur;
     
    interface
     {DEBUT dÈclaration des diffÈrente classe}
    type
    Produit=class
      Private
        lelibelle:string;
        lenbrest:integer;
        lenbmax:integer;
        leprix:integer;
      Public
        Constructor create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer);
        function get_prix():integer;
         procedure maj_nbr(erreur:boolean); virtual;
        end;
     
    type
    Accessoire=class(Produit)
      Private
      lamarque_acc:string;
      Public
        Constructor create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer;Unemarque_acc:string );
      procedure maj_nbr(erreur:boolean);override;
      end;
     
    type
    Materiel=class(Produit)
      Private
    letype_mat:string;
      Public
        Constructor create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer; Untype_mat:string );
       procedure maj_nbr(erreur:boolean);override;
      end;
     
    type
    Portemonnaie=class
      Private
        lavaleur:integer;
        lenbr:integer;
        lenbrmax:integer;
      Public
        Constructor create(Unevaleur:integer; Unnbr:integer; Unnbrmax:integer);
        function get_valeur():integer;
        function get_nbrpiece():integer;
        function get_nbrmax():integer;
        procedure ajout(Unnbpiece:integer);
        procedure supp(Unnbpiece:integer);
        end;
     
    type
    Distributeur_objet=class
      Private
      lesproduit:array[1..9]of Produit;
      lesportemonnaie:array[1..5]of Portemonnaie;
      Public
        Constructor create2();
        Constructor create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer);
        Function get_produit(Unlibelle:string;distributeur:Distributeur_objet):integer;
        Function get_prix(Unevaleur:integer;distributeur:Distributeur_objet):integer;
        Function get_total(distributeur:Distributeur_objet):integer;
        Procedure maj_nbr2(Unlibelle:string;distributeur:Distributeur_objet;erreur:boolean);
     
      end;
     
     {FIN dÈclaration des diffÈrente class}
    implementation
     {DEBUT class PRODUIT}
    constructor Produit.create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer);
      begin
      lelibelle:=Unlibelle;
      lenbrest:=Unnbrest;
      lenbmax:=Unnbmax;
      leprix:=Unprix;
      end;
     
    function Produit.get_prix():integer;
    begin
    result:=leprix;
    end;
     
    procedure Produit.maj_nbr(erreur:boolean);
      begin
     
      end;
     
    procedure Materiel.maj_nbr(erreur:boolean);
    begin
    If lenbrest=0 then
    begin
    erreur:=true ;
     
    end
    else
    begin
       lenbrest:=lenbrest-1;
    erreur:=false ;
    end;
    end;
    procedure Accessoire.maj_nbr(erreur:boolean);
    begin
    If lenbrest=0 then
    begin
    erreur:=true ;
     
    end
    else
    begin
       lenbrest:=lenbrest-1;
    erreur:=false ;
    end;
    end;
     
     {FIN class PRODUIT}
     
     {DEBUT class ACCESSOIRE}
    constructor Accessoire.create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer; Unemarque_acc:string);
    begin
    inherited create(Unlibelle,Unnbrest,Unnbmax,Unprix);
    lamarque_acc:=Unemarque_acc;
    end;
     
     {FIN class ACCESSOIRE}
     
     {DEBUT class MATERIEL}
    constructor Materiel.create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer; Untype_mat:string);
    begin
     
    inherited create(Unlibelle,Unnbrest,Unnbmax,Unprix);
    letype_mat:=Untype_mat;
     
    end;
     {FIN class MATERIEL}
     
     
     
      {DEBUT class PORTEMONNAIE}
     
    Constructor Portemonnaie.create(Unevaleur:integer; Unnbr:integer; Unnbrmax:integer);
    begin
    lavaleur:=Unevaleur;
    lenbr:=Unnbr;
    lenbrmax:=Unnbrmax;
    end;
     
    function Portemonnaie.get_valeur():integer;
    begin
    result:=lavaleur;
    end;
     
    function Portemonnaie.get_nbrpiece():integer;
    begin
    result:=lenbr;
    end;
     
    function Portemonnaie.get_nbrmax():integer;
    begin
    result:=lenbrmax;
    end;
     
    procedure Portemonnaie.ajout(Unnbpiece:integer);
    begin
    lenbr:=lenbr+Unnbpiece;
    end;
     
    procedure Portemonnaie.supp(Unnbpiece:integer);
    begin
    lenbr:=lenbr-Unnbpiece;
    end;
     
      {FIN class PORTEMONNAIE}
     
     
     
     
     {DEBUT class DISTRIBUTEUR}
     Constructor Distributeur_objet.create2();
    begin
    lesproduit[1]:= Materiel.create('iPod Shuffle',0,20,50,'mp3');
    lesproduit[2]:= Materiel.create('iPod Nano',5,100,150,'mp3');
    lesproduit[3]:= Materiel.create('ipod Classic',5,20,250,'mp3');
    lesproduit[4]:= Materiel.create('iTouch',5,20,350,'mp3');
    lesproduit[5]:= Materiel.create('iPhone',5,400,450,'telephone');
    lesproduit[6]:= Accessoire.create('Ecouteur Apple',5,30,30,'Apple');
    lesproduit[7]:= Accessoire.create('Chargeur Apple',5,30,50,'Apple');
    lesproduit[8]:= Accessoire.create('Etui Larobe',5,30,30,'Larobe');
    lesproduit[9]:= Accessoire.create('Chaussette Apple',5,30,20,'Apple');
     
    lesportemonnaie[1]:= Portemonnaie.create(100,5,100);
    lesportemonnaie[2]:= Portemonnaie.create(50,10,100);
    lesportemonnaie[3]:= Portemonnaie.create(20,10,100);
    lesportemonnaie[4]:= Portemonnaie.create(10,10,100);
    lesportemonnaie[5]:= Portemonnaie.create(5,10,100);
    end;
     
     
    Constructor Distributeur_objet.create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer);
    begin
    lesproduit[1]:= Materiel.create('iPod Shuffle',1,20,50,'mp3');
    lesproduit[2]:= Materiel.create('iPod Nano',5,100,150,'mp3');
    lesproduit[3]:= Materiel.create('ipod Classic',5,20,250,'mp3');
    lesproduit[4]:= Materiel.create('iTouch',5,20,350,'mp3');
    lesproduit[5]:= Materiel.create('iPhone',5,400,450,'telephone');
    lesproduit[6]:= Accessoire.create('Ecouteur Apple',5,30,30,'Apple');
    lesproduit[7]:= Accessoire.create('Chargeur Apple',5,30,50,'Apple');
    lesproduit[8]:= Accessoire.create('Etui Larobe',5,30,30,'Larobe');
    lesproduit[9]:= Accessoire.create('Chaussette Apple',5,30,20,'Apple');
     
    lesportemonnaie[1]:= Portemonnaie.create(100,5,100);
    lesportemonnaie[2]:= Portemonnaie.create(50,10,100);
    lesportemonnaie[3]:= Portemonnaie.create(20,10,100);
    lesportemonnaie[4]:= Portemonnaie.create(10,10,100);
    lesportemonnaie[5]:= Portemonnaie.create(5,10,100);
    end;
     
        Function Distributeur_objet.get_produit(Unlibelle:string;distributeur:Distributeur_objet):integer ;
         begin
      If (Unlibelle='ipod Shuffle') then   result:=distributeur.lesproduit[1].get_prix()
      else if (Unlibelle='ipod Nano') then  result:=distributeur.lesproduit[2].get_prix()
      else if (Unlibelle='ipod Classic') then result:=distributeur.lesproduit[3].get_prix()
      else if (Unlibelle='iTouch') then result:=distributeur.lesproduit[4].get_prix()
      else if (Unlibelle='iPhone') then result:=distributeur.lesproduit[5].get_prix()
      else if (Unlibelle='Ecouteur Apple') then result:=distributeur.lesproduit[6].get_prix()
      else if (Unlibelle='Chargeur Apple') then result:=distributeur.lesproduit[7].get_prix()
      else if (Unlibelle='Etui Larobe') then result:=distributeur.lesproduit[8].get_prix()
      else if (Unlibelle='Chaussette Apple') then result:=distributeur.lesproduit[9].get_prix()
     end;
     
     
     
       Function Distributeur_objet.get_prix(Unevaleur:integer;distributeur:Distributeur_objet):integer;
        begin
       case Unevaleur of
       100 : result:=distributeur.lesportemonnaie[1].get_valeur() ;
       50:   result:=distributeur.lesportemonnaie[2].get_valeur() ;
       20:  result:=distributeur.lesportemonnaie[3].get_valeur() ;
       10  :   result:=distributeur.lesportemonnaie[4].get_valeur() ;
       5 :   result:=distributeur.lesportemonnaie[5].get_valeur() ;
       end;
        end;
     
       Function Distributeur_objet.get_total(distributeur:Distributeur_objet):integer;
        begin
     
       result:=distributeur.lesportemonnaie[1].get_valeur()*distributeur.lesportemonnaie[1].get_nbrpiece() +
    distributeur.lesportemonnaie[2].get_valeur()*distributeur.lesportemonnaie[2].get_nbrpiece() +
    distributeur.lesportemonnaie[3].get_valeur()*distributeur.lesportemonnaie[3].get_nbrpiece()   +
    distributeur.lesportemonnaie[4].get_valeur()*distributeur.lesportemonnaie[4].get_nbrpiece()    +
    distributeur.lesportemonnaie[5].get_valeur()*distributeur.lesportemonnaie[5].get_nbrpiece() ;
       end;
     
       Procedure Distributeur_objet.maj_nbr2(Unlibelle:string;distributeur:Distributeur_objet;erreur:boolean);
     
       Begin
     
        If (Unlibelle='ipod Shuffle') then  distributeur.lesproduit[1].maj_nbr(erreur)
     // else if (Unlibelle='ipod Nano') then distributeur.lesproduit[2].maj_nbr(erreur)
     // else if (Unlibelle='ipod Classic') then distributeur.lesproduit[3].maj_nbr(erreur)
     // else if (Unlibelle='iTouch') then distributeur.lesproduit[4].maj_nbr(erreur)
     // else if (Unlibelle='iPhone') then distributeur.lesproduit[5].maj_nbr(erreur)
     // else if (Unlibelle='Ecouteur Apple') then distributeur.lesproduit[6].maj_nbr(erreur)
     // else if (Unlibelle='Chargeur Apple') then distributeur.lesproduit[7].maj_nbr(erreur)
     // else if (Unlibelle='Etui Larobe') then distributeur.lesproduit[8].maj_nbr(erreur)
      // else if (Unlibelle='Chaussette Apple') then distributeur.lesproduit[9].maj_nbr(erreur)
      end;
     
      {FIN class DISTRIBUTEUR}
      end.
    P.S : j'en profite aussi pour savoir ce que vous en pensez? Est ce compréhensible???

  16. #16
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 426
    Points : 24 790
    Points
    24 790
    Par défaut
    Citation Envoyé par antoine2405 Voir le message
    P.S : j'en profite aussi pour savoir ce que vous en pensez? Est ce compréhensible???
    Alors, euh, le nom des classes doivent être précéder d'un T donc TProduit, TAccessoire, ... c'est un règle tacite en delphi ...
    Le _ n'est pas non plus considéré comme valable ... GetPrix, MajNbr, c'est la casse qui indique la rupture des mots ... et il existe les property
    les mots clés de la visibilité doivent être écrit en minuscule

    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
    type
      TProduit = class
      private
        Flelibelle:string;
        Flenbrest:integer;
        Flenbmax:integer;
        Fleprix:integer;
      protected
        procedure SetNbRest(Value: Integer);
      public
        constructor Create(Unlibelle:string; Unnbrest:integer; Unnbmax:integer; Unprix:integer);
        property Libelle: string read FLeLibelle write FLeLibelle;
        property Libelle: string read Flenbrest write SetNbRest;
        property Libelle: string read Flenbmax;
        property Libelle: string read Fleprix;    
      end;
    Ensuite avant d'aller plus loin, reprend les bases
    MAUVAIS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure Materiel.maj_nbr(erreur:boolean); 
    begin
    If lenbrest=0 then
    begin
    erreur:=true ; // Ecrire dans Erreur ne sert à rien, il manque var ou out
     
    end
    else
    begin
       lenbrest:=lenbrest-1;
    erreur:=false ;
    end;
    end;
    BON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Materiel.maj_nbr(): boolean; // True OK, False Erreur ...
    begin
      Result := lenbrest > 0;
      if Result then
         Dec(lenbrest);
    end;
    ENCORE MIEUX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TMateriel.SetNbRest();
    begin
      if lenbrest > 0 then
       Dec(lenbrest) 
     else
       raise EMatereilInvalidNbRestError.Create();
    end;

    Enfin les IF sur le libelle, tu n'exploites pas du tout le polymorphisme, pourquoi commencer par quelque chose de si compliquer, consulte les TUTORIELS !



    PS : Je suis exigeant et intransigeant, je reproduis ce qu'à fait mon tuteur avec moi, cela m'a servi, et je lui en suis reconnaissant ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Exemple de projet en .net orienté objet
    Par Gualino dans le forum Débuter
    Réponses: 6
    Dernier message: 08/09/2011, 23h19
  2. Comment bien organiser un projet PHP Orienté Objet ?
    Par jeanjean6 dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2011, 14h41
  3. Diagramme de classe pour projet PHP non orienté objet
    Par dekalima dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 25/01/2011, 20h46
  4. [Info]Projet Orienté Objet Java ou C++
    Par faressam dans le forum Langage
    Réponses: 2
    Dernier message: 16/02/2006, 19h40
  5. [SGBDOO] Base de données orientée objet
    Par Jaona dans le forum Décisions SGBD
    Réponses: 19
    Dernier message: 14/04/2003, 12h07

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