Définition de nouvelles classes (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation du modèle objet - Index

Bien qu'il existe de nombreuses classes dans la hiérarchie d'objets, il vous faudra probablement en créer de nouvelles si vous écrivez des programmes orientés objet. Les classes que vous écrivez doivent descendre de TObject ou de l'un de ses descendants.

L'intérêt de l'utilisation des classes réside dans le fait que vous pouvez créer les nouvelles classes en les faisant dériver des classes existantes. Chaque classe hérite des champs et des méthodes de son parent et de ses classes ancêtres. Vous pouvez aussi déclarer des méthodes de la nouvelle classe qui surchargent les méthodes héritées, introduisant ainsi un nouveau comportement plus spécialisé.

La syntaxe générale d'une classe dérivée est la suivante :

Type
  TClassName = Class (TParentClass)
    public
      {champs publics}
      {méthodes publiques}
    protected
      {champs protégés}
      {méthodes protégées}
    private
      {champs privés}
      {méthodes privées}
end;

Si aucun nom de classe parent n'est spécifié, la classe hérite directement de TObject. TObject ne définit que quelques méthodes, ainsi qu'un constructeur et un destructeur de base.

Pour définir une classe :

  1. Dans l'EDI, commencez par ouvrir un projet puis choisissez Fichier > Nouveau > Unité afin de créer la nouvelle unité où vous pourrez définir la nouvelle classe.
  2. Ajoutez la clause uses et la section type à la section interface.
  3. Dans la section type, écrivez la déclaration de la classe. Vous devez déclarer toutes les variables membres, toutes les propriétés, toutes les méthodes et tous les événements.
TMyClass = class; {Descend implicitement de TObject}
public
.
.
.
private
.
.
.
published {Si dérivé de TPersistent ou d'un niveau inférieur}
.
.
.

Si vous voulez que la classe dérive d'une classe particulière, vous devez indiquer cette classe dans la définition :

TMyClass = class(TParentClass); {Descend de TParentClass}
  1. Certaines versions de l'EDI comprennent une fonctionnalité appelée achèvement de classe qui simplifie le travail de définition et d'implémentation des nouvelles classes en générant le squelette du code nécessaire aux membres de classe que vous déclarez. Si vous bénéficiez de l'achèvement de code, appelez-le pour finir la déclaration de classe : placez le curseur à l'intérieur de la définition d'une méthode dans la section d'interface et appuyez sur Ctrl+Shift+C (ou cliquez avec le bouton droit et sélectionnez Compléter la classe sous le curseur). Toutes les déclarations de propriétés inachevées sont complétées et pour toutes les méthodes nécessitant une implémentation, des méthodes vides sont ajoutées à la section d'implémentation. Si vous ne bénéficiez pas de l'achèvement de classe, vous devez écrire le code vous-même, en complétant les déclarations de propriétés et en écrivant les méthodes.Dans le cas de l'exemple précédent, si vous bénéficiez de l'achèvement de classe, des spécificateurs de lecture et d'écriture sont ajoutés à votre déclaration, avec les champs ou les méthodes de support :
type TMyButton = class(TButton)
  property Size: Integer;
  procedure DoSomething;
end;

Le code suivant est également ajouté à la section d'implémentation de l'unité.

type TMyButton = class(TButton)
  property Size: Integer read FSize write SetSize;
  procedure DoSomething;
private
  FSize: Integer;
  procedure SetSize(const Value: Integer);
  1. Remplissez les méthodes. Par exemple, pour faire retentir un signal sonore lorsque vous appelez la méthode DoSomething, ajoutez un Beep entre begin et end.
{ TMyButton }
procedure TMyButton.DoSomething;
begin
end;
procedure TMyButton.SetSize(const Value: Integer);
begin
FSize := Value;
end;

Remarquez que le bouton émet également un signal sonore lorsque vous appelez SetSize pour modifier sa taille.

Voir aussi