Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pascal-Delphi]Différentes erreurs

Création d'un distributeur en POO

Sujet résolu
    13 décembre 2006 à 16:33:05

    Bonjour à tous,
    Je commence à travailler en Pascal sous delphi et je crée un programme d'un distributeur de boissons et confiseries.
    Je vous montre mon code de mes classe :

    unit classe;

    interface
    type
    //Classe mère RailProduits
     RailProduits = class
     protected
         nomp : string;
         prixp : double;
         nombrep : integer;
         nombreMaxp : integer;

     public
      constructor Create(lenom:string; leprix:double; lenombre:integer; lenombreMax:integer);
      function GetPrix():integer;
      function GetNom() : string;
     end;
     //Classe fille  RailBoisson
     RailBoisson = class(RailProduits)
     protected
        contenance : integer;
     public
        constructor Create(lenom:string; leprix:double; lenombre:integer; lenombreMax:integer; lacontenance:integer);

     end;
     //Classe fille RailConfiserie
     RailConfiserie = class(RailProduits)
      protected
        poids : integer;
     public
        constructor Create(lenom:string; leprix:double; lenombre:integer; lenombreMax:integer; lepoids:integer);
     end;
     //Classe PorteMonnaie
     PorteMonnaie = class
     protected
     public
        valeursPiece : double;
        nombrePiece: integer;
        nombreMaxPiece: integer;

         Constructor Create(laValeur:double; leNombre:integer; leNombreMax:integer);
         function GetValeurpiece(): double;
         function GetNbPiece () : integer;
         function GetNbMax () : integer;
         procedure Ajoute (unnbPieces:integer);
         procedure Supprime (unnbPieces:integer);
     end;
     //Classe  Disrtibuteur
     Disrtibuteur = class
     protected
      nbRailProduit : array [1..9] of  RailProduits;  //tableau de type d'objet RailProduits
      nbPiecePorteMonnaie : array [1..5] of  PorteMonnaie;  //tableau de type d'objet PorteMonnaie
     public
          Constructor Create();
          Procedure rendreMonnaie(prixapayer:double; nbp10:integer; nbp20:integer; nbp50:integer; nbp1eu:integer; nbp2eu:integer; rendu10:integer; rendu20:integer; rendu50:integer; rendu1eu:integer; rendu2eu:integer);
     end;

    implementation

    /////Implémentation de la classe RailProduits\\\\\\

    //Constructeur
    Constructor RailProduits.Create(lenom : string; leprix: double; lenombre : integer );
      begin
         nomp := lenom;
         prixp := leprix;
         nombrep := lenombre;
         nombreMaxp := 9;
      end;

    //accesseur\\
    //retourne le nom désiré
    function RailProduits.GetNom();
      begin
      result:=nomp;
      end;

    //retourne le prix du produit désiré
    function RailProduits.GetPrix();
      begin
      result:=prixp;
      end;

    /////Implémentation de la classe RailBoisson\\\\\\

    //Constructeur
    Constructor RailBoisson.Create(lenom : string; lenombre : integer; leprix:double; lacontenance:integer);
      begin
         inherited Create(lenom, leprix,lenombre);
         contenance := lacontenance;
      end;

    /////Implémentation de la classe RailConfiserie\\\\\\

    //Constructeur
    Constructor RailConfiserie.Create(lenom : string; lenombre : integer; leprix:double; lepoids:integer);
      begin
         inherited Create(lenom, leprix,lenombre);
         poids := lepoids;
      end;


    /////Implémentation de la classe PorteMonnaie\\\\\\

    //Constructeur
    Constructor PorteMonnaie.Create(laValeur:double; leNombreMax:integer);
      begin
        valeursPiece := laValeur;
        nombrePiece := leNombreMax;
        nombreMaxPiece := leNombreMax;
      end;

    ///accesseur\\\
    //Retourne la valeur d'une piece
    function PorteMonnaie.GetValeurpiece();
       begin
        result := valeursPiece;
      end;

    //retourne le nombre de pièce
    function PorteMonnaie.GetNbPiece ();
    begin
        result := nombrePiece;
    end;

    //retourn le nombre maximal
    function PorteMonnaie.GetNbMax ();
    begin
        result := nombreMaxPiece;
    end;

    //ajoute un nombre de pièces
    Procedure PorteMonnaie.Ajoute(unnbPieces:integer);
    begin
      nombrePiece:=nombrePiece+unnbPieces ;
    end;
    //supprime un nombre de pièces
    Procedure portemonnaie.Supprime(unnbPieces:integer);
    begin
      nombrePiece:=nombrePiece-unnbPieces ;
    end;

    /////Implémentation de la classe Distributeur\\\\\\

    //Constructeur
    Constructor Disrtibuteur.Create();
    begin
    {
    //création des produits confiseries
    nbRailProduit[1]:= Create('snickers',5,200,20);
    nbRailProduit[2]:= Create('mms',5,200,20);
    nbRailProduit[3]:= Create('lion',5,200,20);
    nbRailProduit[4]:= Create('twix',5,200,20);
    nbRailProduit[5]:= Create('pepsi',5,200,20);
    nbRailProduit[6]:= Create('kikat',5,200,20);

    //création des produits boissons
    nbRailProduit[7]:= Create('pepsi',5,200,20);
    nbRailProduit[8]:= Create('orangina',5,200,20);
    nbRailProduit[9]:= Create('coca cola',5,200,20);

    //création du nombre de produits
    nbPiecePorteMonnaie[1]:= Create(200,100);
    nbPiecePorteMonnaie[2]:= Create(100,100);
    nbPiecePorteMonnaie[3]:= Create(50,100);
    nbPiecePorteMonnaie[4]:= Create(20,100);
    nbPiecePorteMonnaie[5]:= Create(10,100);
    }

    end;

    //Procédure permettant de rendre la monnaie
    Procedure Disrtibuteur.rendreMonnaie(leprixapayer:double; nombrep10:integer; nombrep20:integer; nombrep50:integer; nombrep1eu:integer; nombrep2eu:integer; rendu10cent:integer; rendu20cent:integer; rendu50cent:integer; rendu1euro:integer; rendu2euro:integer);
    begin
    {/**
      * Permet de rendre la monnaie suivant le prix, la monnaie donné par l'utilisateur,
      * le nombre de pièces données, la monnaie à rendre différenciant le nombre et
      * type de pièce à rendre
      */}

    {if leprixapayer == }
    begin
    end;

    end;

    end.


    et voici mon interface :

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, jpeg, ExtCtrls,classe;

    type
      TForm1 = class(TForm)
        snickers: TImage;
        mms: TImage;
        lion: TImage;
        twix: TImage;
        pepsi: TImage;
        orangina: TImage;
        cocacola: TImage;
        fanta: TImage;
        kikat: TImage;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        txtproduit: TEdit;
        txtdeuxeuro: TEdit;
        txtuneuro: TEdit;
        txtcinquantecent: TEdit;
        txtvingtcent: TEdit;
        txtdixcent: TEdit;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        txtlib: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure oranginaClick(Sender: TObject);
        procedure cocacolaClick(Sender: TObject);
        procedure fantaClick(Sender: TObject);
        procedure pepsiClick(Sender: TObject);
        procedure lionClick(Sender: TObject);
        procedure twixClick(Sender: TObject);
        procedure kikatClick(Sender: TObject);
        procedure mmsClick(Sender: TObject);
        procedure snickersClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    var
    distrib : Disrtibuteur;
    confiserie : RailConfiserie;
    implementation

    {$R *.dfm}

    procedure TForm1.snickersClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    confiserie.Create('snickers',5,200,20);
    txtlib.Text := confiserie.GetNom();
    end;

    procedure TForm1.mmsClick(Sender: TObject);
    begin
    //txtlib.Text :=
    end;

    procedure TForm1.kikatClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    //txtlib.Text :=
    end;

    procedure TForm1.twixClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    //txtlib.Text :=
    end;

    procedure TForm1.lionClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    //txtlib.Text :=
    end;

    procedure TForm1.pepsiClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    //txtlib.Text :=
    end;

    procedure TForm1.fantaClick(Sender: TObject);
    begin
    //txtproduit.Text := tabprod[1].prix ;
    //txtlib.Text :=
    end;


    procedure TForm1.cocacolaClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    //txtlib.Text :=
    end;

    procedure TForm1.oranginaClick(Sender: TObject);
    begin
    //txtproduit.Text :=
    //txtlib.Text :=
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    distrib.Create();
    end;

    end.


    Je me retrouve avec une (des :colere2: ) erreur(s) qui me dit :

    [Erreur] classe.pas(63): E2037 La déclaration de 'Create' diffère de la déclaration précédente


    C'est à partir de la première ligne de l'implémentation vous conprenez pourquoi?
    • Partager sur Facebook
    • Partager sur Twitter
      15 décembre 2006 à 19:36:50

      l'erreur est hyper explicite.
      le constructeur de RailProduits est défini par :

      Citation : pascal

      constructor Create(lenom:string; leprix:double; lenombre:integer;

      lenombreMax:integer);
      alors que son implémentation est définie par :

      Citation : pascal

      Constructor RailProduits.Create(lenom : string; leprix: double; lenombre : integer );


      il manque le paramètre "lenombremax" dans l'implémentation
      • Partager sur Facebook
      • Partager sur Twitter

      [Pascal-Delphi]Différentes erreurs

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown