Création de classe

Résolu
Signaler
Messages postés
45
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
13 mars 2009
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
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

Messages postés
45
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
13 mars 2009

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
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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)
Messages postés
45
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
13 mars 2009

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)