IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Transfert de variables de classe à classe [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut Transfert de variables de classe à classe
    Bonjour à tous,
    J'ai qlq soucis à comprendre comment transférer le contenu d'une variable de class vers une autre classe.

    ci-dessous le code pour mieux comprendre, j'ai aussi ajouté des commentaires afin de mieux comprendre mon probleem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Public Class Front
        Inherits general_cmd
    	'dim mylayer as string = "layer front"
    	' ici le programme appelant doit passer et valider la variable mylayer=layer front
    End Class
     
    Public Class Back
        Inherits general_cmd
    	'dim mylayer as string = "layer back"
    	' ici le programme appelant doit passer et valider la variable mylayer=layer back
    End Class
     
    Public Class general_cmd
        Public Sub generalsub()
    	' ici une procédure qui génére qlq chose MAIS avec mylayer qui vient soit de la class Back ou Front et dont une valeur différente
            MsgBox("valeur de la vaiable : " & mylayer)
        End Sub
    End Class
     
     
    Public Class Form1
        Dim myback As New Back
        Dim myfront As New Front
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub test_Click(sender As System.Object, e As System.EventArgs) Handles test.Click
            ' ici je veux passer par la class back et mylayer prendra la valeur = layer back
    	myback.generalsub()
     
        End Sub
     
        Private Sub call_front_Click(sender As System.Object, e As System.EventArgs) Handles call_front.Click
            ' ici je veux passer par la class front et mylayer prendra la valeur = layer front
    	myfront.generalsub()
     
        End Sub
    End Class
    Donc, dans mon programme appelant, comme vous l'avez vu, la commande :
    myfront. appele l'objet pour la classe
    generalsub() appele la procédure dans la classe generale_cmd
    La variable "mylayer" doit être visible dans les classes (qui seront compilées seule plus tard (.dll)) (class : front, back, general_cmd et d'autres). Mais cette variable mylayer ne doit pas etre vu et accéssible par le programm appelant (ici Form1)...
    J'espere etre assez clair
    En résuimé, comment faire pour que "mylayer" soit modifiée à chaque appel de la class front ou back et se retrouver avec la bonne valeur dans la class general_cmd ?
    Merci
    Patrick

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Dans "Class general_cmd" il faut une propriété "Protected"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Class general_cmd
        Private mylayer As String
        Protected Property Layer() As String
            Get
                Return mylayer
            End Get
            Set(ByVal value As String)
                mylayer = value
            End Set
        End Property
     
        Public Overridable Sub generalsub()
            ' ici une procédure qui génére qlq chose MAIS avec mylayer qui vient soit de la class Back ou Front et dont une valeur différente
            MsgBox("valeur de la variable : " & Layer)
        End Sub
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Class Front
        Inherits general_cmd
        ' ici le programme appelant doit passer et valider la variable mylayer=layer front
        Public Overrides Sub generalsub()
            MyBase.Layer = "layer front"
            MyBase.generalsub()
        End Sub
    End Class
     
    Public Class Back
        Inherits general_cmd
        ' ici le programme appelant doit passer et valider la variable mylayer=layer back
        Public Overrides Sub generalsub()
            MyBase.Layer = "layer back"
            MyBase.generalsub()
        End Sub
    End Class
    et dans ton code de Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Private Sub call_back()
            ' ici la propriété Layer n'est pas accessibla.
            Dim myback As New Back
            ' ici je veux passer par la class back et mylayer prendra la valeur = layer back
            myback.generalsub()
        End Sub
     
        Private Sub call_front()
            ' ici la propriété Layer n'est pas accessibla.
            Dim myfront As New Front
            ' ici je veux passer par la class front et mylayer prendra la valeur = layer front
            myfront.generalsub()
        End Sub
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut
    Bonsoir Hervé,
    EN effet, cela fonctionnera mieux, mais dans mon exemple, il faut savoir que je vais surement avoir pas loin de 50 subs et functions dans la class general_cmd
    et probablement des classes imbriquées...
    Donc assez difficile de maintenir la classe générale avec une "copie" de tous les subs (override) dans chacune des classes front, back et il y aura Middle.
    Si je pars vers ta solution, il me faudrait plus qlq chose comme une function (1 seule) que j'appele à chaque sub de general_cmd...
    En fait voila un exemple de la classe general_cmd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class general_cmd
        Public Sub generalsub()
    	' ici une procédure qui génére qlq chose MAIS avec mylayer qui vient soit de la class Back ou Front et dont une valeur différente
            MsgBox("valeur de la vaiable : " & WhoIsMyLayer)
        End Sub
     
    	protected function WhoIsMyLayer() as string ' cette fonction ne doit pas être vu par le programm Form1
    		Return ' la valeur de mylayer
    	End Function
     
    End Class
    dans chaque class front et back et middle, j'aurai donc qlq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class Front
        Inherits general_cmd
        ' ici le programme appelant doit passer et valider la variable mylayer=layer front
        Public Overrides function WhoIsMyLayer()
            MyBase.Layer = "layer front"
            MyBase.WhoIsMyLayer()
        End function
    End Class
    Je me trompe ?
    Patrick.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Dans ce cas, utilise les constructeurs pour marquer ton Layer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Class Front
        Inherits general_cmd
        ' ici le programme appelant doit passer et valider la variable mylayer=layer front
        Sub New()
            MyBase.Layer = "layer front"
        End Sub
    End Class
     
    Public Class Back
        Inherits general_cmd
        ' ici le programme appelant doit passer et valider la variable mylayer=layer back
        Sub New()
            MyBase.Layer = "layer back"
        End Sub
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Class general_cmd
        Private mylayer As String
        Protected Property Layer() As String ' propriété non vu par le programm Form1
            Get
                Return mylayer
            End Get
            Set(ByVal value As String)
                mylayer = value
            End Set
        End Property
     
        Public Sub generalsub()
            ' ici une procédure qui génére qlq chose MAIS avec mylayer qui vient soit de la class Back ou Front et donc une valeur différente
            MsgBox("valeur de la variable : " & Layer)
        End Sub
    End Class
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut
    Bonjour Hervé.
    Bravo, ça marche. je ne connaissais pas ces histoire de constructeur (sub New dans les classe ni le MyBase).
    Je vais m'y penché et comprendre ce que c'est et comment ça marche.
    Merci pour ton aide.
    Patrick

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ArrayList<Class> class class.setString()
    Par Onelove dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/08/2014, 19h42
  2. Récupération d'une variable de sous-classe à classe
    Par aristide13 dans le forum Android
    Réponses: 3
    Dernier message: 06/11/2013, 22h46
  3. Utilisation de variables dans plusieurs classes
    Par dedeloux dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2005, 17h25
  4. [FLASH MX2004] [AS2] Accès aux variables d'une classe
    Par stailer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/07/2005, 12h58
  5. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo