Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Dans le message news: ,
Machine s'est ainsi exprimé:Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Si, on peut parfaitement créer des tableaux d'objets.
As-tu essayé directement la syntaxe "set tab(0)=new maclasse" ?
Car l'affectation directe "tab(0)=monobj" me choque un peu pour un objet.
(mais je me trompe peut-être, je n'ai pas approfondi)
Je le pratique abondamment dans mon script "SHOWADM"'
http://www.bellamyjc.org/fr/vbsdownload.html#showadm
http://www.bellamyjc.org/fr/strategie.html#SHOWADM
Tu peux t'en inspirer si tu veux..
P.ex. à la ligne 1210 du script :
je définis une classe "Policy", qui a parmi ses propriétés un tableau
d'objets "Public TabPart()" (de classe "Part")
et une méthode "AddPart" permet d'ajouter des objets à ce tableau :
Public Function AddPart(CurLib,CurType)
nPart=nPart+1
redim Preserve TabPart(nPart)
set TabPart(nPart-1)=new Part
TabPart(nPart-1).LibPart=CurLib
TabPart(nPart-1).TypePart=CurType
Set AddPart=TabPart(nPart-1)
End Function
(NB: et çà marche !!! ;-) )
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Dans le message news:44FD4134-B4C5-4984-BFE9-359ACED4DE8B@microsoft.com ,
Machine <Machine@discussions.microsoft.com> s'est ainsi exprimé:
Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Si, on peut parfaitement créer des tableaux d'objets.
As-tu essayé directement la syntaxe "set tab(0)=new maclasse" ?
Car l'affectation directe "tab(0)=monobj" me choque un peu pour un objet.
(mais je me trompe peut-être, je n'ai pas approfondi)
Je le pratique abondamment dans mon script "SHOWADM"'
http://www.bellamyjc.org/fr/vbsdownload.html#showadm
http://www.bellamyjc.org/fr/strategie.html#SHOWADM
Tu peux t'en inspirer si tu veux..
P.ex. à la ligne 1210 du script :
je définis une classe "Policy", qui a parmi ses propriétés un tableau
d'objets "Public TabPart()" (de classe "Part")
et une méthode "AddPart" permet d'ajouter des objets à ce tableau :
Public Function AddPart(CurLib,CurType)
nPart=nPart+1
redim Preserve TabPart(nPart)
set TabPart(nPart-1)=new Part
TabPart(nPart-1).LibPart=CurLib
TabPart(nPart-1).TypePart=CurType
Set AddPart=TabPart(nPart-1)
End Function
(NB: et çà marche !!! ;-) )
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Dans le message news: ,
Machine s'est ainsi exprimé:Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Si, on peut parfaitement créer des tableaux d'objets.
As-tu essayé directement la syntaxe "set tab(0)=new maclasse" ?
Car l'affectation directe "tab(0)=monobj" me choque un peu pour un objet.
(mais je me trompe peut-être, je n'ai pas approfondi)
Je le pratique abondamment dans mon script "SHOWADM"'
http://www.bellamyjc.org/fr/vbsdownload.html#showadm
http://www.bellamyjc.org/fr/strategie.html#SHOWADM
Tu peux t'en inspirer si tu veux..
P.ex. à la ligne 1210 du script :
je définis une classe "Policy", qui a parmi ses propriétés un tableau
d'objets "Public TabPart()" (de classe "Part")
et une méthode "AddPart" permet d'ajouter des objets à ce tableau :
Public Function AddPart(CurLib,CurType)
nPart=nPart+1
redim Preserve TabPart(nPart)
set TabPart(nPart-1)=new Part
TabPart(nPart-1).LibPart=CurLib
TabPart(nPart-1).TypePart=CurType
Set AddPart=TabPart(nPart-1)
End Function
(NB: et çà marche !!! ;-) )
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Dans le message news: ,
Machine s'est ainsi exprimé:Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Si, on peut parfaitement créer des tableaux d'objets.
As-tu essayé directement la syntaxe "set tab(0)=new maclasse" ?
Car l'affectation directe "tab(0)=monobj" me choque un peu pour un objet.
(mais je me trompe peut-être, je n'ai pas approfondi)
Je le pratique abondamment dans mon script "SHOWADM"'
http://www.bellamyjc.org/fr/vbsdownload.html#showadm
http://www.bellamyjc.org/fr/strategie.html#SHOWADM
Tu peux t'en inspirer si tu veux..
P.ex. à la ligne 1210 du script :
je définis une classe "Policy", qui a parmi ses propriétés un tableau
d'objets "Public TabPart()" (de classe "Part")
et une méthode "AddPart" permet d'ajouter des objets à ce tableau :
Public Function AddPart(CurLib,CurType)
nPart=nPart+1
redim Preserve TabPart(nPart)
set TabPart(nPart-1)=new Part
TabPart(nPart-1).LibPart=CurLib
TabPart(nPart-1).TypePart=CurType
Set AddPart=TabPart(nPart-1)
End Function
(NB: et çà marche !!! ;-) )
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Dans le message news:44FD4134-B4C5-4984-BFE9-359ACED4DE8B@microsoft.com ,
Machine <Machine@discussions.microsoft.com> s'est ainsi exprimé:
Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Si, on peut parfaitement créer des tableaux d'objets.
As-tu essayé directement la syntaxe "set tab(0)=new maclasse" ?
Car l'affectation directe "tab(0)=monobj" me choque un peu pour un objet.
(mais je me trompe peut-être, je n'ai pas approfondi)
Je le pratique abondamment dans mon script "SHOWADM"'
http://www.bellamyjc.org/fr/vbsdownload.html#showadm
http://www.bellamyjc.org/fr/strategie.html#SHOWADM
Tu peux t'en inspirer si tu veux..
P.ex. à la ligne 1210 du script :
je définis une classe "Policy", qui a parmi ses propriétés un tableau
d'objets "Public TabPart()" (de classe "Part")
et une méthode "AddPart" permet d'ajouter des objets à ce tableau :
Public Function AddPart(CurLib,CurType)
nPart=nPart+1
redim Preserve TabPart(nPart)
set TabPart(nPart-1)=new Part
TabPart(nPart-1).LibPart=CurLib
TabPart(nPart-1).TypePart=CurType
Set AddPart=TabPart(nPart-1)
End Function
(NB: et çà marche !!! ;-) )
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Dans le message news: ,
Machine s'est ainsi exprimé:Bonjour,
Je cherche actuellement à créer un tableau qui contiendrait des
objets. Ces objets provenant d'une classe que j'ai moi même créée.
Cependant, il m'est impossible en vbs de faire ceci :
Dim tab(1)
set monobj=new maclasse
tab(0)=monobj
Apparement un tableau ne peut prendre qu'un type variant mais à ce
moment là est-il possible de faire une collection (un peu comme ce
que l'on retrouve quand on fait des interrogations wmi) ?
Si, on peut parfaitement créer des tableaux d'objets.
As-tu essayé directement la syntaxe "set tab(0)=new maclasse" ?
Car l'affectation directe "tab(0)=monobj" me choque un peu pour un objet.
(mais je me trompe peut-être, je n'ai pas approfondi)
Je le pratique abondamment dans mon script "SHOWADM"'
http://www.bellamyjc.org/fr/vbsdownload.html#showadm
http://www.bellamyjc.org/fr/strategie.html#SHOWADM
Tu peux t'en inspirer si tu veux..
P.ex. à la ligne 1210 du script :
je définis une classe "Policy", qui a parmi ses propriétés un tableau
d'objets "Public TabPart()" (de classe "Part")
et une méthode "AddPart" permet d'ajouter des objets à ce tableau :
Public Function AddPart(CurLib,CurType)
nPart=nPart+1
redim Preserve TabPart(nPart)
set TabPart(nPart-1)=new Part
TabPart(nPart-1).LibPart=CurLib
TabPart(nPart-1).TypePart=CurType
Set AddPart=TabPart(nPart-1)
End Function
(NB: et çà marche !!! ;-) )
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Merci jean claude. cette reponse corespond tout a fait a ce que je
cherche a faire,
par hazard tu aurais pas une doc assez bien faite sur les class car je
maitrise bien le vbs mais il me reste les class a maitriser.
Merci jean claude. cette reponse corespond tout a fait a ce que je
cherche a faire,
par hazard tu aurais pas une doc assez bien faite sur les class car je
maitrise bien le vbs mais il me reste les class a maitriser.
Merci jean claude. cette reponse corespond tout a fait a ce que je
cherche a faire,
par hazard tu aurais pas une doc assez bien faite sur les class car je
maitrise bien le vbs mais il me reste les class a maitriser.
Dans le message news: ,
Lord Mathius s'est ainsi exprimé:Merci jean claude. cette reponse corespond tout a fait a ce que je
cherche a faire,
par hazard tu aurais pas une doc assez bien faite sur les class car je
maitrise bien le vbs mais il me reste les class a maitriser.
Il n'y a pas grand chose à en dire !
class Nom_de_la_classe
Public une_propriété_publique
Public une_autre_propriété_publique
...
Private une_propriété_privée
Private une_autre_propriété_privée
...
Public Sub un_sous_programme_publique(p,q,r)
...
End Sub
Public Function une_fonction_publique(m,n)
...
End Function
...
Private Sub un_sous_programme_privé (a,b,c,d,e)
...
End Sub
...
Private Function une_fonction_privée(z)
...
End Function
...
end class
Et pour utiliser cette classe :
(les propriétés et méthodes privées ne sont utilisables qu'à l'intérieur
même de la classe)
.....
Set un_objet = new(Nom_de_la_classe)
un_objet.une_propriété_publique = "Glützenbaum"
un_objet.une_autre_propriété_publique89
....
toto=un_objet.une_fonction_publique(1515,"Marcel Grouchard")
....
Il n'y a rien de sorcier, magique ou insurmontable là dedans.
Il suffit d'être familiarisé un quart de pouïème de poil avec la
programmation orientée objet, c'est tout. ;-)
cf.:
http://www.bellamyjc.org/fr/vbsinstructions/vsstmclass.html
http://www.bellamyjc.org/fr/vbs/vtglossary.html
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Dans le message news:4549325A-A4ED-4F93-97E2-833004B6A0A6@microsoft.com ,
Lord Mathius <LordMathius@discussions.microsoft.com> s'est ainsi exprimé:
Merci jean claude. cette reponse corespond tout a fait a ce que je
cherche a faire,
par hazard tu aurais pas une doc assez bien faite sur les class car je
maitrise bien le vbs mais il me reste les class a maitriser.
Il n'y a pas grand chose à en dire !
class Nom_de_la_classe
Public une_propriété_publique
Public une_autre_propriété_publique
...
Private une_propriété_privée
Private une_autre_propriété_privée
...
Public Sub un_sous_programme_publique(p,q,r)
...
End Sub
Public Function une_fonction_publique(m,n)
...
End Function
...
Private Sub un_sous_programme_privé (a,b,c,d,e)
...
End Sub
...
Private Function une_fonction_privée(z)
...
End Function
...
end class
Et pour utiliser cette classe :
(les propriétés et méthodes privées ne sont utilisables qu'à l'intérieur
même de la classe)
.....
Set un_objet = new(Nom_de_la_classe)
un_objet.une_propriété_publique = "Glützenbaum"
un_objet.une_autre_propriété_publique89
....
toto=un_objet.une_fonction_publique(1515,"Marcel Grouchard")
....
Il n'y a rien de sorcier, magique ou insurmontable là dedans.
Il suffit d'être familiarisé un quart de pouïème de poil avec la
programmation orientée objet, c'est tout. ;-)
cf.:
http://www.bellamyjc.org/fr/vbsinstructions/vsstmclass.html
http://www.bellamyjc.org/fr/vbs/vtglossary.html
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Dans le message news: ,
Lord Mathius s'est ainsi exprimé:Merci jean claude. cette reponse corespond tout a fait a ce que je
cherche a faire,
par hazard tu aurais pas une doc assez bien faite sur les class car je
maitrise bien le vbs mais il me reste les class a maitriser.
Il n'y a pas grand chose à en dire !
class Nom_de_la_classe
Public une_propriété_publique
Public une_autre_propriété_publique
...
Private une_propriété_privée
Private une_autre_propriété_privée
...
Public Sub un_sous_programme_publique(p,q,r)
...
End Sub
Public Function une_fonction_publique(m,n)
...
End Function
...
Private Sub un_sous_programme_privé (a,b,c,d,e)
...
End Sub
...
Private Function une_fonction_privée(z)
...
End Function
...
end class
Et pour utiliser cette classe :
(les propriétés et méthodes privées ne sont utilisables qu'à l'intérieur
même de la classe)
.....
Set un_objet = new(Nom_de_la_classe)
un_objet.une_propriété_publique = "Glützenbaum"
un_objet.une_autre_propriété_publique89
....
toto=un_objet.une_fonction_publique(1515,"Marcel Grouchard")
....
Il n'y a rien de sorcier, magique ou insurmontable là dedans.
Il suffit d'être familiarisé un quart de pouïème de poil avec la
programmation orientée objet, c'est tout. ;-)
cf.:
http://www.bellamyjc.org/fr/vbsinstructions/vsstmclass.html
http://www.bellamyjc.org/fr/vbs/vtglossary.html
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Merci de tes info precieuse,
en fait j'ai reussi a pas mal maitriser les class mais il y a encore
un point que je comprend pas,
c'est quoi les
property get
property set
property let ?
ca j'arrive pas a le comprendre.
Merci de tes info precieuse,
en fait j'ai reussi a pas mal maitriser les class mais il y a encore
un point que je comprend pas,
c'est quoi les
property get
property set
property let ?
ca j'arrive pas a le comprendre.
Merci de tes info precieuse,
en fait j'ai reussi a pas mal maitriser les class mais il y a encore
un point que je comprend pas,
c'est quoi les
property get
property set
property let ?
ca j'arrive pas a le comprendre.
Dans le message news: ,
Lord Mathius s'est ainsi exprimé:Merci de tes info precieuse,
en fait j'ai reussi a pas mal maitriser les class mais il y a encore
un point que je comprend pas,
c'est quoi les
property get
property set
property let ?
ca j'arrive pas a le comprendre.
Les procedures "property xxxx" permettent d'accéder indirectement aux
propriétés privées d'une classe.
On peut certes utiliser des propriétés publiques (je le fais!), mais l'usage
de "property xxx" est "plus propre".
(valable aussi dans les autres langages de POO : Delphi, C++, ...)
Cela a l'avantage, également, :
- de "découpler" le nom externe (public)
du nom interne( privé) de la propriété concernée.
- de permettre des traitements internes des
valeurs affectées ou lues des propriétés.
property let
======== > sert à DÉFINIR la valeur d'une propriété SCALAIRE (= non objet)
Elle est appelée implicitement de l'extérieur par une
instruction d'affectation traditionnelle :
myobject.myproperty= xxxxx
Exemple :
class supertruc
private secret
public property Let DefineSecret(chaine)
if len(chaine)=0 then
err.raise vbObjetError+1,"Chaine vide affectée à
Secret","Erreur de classe"
end if
secret = chaine
end property
...
end class
On utilisera cette classe ainsi :
bidule=new(supertruc)
bidule.DefineSecret "007"
....
property set
======== > la même chose que "property let", mais
sert à DÉFINIR la valeur d'une propriété OBJET
Elle est appelée implicitement de l'extérieur par une
instruction d'affectation d'objet :
set myobject.myproperty= xxxxx
property get
======== > sert à OBTENIR la valeur d'une propriété SCALAIRE ou OBJET
Exemple récapitulatif (opérationnel, testé!) :
'--------------------------------------------
class supertruc
private secret
public property Let DefineSecret(chaine)
if len(chaine)=0 then
err.raise vbObjectError,"Erreur de classe","Chaine vide affectée à
Secret"
end if
secret = chaine
end property
public property Get LitSecret()
LitSecret=secret
end property
end class
'--------------------------------------------
class supermachin
private truc
public property Set init(objtruc)
set truc = objtruc
end property
public property Get LitTruc()
Set LitTruc=truc
end property
end class
'--------------------------------------------
set bidule=new supertruc
bidule.DefineSecret ="007"
set machin=new supermachin
set machin.init = bidule
wscript.echo machin.LitTruc.LitSecret
'--------------------------------------------
NB: dans mon exemple, afin de bien distinguer les opérations, j'ai choisit
des noms différents de procédures dans LET et GET , ou dans SET et GET .
Mais on peut très bien prendre le MÊME nom (c'est souvent le cas) pour la
lecture (GET) et pour l'écriture (LET ou SET)
P.ex. :
class supermachin
private truc
public property Set Letruc(objtruc)
set truc = objtruc
end property
public property Get LeTruc()
Set LeTruc=truc
end property
end class
le préfixe "public" ou "private" placé devant le mot-clef "property" sert,
comme on peut s'y attendre, à publier ou masquer la propriété en lecture
(GET) et/ou en écriture (LET/SET).
class supermachin
private truc
private property Set Letruc(objtruc)
set truc = objtruc
end property
public property Get LeTruc()
Set LeTruc=truc
end property
end class
ici , "LeTruc" est en lecture seule
class supermachin
private truc
public property Set Letruc(objtruc)
set truc = objtruc
end property
private property Get LeTruc()
Set LeTruc=truc
end property
end class
ici , "LeTruc" est en écriture seule
Une procédure "private property" à l'intérieur d'une classe ne peut donc
être utilisée qu'à l'intérieur de la classe.
NB: tout cela est beaucoup plus long à expliquer qu'à pratiquer !
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*
Dans le message news:A30913FF-02CF-4873-AE96-C93DD84EE1BA@microsoft.com ,
Lord Mathius <LordMathius@discussions.microsoft.com> s'est ainsi exprimé:
Merci de tes info precieuse,
en fait j'ai reussi a pas mal maitriser les class mais il y a encore
un point que je comprend pas,
c'est quoi les
property get
property set
property let ?
ca j'arrive pas a le comprendre.
Les procedures "property xxxx" permettent d'accéder indirectement aux
propriétés privées d'une classe.
On peut certes utiliser des propriétés publiques (je le fais!), mais l'usage
de "property xxx" est "plus propre".
(valable aussi dans les autres langages de POO : Delphi, C++, ...)
Cela a l'avantage, également, :
- de "découpler" le nom externe (public)
du nom interne( privé) de la propriété concernée.
- de permettre des traitements internes des
valeurs affectées ou lues des propriétés.
property let
======== > sert à DÉFINIR la valeur d'une propriété SCALAIRE (= non objet)
Elle est appelée implicitement de l'extérieur par une
instruction d'affectation traditionnelle :
myobject.myproperty= xxxxx
Exemple :
class supertruc
private secret
public property Let DefineSecret(chaine)
if len(chaine)=0 then
err.raise vbObjetError+1,"Chaine vide affectée à
Secret","Erreur de classe"
end if
secret = chaine
end property
...
end class
On utilisera cette classe ainsi :
bidule=new(supertruc)
bidule.DefineSecret "007"
....
property set
======== > la même chose que "property let", mais
sert à DÉFINIR la valeur d'une propriété OBJET
Elle est appelée implicitement de l'extérieur par une
instruction d'affectation d'objet :
set myobject.myproperty= xxxxx
property get
======== > sert à OBTENIR la valeur d'une propriété SCALAIRE ou OBJET
Exemple récapitulatif (opérationnel, testé!) :
'--------------------------------------------
class supertruc
private secret
public property Let DefineSecret(chaine)
if len(chaine)=0 then
err.raise vbObjectError,"Erreur de classe","Chaine vide affectée à
Secret"
end if
secret = chaine
end property
public property Get LitSecret()
LitSecret=secret
end property
end class
'--------------------------------------------
class supermachin
private truc
public property Set init(objtruc)
set truc = objtruc
end property
public property Get LitTruc()
Set LitTruc=truc
end property
end class
'--------------------------------------------
set bidule=new supertruc
bidule.DefineSecret ="007"
set machin=new supermachin
set machin.init = bidule
wscript.echo machin.LitTruc.LitSecret
'--------------------------------------------
NB: dans mon exemple, afin de bien distinguer les opérations, j'ai choisit
des noms différents de procédures dans LET et GET , ou dans SET et GET .
Mais on peut très bien prendre le MÊME nom (c'est souvent le cas) pour la
lecture (GET) et pour l'écriture (LET ou SET)
P.ex. :
class supermachin
private truc
public property Set Letruc(objtruc)
set truc = objtruc
end property
public property Get LeTruc()
Set LeTruc=truc
end property
end class
le préfixe "public" ou "private" placé devant le mot-clef "property" sert,
comme on peut s'y attendre, à publier ou masquer la propriété en lecture
(GET) et/ou en écriture (LET/SET).
class supermachin
private truc
private property Set Letruc(objtruc)
set truc = objtruc
end property
public property Get LeTruc()
Set LeTruc=truc
end property
end class
ici , "LeTruc" est en lecture seule
class supermachin
private truc
public property Set Letruc(objtruc)
set truc = objtruc
end property
private property Get LeTruc()
Set LeTruc=truc
end property
end class
ici , "LeTruc" est en écriture seule
Une procédure "private property" à l'intérieur d'une classe ne peut donc
être utilisée qu'à l'intérieur de la classe.
NB: tout cela est beaucoup plus long à expliquer qu'à pratiquer !
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Dans le message news: ,
Lord Mathius s'est ainsi exprimé:Merci de tes info precieuse,
en fait j'ai reussi a pas mal maitriser les class mais il y a encore
un point que je comprend pas,
c'est quoi les
property get
property set
property let ?
ca j'arrive pas a le comprendre.
Les procedures "property xxxx" permettent d'accéder indirectement aux
propriétés privées d'une classe.
On peut certes utiliser des propriétés publiques (je le fais!), mais l'usage
de "property xxx" est "plus propre".
(valable aussi dans les autres langages de POO : Delphi, C++, ...)
Cela a l'avantage, également, :
- de "découpler" le nom externe (public)
du nom interne( privé) de la propriété concernée.
- de permettre des traitements internes des
valeurs affectées ou lues des propriétés.
property let
======== > sert à DÉFINIR la valeur d'une propriété SCALAIRE (= non objet)
Elle est appelée implicitement de l'extérieur par une
instruction d'affectation traditionnelle :
myobject.myproperty= xxxxx
Exemple :
class supertruc
private secret
public property Let DefineSecret(chaine)
if len(chaine)=0 then
err.raise vbObjetError+1,"Chaine vide affectée à
Secret","Erreur de classe"
end if
secret = chaine
end property
...
end class
On utilisera cette classe ainsi :
bidule=new(supertruc)
bidule.DefineSecret "007"
....
property set
======== > la même chose que "property let", mais
sert à DÉFINIR la valeur d'une propriété OBJET
Elle est appelée implicitement de l'extérieur par une
instruction d'affectation d'objet :
set myobject.myproperty= xxxxx
property get
======== > sert à OBTENIR la valeur d'une propriété SCALAIRE ou OBJET
Exemple récapitulatif (opérationnel, testé!) :
'--------------------------------------------
class supertruc
private secret
public property Let DefineSecret(chaine)
if len(chaine)=0 then
err.raise vbObjectError,"Erreur de classe","Chaine vide affectée à
Secret"
end if
secret = chaine
end property
public property Get LitSecret()
LitSecret=secret
end property
end class
'--------------------------------------------
class supermachin
private truc
public property Set init(objtruc)
set truc = objtruc
end property
public property Get LitTruc()
Set LitTruc=truc
end property
end class
'--------------------------------------------
set bidule=new supertruc
bidule.DefineSecret ="007"
set machin=new supermachin
set machin.init = bidule
wscript.echo machin.LitTruc.LitSecret
'--------------------------------------------
NB: dans mon exemple, afin de bien distinguer les opérations, j'ai choisit
des noms différents de procédures dans LET et GET , ou dans SET et GET .
Mais on peut très bien prendre le MÊME nom (c'est souvent le cas) pour la
lecture (GET) et pour l'écriture (LET ou SET)
P.ex. :
class supermachin
private truc
public property Set Letruc(objtruc)
set truc = objtruc
end property
public property Get LeTruc()
Set LeTruc=truc
end property
end class
le préfixe "public" ou "private" placé devant le mot-clef "property" sert,
comme on peut s'y attendre, à publier ou masquer la propriété en lecture
(GET) et/ou en écriture (LET/SET).
class supermachin
private truc
private property Set Letruc(objtruc)
set truc = objtruc
end property
public property Get LeTruc()
Set LeTruc=truc
end property
end class
ici , "LeTruc" est en lecture seule
class supermachin
private truc
public property Set Letruc(objtruc)
set truc = objtruc
end property
private property Get LeTruc()
Set LeTruc=truc
end property
end class
ici , "LeTruc" est en écriture seule
Une procédure "private property" à l'intérieur d'une classe ne peut donc
être utilisée qu'à l'intérieur de la classe.
NB: tout cela est beaucoup plus long à expliquer qu'à pratiquer !
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*