PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • 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 WatchCatalystUniversal Windows 10 AppWindows Mobile
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
Versions 17 et supérieures
AndroidUniversal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications Android et Windows Phone.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone et iPad.
Nouveauté 17
AndroidUniversal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications Android et Windows Phone.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone et iPad.
AndroidUniversal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications Android et Windows Phone.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone et iPad.
Versions 21 et supérieures
Universal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
Apple Watch Cette fonctionnalité est disponible en mode Apple Watch.
Nouveauté 21
Universal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
Apple Watch Cette fonctionnalité est disponible en mode Apple Watch.
Universal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
Apple Watch Cette fonctionnalité est disponible en mode Apple Watch.
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.
Versions 24 et supérieures
Il est également possible d'utiliser le mot-clé This pour accéder à l'objet en cours.
Nouveauté 24
Il est également possible d'utiliser le mot-clé This pour accéder à 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 A 10
       // on crée un objet correspondant à l'indice
        o est 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