Question méthodes et propriétés

Plus d'informations
il y a 16 ans 1 mois #6028 par P Beranger
Bonjour,

Une question certainement simple pour les pros...j'ai lu pas mal de documents sur les objets, méthodes et propriétés, et je pensais avoir compris, mais, par exemple:
J'ai un utilisateur AD (prénom:test,nom:test, ville: Paris). Je récupère la propriété City de cet utilisateur:

$ad_users=Get-User |where-object {$_.lastname -eq \"test\"}
$ad_users.City
Paris

...je récupère bien Paris, pas de pb, car City est un membre propriété de l'objet $ad_users

mais si à la place de $ad_users.City je mets $ad_users.get_City() je récupère également Paris, alors que get_City() est un membre méthode de mon objet !!!!!
Ou est la différence entre .City et .get_City() ???
J'avoue y perdre mon .....powershell

Merci par avance
Phil

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 mois #6029 par Laurent Dardenne
Salut,
wayat91 écrit:

...je récupère bien Paris, pas de pb, car City est un membre propriété de l'objet $ad_users

C'est une question de terminologie, un objet contient des membres, mais chacun de ces membres sont \"catégorisés\".
wayat91 écrit:

alors que get_City() est un membre méthode de mon objet

Une propriété est une des catégories citée précédemment.
Avec un membre de type, i.e. de la classe, string l'accés est \"direct\".
Avec une propriété on précise des accesseurs Get et Set qui sont des méthodes. Ils permettent de déclarer un champ avec, si je puis dire, un accès \"indirect\".
Par exemple, on peut ainsi placer des contrôles lors d'une affectation. Ce qu'il n'est pas possible de faire avec un membre à accés direct.
Ou encore déclarer une propriété en lecture seule, dans ce cas on déclare l'accesseur Get, mais l'accesseur Set.

L'information associée à une propriété peut être le résultat d'un traitement ou être un membre d'un autre objet d'accés privé. C'est une notion de conception utilisée en Programmation Orienté Objet.

Sous PowerShell une propriété peut aussi être vue comme un raccourci d'écriture, mais ce n'est pas sa raison d'être.


wayat91 écrit:

J'avoue y perdre mon .....powershell

Effectivement Get-Member renvoi les accesseurs, mais il fait ce qu'on lui demande, il renvoi la propriété et ces accesseurs. Mais là c'est du domaine de la POO sous dotNet :-)

Pour finir le cmdlet Add-Member permet de créer une propriété sur un objet personnalisé :
[code:1]
$Datas = 1|Select Nom
$Fullpath=\"C:\Temp\"
$Datas=$Datas|add-member Scriptproperty DataFile -value {\"$Fullpath\"} -SecondValue {Throw \"DataFile is a read only property.\"} -pass
$Datas.DataFile
#C:\Temp
$Datas.DataFile=\"C:\Affectation Impossible\"

$Datas.PsObject.Members|Where {$_.Name -eq \"DataFile\"}
#GetterScript : \"$Fullpath\"
#SetterScript : Throw \"DataFile is a read only property.\"
#...
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 26/01/10 15:12

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 mois #6031 par P Beranger
Réponse de P Beranger sur le sujet Re:méthodes et propriétés
Bonjour,

et merci pour ces explications. c'est un peu plus clair. Avant de poster, j'étais en train de relire
\&quot;LaNotionDobjetSousPowerShell.pdf\&quot; d'un certain.... Laurent Dardenne, je ne pouvais tomber mieux!!

Merci
Phil

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 mois #6032 par Laurent Dardenne
wayat91 écrit:

Avant de poster, j'étais en train de relire
\&quot;LaNotionDobjetSousPowerShell.pdf\&quot;

:lol:
Je tâcherais d'y ajouter une section sur ce point.
Si tu juges qu'il y a d'autres points qui manquent dans ce document, n'hésites pas à me le signaler dans ce post.
Bonne lecture :)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.043 secondes
Propulsé par Kunena