DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / POO (Programmation Orientée Objet)
  • Présentation d'un objet
  • Syntaxe de déclaration / d'instanciation d'un objet
  • Déclaration/instanciation d'un objet
  • Déclaration / instanciation d'un objet Null
  • Remarque : Objet en cours
  • Membres et méthodes
  • Durée de vie d'un objet
  • Référence sur un objet local
  • Renvoyer un objet
  • Objets dans les boucles
  • Libération d'objet
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Instanciation d'un objet
Présentation d'un objet
Pour accéder à une classe, il faut déclarer l'objet comme étant de la classe à manipuler, on parle d' instanciation d'un objet.
Une instance est un objet qui appartient à une classe donnée.
Pour manipuler un objet, il faut :
  1. Décrire la classe.
  2. Instancier l'objet.
Un objet peut être passé en paramètre à une fonction ou à une procédure.
Remarque : Il est possible d'instancier dynamiquement un objet à une classe. La mise en oeuvre du polymorphisme requiert l'instanciation dynamique. Pour plus de détails, consultez Instanciation dynamique.
Exemple d'objet : "FichierSource" est un objet de la classe "Fichier". Pour cet objet, il est possible de manipuler les membres "Nom", "Extension", etc.
FichierSource est un objet Fichier

FichierSource est un Fichier
Syntaxe de déclaration / d'instanciation d'un objet

Déclaration/instanciation d'un objet

<NomObjet> est [un] [objet] <Nom Classe> ([<Paramètres>])
Détail de la syntaxe
<NomObjet>
Nom identifiant l'instance de la classe.
<Nom Classe>
Nom identifiant la classe, défini lors de la création de la classe sous l'éditeur de code.
<Paramètres>
Paramètres optionnels du constructeur. Pour plus de détails, consultez Méthode constructeur.

Déclaration / instanciation d'un objet Null

<NomObjet> est [un] [objet] <Nom Classe> ([<Paramètres>]) = NULL
Cette syntaxe permet de déclarer un objet sans l'instancier. Dans ce cas :
  • l'opérateur <- permet de prendre une référence sur l'objet.
  • la variable déclarée se comporte comme si la déclaration était non dynamique : l'opérateur = effectue une copie des membres.
  • l'objet manipulé peut être renvoyé comme valeur de retour de la procédure ou de la méthode.
  • dans certains cas avancés, l'objet manipulé peut être détruit pour anticiper la destruction automatique.

Remarque : Objet en cours

Le mot-clé Objet peut également être utilisé pour désigner l'objet en cours.
Il est également possible d'utiliser le mot-clé This pour accéder à l'objet en cours.

Membres et méthodes

Pour plus de détails sur les membres et les méthodes, consultez Utilisation d'un objet.
Durée de vie d'un objet

Référence sur un objet local

L'objet est créé lors de sa déclaration. Par défaut, l'objet est local.
Les objets locaux ne sont pas automatiquement détruits à la fin de l'exécution du traitement. Seule la référence locale est libérée.
Ainsi, si une autre référence a été prise sur l'objet, l'objet ne sera pas détruit lors de la libération de la référence locale.
Exemple :
// Code de déclaration des globales
gpo est Classe1 dynamique
gTab est un tableau de Classe1 dynamique

// Code quelconque
o1, o2, o3 sont Classe1
gpo1 = o1
Ajoute(gTab, o2)

// A la fin du traitement
// o1 n'est pas détruit car il est référencé par la variable globale gpo
// o2 est pas détruit car il a Ã©té ajouté au tableau gTab
// o3 est détruit car il n'y a que la référence locale

Renvoyer un objet

Il est possible de renvoyer un objet manipulé par une variable locale dynamique ou non dynamique.
Remarque : Dans les versions précédentes, il était possible uniquement de renvoyer un objet manipulé par une variable locale dynamique.

Objets dans les boucles

Dans une boucle, il est possible de manipuler des objets par des variables locales non dynamiques et sans allocation explicite.
Les objets déclarés dans une boucle sont réalloués à chaque itération de la boucle et la référence sur l'objet de l'itération précédente est libérée :
  • si aucune autre référence n'a été prise, l'objet est détruit.
  • si une référence a été prise (variable globale, ajout dans un tableau, ...), l'objet n'est pas détruit.
Exemple :
// on construit le tableau
t est un tableau de Classe1 dynamique
POUR i = 1 Ã€ 10
// on crée un objet correspondant Ã  l'indice
o est une Classe (x)
o.m_nIndice = i
// on ajoute l'objet dans le tableau
Ajoute(t,o)
FIN

Libération d'objet

Les objets manipulés par des variables locales non dynamiques peuvent être détruits explicitement avec le mot-clé LIBERER pour anticiper la destruction automatique.
Remarque : Cette syntaxe est une syntaxe avancée à n'utiliser que dans des cas très particuliers. Dans la majorité des cas, la destruction est automatique.
Rappel : De manière générale, l'utilisation du mot-clé LIBERER est inutile. Le WLangage détruit automatiquement les objets qui ne sont plus utilisés par aucune variable. Les cas d'utilisation les plus courants sont :
  • destruction d'une série d'objets qui se référencent de manière cyclique
  • libération anticipée de ressources utilisées par l'instance (sockets, fichiers, ...) via l'exécution du destructeur.
AndroidJava Cas particulier en Java/Android
La notion de destructeur n'existe pas en Java/Android. Le code situé dans le destructeur d'une classe ne sera par conséquent jamais exécuté.
Un objet est libéré par le ramasse-miette (garbage collector) lorsqu'il n'est plus référencé dans l'application. Le moment où intervient cette libération n'est pas prévisible.
Pour forcer la libération d'un objet, il est possible de l'affecter à NULL ou d'utiliser l'instruction Libérer.
Version minimum requise
  • Version 14
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale