Création de classe

Résolu
obitskater Messages postés 45 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 13 mars 2009 - 30 mai 2007 à 13:03
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 30 mai 2007 à 17:02
Bonjour chers compères développeurs.

Voilà, j'ai un petit problème.
Il y a peu, j'ai créé un programme d'exercice de verbes irréguliers en anglais que je compte présenter dans le cadre de mes PTI (pratiques des techniques informatiques) de mon BTS IG.

Ce programme tourne trés bien, mais pour respecter les contraintes de cette épreuve il faut que je le présente en langage objet, c'est pourquoi j'ai décidé de refondre mon code pour créer certaines classes que j'utiliserai (telle qu'une classe "verbe" qui gère toutes les procédures et fonctions propres aux verbes irréguliers).
C'est là que mon problème se pose, comment créer une nouvelle classe dans mon unit? Que ce soit aussi bien au niveau de la déclaration des méthodes publiques et privées, ainsi que où je développe toutes ces méthodes.

Merci d'avance.

3 réponses

obitskater Messages postés 45 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 13 mars 2009
30 mai 2007 à 14:36
Ok autant pour moi, j'avais oublié dans implementation au niveau de la déclaration de la procedure init, il fallait que je mette procedure verbe.init();

Autant pour moi
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
30 mai 2007 à 17:02
quand tu crée un classe, un objet, les methode de cet objet/classe doivent etre implementer de la sorte :

interface

type
  TVerbe = class(TObject)
  private
    procedure MethodePrivée;

    procedure MethodePrivéeSurchargée; override;
  protected
    procedure MethodeProtégée;

    procedure MethodeProtégéeSurchargée; override;
  public
    procedure MethodePublique;

    procedure MethodePubliqueSurchargée; override;
  end;
  

une fois que cela est fait, place ton curseur de souris sur "TVerbe" puis clique souris droit > Completer la classe sous le curseur
Delphi vas crée automatiquement les methodes (procedure, fonction) declarée dans l'objet.
soit :

implementation

procedure TVerbe.MethodePrivée;
begin

end;

procedure TVerbe.MethodePrivéeSurchargée;
begin
  inherited;


end;

procedure TVerbe.MethodeProtégée;
begin

end;

procedure TVerbe.MethodeProtégéeSurchargée;
begin
  inherited;


end;

procedure TVerbe.MethodePublique;
begin

end;

procedure TVerbe.MethodePubliqueSurchargée;
begin
  inherited;


end;

remarque bien l'implementation des methodes, elles commencent toujours par le nom de la classe suivie du nom de la methode.

[procedure/function] ClassName.MethodName [(arguments) : return];

ici ta classe TVerbe doit ressembler a cela :

unit ClssVerbe;

interface

uses
  // on ne declare pas d'unités inutile
  Windows, SysUtils, Classes;

type
  TVerb = class(TObject)
  private
    // les variables privées
    fFrench  : string;
    fEnglish : string;

  public
    // les propriétés
    property VerbFrench : string read fFrench; // Lecture seule
    property VerbEnglish: string read fEnglish write fEnglish; // Lecture et ecriture

    // Les constructeurs (toujours publique)
    constructor Create; overload;
    constructor Create(const VerbFr, VerbEn : string); overload;

    // Les methodes
   procedure Test;
  end;

implementation

// implementation de notre classe :

constructor TVerb.Create;
begin
  // constructeur principal de la classe, contient l'initialisation vitale de la classe.
  fFrench := '';
  fEnglish:= '';
end;

constructor TVerb.Create(const VerbFr, VerbEn : string);
begin
  // ce constructeur etant un constructeur secondaire, on appel
  // le constructeur principal de notre classe (constructeur par default).
  // cela evite de recopier inutiliment du code
  Self.Create;

  fFrench := VerbFr;
  fEnglish:= VerbEn;
end;

procedure TVerb.Test;
begin
  // une routine de test
end;

end.

<hr size="2" width="100%" />Croc (click me)
3
obitskater Messages postés 45 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 13 mars 2009
30 mai 2007 à 14:25
Bon merci bien pour cette source bien utile mais voilà j'ai un petit souci: voici une partie de mon code où je declare mon nouvel objet:

unit ClasseVerbe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ValEdit, StdCtrls, Buttons, ExtCtrls, jpeg;

type
  Verbe = class(TObject)
  private
    francais : string;
    preterit : string;

  public
    procedure init();

end;

implementation

procedure init();
begin
 showmessage('hello'); //Ceci n'est qu'un test.
end;

end.

Mais quand je compile j'ai un message d'erreur qui me dit :
[Error] ClasseVerbe.pas(17): Unsatisfied forward or external declaration: 'Verbe.init' (au niveau de la ligne en rouge)
0
Rejoignez-nous