Déclaration de propriété
PROPERTY [ READ ] Identificateur AS TypeDeDonnée
Déclare une propriété de classe.
Si le mot-clé
READ
est spécifié, alors la propriété sera en lecture seule.
Une fois déclarée, la propriété doit être mise en oeuvre : vous devez écrire une fonction pour lire la propriété et, si elle n'est pas en lecture seule, une fonction pour écrire la propriété.
Le nom de la fonction de lecture est formé du nom de la propriété suivi d'un caractère de soulignement et du mot
Read
. Cette fonction ne prend pas d'argument et doit renvoyer une donnée dont le type est le même que celui de la propriété.
Le nom de la fonction d'écriture est formé du nom de la propriété suivi d'un caractère de soulignement et du mot
Write
. Cette fonction est une procédure qui ne renvoie rien et qui ne prend qu'un seul argument dont le type est le même que celui de la propriété.
Exemple
PROPERTY Enabled AS Boolean
PROPERTY READ Handle AS Integer
...
PRIVATE $bEnabled AS Boolean
PRIVATE $iHandle AS Integer
' Implémente la propriété Enabled
FUNCTION Enabled_Read() AS Boolean
RETURN $bEnabled
END
SUB Enabled_Write(bEnabled AS Boolean)
$bEnabled = bEnabled
UpdateEverything
END
' Implémente la propriété Handle
FUNCTION Handle_Read() AS Integer
RETURN $iHandle
END
Synonymes de propriété
PROPERTY [ READ ] Identifier [ , Synonyme1 [ , Synonyme2 ... ] ] AS TypeDeDonnée
Depuis 3.1
C'est possible de déclarer jusqu'à trois synonymes des propriétés déclarées en utilisant la seconde syntaxe.
Raccourci de propriété
PROPERTY [ READ ] Identificateur AS TypeDeDonnée USE Variable
Depuis 3.14
Cette syntaxe déclare
Variable, une variable privée globale, qui sera utilisée pour implémenter la propriété
Identificateur.
Property Name As String Use $sName
est l'équivalent exact de :
Property Name As String
Private $sName As String
Private Sub Name_Read() As String
Return $sName
End
Private Sub Name_Write(Value As String)
$sName = Value
End
Si besoin, vous pouvez ignorer
Read
ou
Write
ou les deux méthodes de propriété par défaut :
Property Name As String Use $sName
Private Sub Name_Write(Value As String)
If Not Value Then Error.Raise("Nom incorrect")
$sName = Value
End
Voir aussi