PureBasic et la Programmation Orientée Objet

Annexes

 

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 :

*Rect\var2

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 :

New_Rect(@Rect.Rect_)

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 :

Rect\Mthds\Dessiner()

On accède à l'attribut var2 en écrivant :

Rect\Mbers\var2

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.

Sommaire

  [1-2-3-4-5-6-7-8-9]

Retour en haut de page