shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
11 févr. 2007 à 15:54
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
11 févr. 2007 à 18:39
Bonjour, ca fais longtemps que je n'ai pas codé et j'ai un peu de lacunes, j'ai fait un programme en Windows Forms et une class avec plusieurs methodes ... bref j'ai dans ma class les variables suivantes
Public
Class
Screening
Public
Shared
mode
As
Integer
Public
Shared
localpath
As
String
...
End Class
<hr />Dans mon form je chercherai a faire :
Screening.localpath = MaTextBox.Text
J'ai mis une référence a ma class depuis le projet, mais je n'arrive pas a a acceder a la variable localpath...
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 11 févr. 2007 à 16:17
deja la logique de la POO voudrait que toutes les variables de ta class soient private, et que tu crée des methodes GET et SET pour accéder à celle ci...
du moins c'est ce qu'on nous apprend en cours...
Mais avec ton code comme tu l'as posté, ceci devrait pourant marcher...
definir une variable (a) en tant qu'objet de type ta classe(a as Screening), puis affecter la valeur
Private a as Screening
a = New Screening
a.localpath="..."
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 11 févr. 2007 à 16:43
Pas d'accord hvb, si son champs est Shared, il ne doit pas y accèder via une instance.
Par contre je suis incapable de te dire pourquoi il n'arrive pas à accèder à localpath, si tu as bien mis la classe dans le même projet, il ne devrait pas poser de problème... Vérifie que tu ne l'as pas déclarée à l'intérieure d'une autre classe peut-être ?
Pour ce qui est d'en faire une propriété avec des Get ou des Set, à mon goût c'est superflu si ton utilisation ne le nécéssite pas, tout simplement parce que le compilateur le fait tout seul.
Sinon en condensé, je viens de faire ceci pour tester et ca marche sans problème...
Public Class Form1
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Screening.localpath = "Yopyop"
End Sub
End Class
Public Class Screening
Public Shared localpath As String
End Class
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 11 févr. 2007 à 16:44
Ne voit dans mon message du dessus aucune offense sur ta façon de coder, je te rapporte juste ce que l'on m'apprend.
Et pour l'exemple, il n'y a rien de plus simple, c'est surtout une question de propreté...
En clair au lieu de faire
ClassScreening
Public
Sharedlocalpath
As
String
...
End Class
tu ferais
ClassScreening
Private localpath
As
String
Public function get_path() As String
return localpath
End Function
Public sub set_path(ByVal val as String)
localpath=val
End Function
End Class
Au niveau du rendu cela ne change rien, et tu me diras "ça ajoute du code pour rien", mais cela permet à un codeur qui utiliserait ta classe de ne pas faire n'importe quoi, mais aussi pour toi, de tester si besoin est, la forme de la valeur avant de l'affecter (ici dans le set_path), etc...
J'espere avoir été clair... on est dimanche, et le samedi etait plutot bien arrosé ^^
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 11 févr. 2007 à 16:48
Autant faire une vraie propriété alors :
Public Class Screening
Private Shared _localpath As String
Public Shared Property localpath() As String
Get
Return _localpath
End Get
Set(ByVal value As String)
_localpath = value
End Set
End Property
End Class
La méthode Get sera appelée lorsque tu auras dans ton code ... = Screening.localpath
et la méthode Set sera appelée avec Set(xxx) lorsque tu auras Screening.localpath = xxx
Comme dit hvb, c'est plus dans l'esprit POO, et ca permet principalement d'avoir un contrôle total sur l'accès à ta propriété.
<hr size="2" width="100%" />Julien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013 11 févr. 2007 à 16:28
:) je n'ai que 16ans ;) j'suis encore au lycée et pour quelqu'un qui n'a jamais rien appris de personne j'sais coder (même si je ne sais pas vraiment bien coder comme un pro, mais j'arrive a ce que j'veux ^^), par contre si tu pouvais toi ou qqn d'autre m'apprendre cette histoire de get et set par ce meme exemple ca m'intéresse ^^
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 févr. 2007 à 16:49
hvb, on a surrement du t'apprendre que ce genre de code est encore plus propre en utilisant les propriétés :
même si ça revent au même comme dit julien
Public Class Screening
Private _mode As Integer
Private _localpath As String
Public Property Mode() As Integer
Get
Mode = _mode
End Get
Set(ByVal value As Integer)
_mode = value
End Set
End Property
Public Property LocalPath() As String
Get
LocalPath = _localpath
End Get
Set(ByVal value As String)
_localpath = value
End Set
End Property
End Class
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 11 févr. 2007 à 16:51
exact Julien237, je n'avais pas vu ton message au dessus, et tu as complement raison pour le shared, que je n'avais pas pris en compte vu que je l'utilise rarement...
Pour ce qui est de definir un property, je crois que ça n'existe pas en c++, je ne connaissais pas cet enorme gain de temps...! thx
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 11 févr. 2007 à 16:59
nous on nous fait utiliser des get - set crées par nous meme, mais je viens de me renseigner, il y a un mot clé __property a ajouté avant sa function ou void, qui semble donner le meme effet.
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013 11 févr. 2007 à 18:39
lol vous vous etes enflammés les gars... 12 réponses en même pas 3heures, sortez un coup votre visual studio en a assez :D, bref merci beaucoup pour tout cela vous m'avez fait progréssé un peu plus et en plus j'vois maintenant pourquoi on fait les get et set, ca permet d'inspecter le contenu d'une variable avant de l'utiliser ^^