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 :

Visual Studio 2010 (VB) - Problème de classes imbriquées


Sujet :

VB.NET

  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 Visual Studio 2010 (VB) - Problème de classes imbriquées
    Bonjour à tous,
    Je constitue qlq outils pour dev qlq applications. Ceci afin de ne pas ré-inventer la roue à chaque fois. Les Classes me semble être une bonne idées...
    Voila mon probleme :
    J'ai besoin d'imbriquer des classes afin de ne pas ré-ecrire le même code plusieurs fois.
    J'ai défini ma classe principale et créé une classe imbriquée :
    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
    Public Class MAIN
    	private et public property
    	private sub SendCommand(...)
            	blablabla...
    	end sub
    public Class SECOND
    	private et public property
    	Public sub ConcaCommand(...)
    		Ici je dois accéder à la procédure SendCommand() de la class MAIN
    	end sub
    End class
    public class TER
    	private et public property
    	Public sub ConcaCommand(...)
    		Ici je dois accéder à la procédure SendCommand() de la class MAIN
    	end sub
    End class	
    End class
    Je souhaite faire cela afin d'écrire dans le programme appelant :
    MAIN.SECOND.ConcaCommand(...)
    ou
    MAIN.TER.ConcaCommand(...)
    plutôt que de créer dans la class MAIN les subs de SECOND et TER avec des noms différents ce qui donne dans le programme appelant :
    MAIN.SecondConcaCommand(...) ou MAIN.TerConcaCommand(...)

    Donc, comment imbriquer ces 2 classes dans la MAIN et que ces 2 (sous) classes puissent faire appel à des sub de la classe MAIN ?
    J'espère être assez clair.
    En d'autres termes :
    A partir d'une sous classe, comment se connecter à un Sub d'une classe supérieure et/ou d'une classe inférieure et/ou d'une classe de même niveau ?

    Merci

    Patrick

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    pourquoi ne pas mettre tes 3 subs dans la même classe ?

    pour pouvoir écrire MAIN.QuelqueChose il faut que QuelqueChose soit shared, sinon il faut une instance de main
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  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
    Bonjour Pol63,
    Citation Envoyé par Pol63 Voir le message
    pourquoi ne pas mettre tes 3 subs dans la même classe ?

    pour pouvoir écrire MAIN.QuelqueChose il faut que QuelqueChose soit shared, sinon il faut une instance de main
    En d'autre terme, je devrai peut etre definir mes sous/classes comme shared :

    public shared classe myclassname2
    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
    Public Class MAIN
    	private et public property
    	private sub SendCommand(...)
            	blablabla...
    	end sub
    public shared Class SECOND
    	private et public property
    	Public sub ConcaCommand(...)
    		Ici je dois accéder à la procédure SendCommand() de la class MAIN
    	end sub
    End class
    public shared class TER
    	private et public property
    	Public sub ConcaCommand(...)
    		Ici je dois accéder à la procédure SendCommand() de la class MAIN
    	end sub
    End class	
    End class
    ... et dans mon code appelant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim Myobjet as new MAIN
    Myobject.SECOND.ConcaCommand(...)
    Est-ce bon ?
    Patrick

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Comme le dis Pol63, je pense qu'il y a confusion entre méthode de classe (shared) et méthode d'instance. Un petit lien sur le cours de Philippe Lasserre.

    Après tout dépend de ce que l'on veut faire. Quel est le type de lien entre les classe ? S'il n'y en n'a pas, effectivement, autant écrire 3 methodes. S'il y a un lien (ce que je pense vu le nom des methodes) je verrais plutôt l'utilisation de l'héritage pour faire ce genre de chose :

    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 MAIN
      private et public property
      Protected Overridable sub SendCommand(...)
            blablabla...
      end sub
    End Class
     
    Public Class Second
      Inherits MAIN
      Protected Overrides sub SendCommand(...)
          MyBase.SendCommand(...)
          blabla
      end sub
    End Class
    Bonne journée.
    Eb.

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    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
    class main
     
      public sub1 ' shared pour pouvoir écrire main.sub1
     
      private _second as new SECOND
      public shared readonly property SECOND as SECOND
         get
             return _second
         end get
      end property
     
    end class
     
    class SECOND
     
       public sub2
     
    end class
    ca répond à votre demande mais à mon avis vous partez sur une mauvaise piste ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    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
    Oui, possibkle que cela soit un mauvaise piste...
    C'était juste pour "classer" les type de commandes par famille.

    Famille GLOBAL
    sous/Famille ONE
    sous/Famille SECOND
    sous/Famille TER
    End GLOBAL

    Dans global, il y aurait des subs utilisées par les sous familles.
    Voila un peu la raison de ma demande.

    Patrick

    Citation Envoyé par Pol63 Voir le message
    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
    class main
     
      public sub1 ' shared pour pouvoir écrire main.sub1
     
      private _second as new SECOND
      public shared readonly property SECOND as SECOND
         get
             return _second
         end get
      end property
     
    end class
     
    class SECOND
     
       public sub2
     
    end class
    ca répond à votre demande mais à mon avis vous partez sur une mauvaise piste ...

Discussions similaires

  1. Visual Studio 2010 - Qt - Problème d'accents
    Par CliffeCSTL dans le forum Débuter
    Réponses: 3
    Dernier message: 30/12/2012, 20h21
  2. Problème FirebirdSql.Data.FirebirdClient et Visual studio 2010
    Par Dionys dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 31/08/2010, 21h29
  3. Réponses: 1
    Dernier message: 24/06/2010, 16h55
  4. UML class Diagram dans visual studio 2010
    Par obiflo dans le forum Visual Studio
    Réponses: 3
    Dernier message: 09/06/2010, 16h08
  5. Réponses: 16
    Dernier message: 06/01/2010, 16h17

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