PureBasic
et la Programmation Orientée Objet
Optimisations
Les paragraphes qui suivent, traitent de considérations possibles
à adopter afin d'améliorer, lors de l'exécution du
programme, les performances de notre approche Orientée Objet.
Optimisation:
Accesseurs et aux Modifieurs:
Si on est amené à faire de nombreux appels aux Accesseurs
et aux Modifieurs, cela revient à faire de nombreux appels de fonction,
d'où une perte de performance.
Pour ceux qui sont en quête de performance, il y a deux possibilités
pour accélérer le processus :
Tous deux consistent à jumeler un pointeur à l'objet instancié,
la deuxième solution étant un habillage de la première.
Première solution :
Le pointeur en question sera typé de la Structure de la Classe.
Ainsi pour un objet Rect de la Classe Rectangle1, nous pouvons écrire
:
Rect.Rect = New_Rect()
*Rect.Rectangle1 = Rect
|
On accède ainsi à l'attribut var2 en écrivant :
Il est alors possible de le lire comme de le modifier.
C'est la solution de loin la plus simple à mettre en uvre.
Deuxième solution :
La première solution demande à travailler avec deux éléments
de type différents: Rect et *Rect.
Cette deuxième solution, propose de réunir ces deux éléments
dans un StructureUnion.
Structure Rect_
StructureUnion
Mthds.Rect
*Mbers.Rectangle1
EndStructureUnion
EndStructure
|
Créer un objet de Classe Rectangle1, reviendra à déclarer
l'objet grâce à cette nouvelle Structure.
En modifiant en conséquence le constructeur, cela donne :
Avec,
Procedure New_Rect1(*Instance.Rect_,
x1.l, x2.l, y1.l, y2.l)
Shared Mthds_Rect1
*Rect.Rectangle1 = AllocateMemory(SizeOf(Rectangle1))
*Rect \Methodes = @Mthds_Rect1
Init_Mbers_Rect1(*Rect, x1,
x2, y1, y2)
*Instance\Mthds = *Rect
EndProcedure
|
On accède à la méthode Dessiner()
de l'objet en écrivant :
On accède à l'attribut var2 en écrivant :
Cette deuxième solution a pour avantage de ne disposer que d'un
seul élément que l'on peut confondre avec un objet dont
tous les attributs sont accessibles.
On conserve une notation Objet, bien qu'elle présente un niveau
de champs supplémentaire.
L'inconvénient porte essentiellement sur le fait qu'il faut
entretenir une nouvelle structure au sein de la Classe.
[1-2-3-4-5-6-7-8-9]
Retour en haut de page
|