Gambas 3/Gambas3LeLangage/L'orienté objet avec Gambas/Le constructeur et le destructeur

Le constructeur et le destructeur.
Vous pouvez exécuter des actions juste après la création en mémoire de votre objet. Pour cela, utilisez la méthode spéciale codice_1 dans le code source de votre classe comme suit :
' Gambas class file
' Audi
' constructeur
Public Sub _new()
 Print "Audi created! "
End
' destructeur - pour l'exemple
' (On n'en a pas besoin car 
' Gambas fait le boulot pour nous)
Public Sub _free()
 Print "Audi will be deleted very soon! "
End
La méthode codice_2 est à utiliser avec précaution. Généralement, on n'en a pas besoin car Gambas implémente un compteur de référence et supprime les objets devenus inutiles au fur et à mesure de l'exécution du programme.

Gambas 3/Gambas3LeLangage/L'orienté objet avec Gambas/Les méthodes et les variables statiques

Les méthodes et les variables statiques.
Le mot-clé "Static" indique que la portée de la méthode ou de la variable est générale à toute la classe. (et pas au seul objet)
Variables statiques.
Une variable statique est une variable stockée au niveau de la classe. Cette variable est partagée par tous les objets instanciés étant du type de cette classe. Tous les objets de cette classe peuvent y accéder. 
L'exemple typique est le compteur d'instances créées. 
' Gambas class file
' Thing
Property Name As String
Static Private $iInstancesCount As Integer
Private $name As String
Public Sub _new()
 $iInstancesCount += 1
End
Public Sub _free()
 $iInstancesCount -= 1
End
Static Public Function GetInstances() As Integer
 Return $iInstancesCount
End
Static Public Function Create(ChoseName As String) As Thing
 Dim c As New Thing
 c.Name = ChoseName
 Return c 
End
Private Function Name_Read() As String
 Return $name
End
Private Sub Name_Write(Value As String)
 $name = Value
End
' Gambas module file
' Main
Public Sub Main()
 Dim c As Thing
 Dim d As Thing
 Dim e As Thing
 Print Thing.GetInstances()
 Print "Nous créons présentement 3 instances de Thing ... "
 c = Thing.Create("test1")
 d = Thing.Create("test2")
 e = Thing.Create("test3") 
 Print "Le compte est le suivant: " & Thing.GetInstances()
 Print "Nous supprimons présentement 2 instances de Thing ... "
 e = Null
 d = Null
 Print "Le compte est le suivant: " & Thing.GetInstances()
 Print "Bien que vous ne le voyez pas, à la fin du programme, "
 Print "La dernière des instances sera également supprimée. "
End
Pour accéder au variables statiques, vous devriez utiliser des méthodes statiques.
Méthodes statiques.
Un objet a une instance qui lui est propre. Si j'ai un objet appelé "$titine" typé Voiture, $titine.Avance() agira au niveau de l'objet. 
 $titine.Avance()
Seule la voiture nommée $titine avancera. Toutes les autres voitures ne seront pas concernées. 
Un jour ou l'autre, vous voudrez créer une méthode qui concernera les voitures en général. 
Imaginons ceci : nous voulons définir une méthode Créer() qui génère une nouvelle instance de Voiture selon des modèles prédéfinis. Cette méthode sera appelée sur la classe en général et non sur une instance précise comme ceci : 
 Voiture.Créer("modèle formule 1")
Vous l'aurez deviné, Static est le mot-clé qui définit une méthode au niveau de la classe (et non au niveau de chaque objet). 
Dans la classe Voiture, la méthode Avance() est une méthode qui agit sur une instance d'un objet de type Voiture. 
 ' agit sur une instance ... 
 Public Sub Avance()
La méthode Créer(), elle, agit sans avoir besoin d'une instance. Elle agit au niveau de la classe : 
 ' agit sur la classe (le moule) ... 
 Static Public Function Créer() as Voiture
Quiz.
Static est un mot-clé que vous n'employez que dans les classes. Pourquoi ?
Parce qu'un module est statique par définition. Vous n'avez pas à le spécifier une fois de plus dans le code.
Toutes les méthodes et toutes les variables appartenant à un module sont statiques.
On le voit lors de l'invocation de la méthode :
 Module1.FaitCeci()
Bravo pour l'acquisition de ces notions importantes !

Neurosciences/Apoptose et neurotrophines