Création, instanciation et destruction d'objets
Remonter à Utilisation du modèle objet - Index
La plupart des objets que vous utilisez dans le concepteur de fiche, comme les boutons ou les zones de saisie, apparaissent à la conception et à l'exécution. Certains, comme les boîtes de dialogue standard, apparaissent uniquement à l'exécution. D'autres, comme les composants timer ou source de données, n'ont pas de représentation visuelle dans l'application à l'exécution.
Vous pouvez être amené à créer vos propres classes. Vous pouvez, par exemple, créer une classe TEmployee contenant les propriétés Name, Title et HourlyPayRate. Vous pouvez ensuite lui ajouter la méthode CalculatePay qui utilise les données du champ HourlyPayRate pour calculer le montant de la paye. La déclaration du type TEmployee peut prendre la forme suivante :
type TEmployee = class(TObject) private FName: string; FTitle: string; FHourlyPayRate: Double; public property Name: string read FName write FName; property Title: string read FTitle write FTitle; property HourlyPayRate: Double read FHourlyPayRate write FHourlyPayRate; function CalculatePay: Double; end;
Outre les champs, propriétés et méthodes que vous avez définis, TEmployee hérite de toutes les méthodes de TObject. Vous pouvez placer une déclaration de type comme celle-ci dans la partie interface ou implémentation d'une unité, puis créer des instances de la nouvelle classe en appelant la méthode Create que TEmployee hérite de TObject :
var Employee: TEmployee; begin Employee := TEmployee.Create; end;
La méthode Create est appelée un constructeur. Elle alloue la mémoire pour un objet nouvellement instancié et renvoie une référence sur l'objet.
Les composants d'une fiche sont créés et détruits automatiquement. Toutefois, si vous écrivez votre propre code pour instancier des objets, vous êtes responsable de leur libération. Chaque objet hérite à partir de TObject d'une méthode Destroy (appelée un destructeur). Néanmoins, pour détruire un objet, vous devez toujours appeler la méthode Free (également héritée de TObject) car Free cherche une référence nil avant d'appeler Destroy. Par exemple,
Employee.Free;
détruit l'objet Employee et libère sa mémoire.