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 :

Utilisation objet avec VB 2008


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 55
    Par défaut Utilisation objet avec VB 2008
    Problème avec la gestion des objets dans Visual Basic 2008 Express

    DESCRIPTION

    J’ai créé trois objets :

    Un objet interface :
    Public Interface SqlInterface
    Sub connexion()
    End Interface
    Un objet abstrait qui implémente l’objet interface :

    Public MustInherit Class SqlAbstract
    Implements SqlInterface
    Public Sub connexion() Implements SqlInterface.connexion
    Debug.Print("SqlAbstract")
    End Sub
    End Class
    Un objet de travail qui implémente l’objet interface et hérite de l’objet Abstrait :
    Public Class SqlAccess
    Inherits SqlAbstract
    Implements SqlInterface

    Public Overloads Sub connexion()
    MyBase.connexion()
    Debug.Print("SqlAccess")
    End Sub
    End Class
    Voici quatre exécutions de mon code différentes :

    1ère exécution
    Code :
    Imports System.Reflection

    Module ConnexionDB
    Public dbSql As SqlAbstract
    Public Function Connexion() As Boolean
    Dim instance As Assembly = Assembly.GetExecutingAssembly()
    dbSql = instance.CreateInstance("Application.SqlAccess")
    dbSql.connexion()
    End Function
    End Module
    Résultat :
    SqlAbstract

    2ème exécution
    Code :
    Imports System.Reflection

    Module ConnexionDB
    Public dbSql As SqlInterface
    Public Function Connexion() As Boolean
    Dim instance As Assembly = Assembly.GetExecutingAssembly()
    dbSql = instance.CreateInstance("Application.SqlAccess")
    dbSql.connexion()
    End Function
    End Module
    Résultat :
    SqlAbstract

    3ème exécution
    Code :
    Imports System.Reflection

    Module ConnexionDB
    Public dbSql As SqlAccess
    Public Function Connexion() As Boolean
    Dim instance As Assembly = Assembly.GetExecutingAssembly()
    dbSql = instance.CreateInstance("Application.SqlAccess")
    dbSql.connexion()
    End Function
    End Module
    Résultat :
    SqlAccess
    SqlAbstract

    4ème exécution
    Code :
    Imports System.Reflection

    Module ConnexionDB
    Public dbSql As Object
    Public Function Connexion() As Boolean
    Dim instance As Assembly = Assembly.GetExecutingAssembly()
    dbSql = instance.CreateInstance("Application.SqlAccess")
    dbSql.connexion()
    End Function
    End Module
    Résultat :
    SqlAccess
    SqlAbstract

    PROBLEME
    Mon problème est que je veux pouvoir initialisé mon objet soit par SqlInterface, soit par SqlAbstract (ce qui me permettrai d’avoir les méthodes à disposition) et quand je le crée l’objet par SqlAccess il s’exécute sur le SqlAccess.connexion() et non avec SqlAbstract.connexion(). Mon exemple est avec SqlAccess, mais je pourrais bien avoir d’autre classe comme SqlOracle, etc.

    Je ne trouve pas normale que l’exécution ne se fasse pas sur la méthode surclassée (cas 1 et 2).

    Est-ce que j’ai créé est juste (je passe par System.Reflection.Assembly pour créer l’instance). Si non, qu’est-ce que je prendre (en sachant que le nom de la classe est une variable et non en dure).

    Merci d’avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Par défaut
    Salut

    Pourquoi essayer de réinventer la roue?

    Regarde le tutoriel suivant

    Bon coding

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 55
    Par défaut
    Merci pour ta réponse, mais c'est, hélas, pas mon problème.

    Mon problème n'est pas SQL, mais la gestion des objets.

    J'ai mis une histoire de SQL pour être un peu plus concret au lieu de rester abstrait. C'est préférable d'avoir un exemple malgré que celui-ci à plutôt dérangé qu'autre chose.

    La description de mon problème est la suivante :
    Je veux instancier un objet et je veux qu'il utilise la bonne méthode et s'il n'existe pas dans la class qu'il utilise celui hérité.
    Maintenant, je ne connais pas le nom de la classe quand j'établis mon code et je le passe en paramètre.
    Pour que cela fonctionne comme je veux, je dois créer un objet de type "object" mais c'est compliqué à l'utilisé, je n'ai pas les méthodes attachés, mais cela fonctionne.

    Moi, je veux créer l'objet en donnant soit le nom de la classe abstrait, soit le nom de la classe interface. J'ai à ma disposition l'ensemble des méthodes que je peux utilisé et je créé l'objet, à l'exécution, avec la bonne classe (passé en paramètre) et quand j'appel la méthode il utilise en premier la méthode de classe que j'ai appelé et, après, la méthode héritée et non directement celui de la classe héritée.
    Si c'est un peu compliqué, il faut regarder, l'explication initiale que j'ai voulu plus simple.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Par défaut
    C'est pour faire un système de plugin alors??

    Dans dotnet, il y a depuis le 3.5 un systeme qui gere ca?

    Sinon je pense qu'il manque des mots clés dans ton code
    et oui vb.net est plus verbeux que C#

    Overridable --> subtituable
    Overrides --> subtitut

    un ptit tuto



    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
     
    Imports System.Reflection
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim dbSql As SqlAbstract
            Dim instance As Assembly = Assembly.GetExecutingAssembly()
            dbSql = instance.CreateInstance("WindowsApplication2.SqlAccess")
            dbSql.connexion()
        End Sub
    End Class
     
    Public Interface SqlInterface
        Sub connexion()
    End Interface
     
    Public MustInherit Class SqlAbstract
        Implements SqlInterface
        Public Overridable Sub connexion() Implements SqlInterface.connexion
            Debug.Print("SqlAbstract")
        End Sub
    End Class
     
    Public Class SqlAccess
        Inherits SqlAbstract
        Implements SqlInterface
     
        Public Overloads Overrides Sub connexion()
            MyBase.connexion()
            Debug.Print("SqlAccess")
        End Sub
    End Class
    Bon coding

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 55
    Par défaut
    Merci beaucoup,

    C'est la solution.

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

Discussions similaires

  1. Utiliser des fonctions non objets avec Zend
    Par jux dans le forum Zend Framework
    Réponses: 6
    Dernier message: 08/02/2009, 11h58
  2. Utiliser OLE Objet avec plusieurs images?
    Par solaar dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/11/2008, 00h43
  3. Utiliser Java pour la persistence d'objets avec MySQL
    Par wallys dans le forum Persistance des données
    Réponses: 4
    Dernier message: 07/07/2008, 21h19
  4. Utiliser l'éditeur graphique de fichier dbml avec sql 2008
    Par jowsuket dans le forum Visual Studio
    Réponses: 1
    Dernier message: 27/06/2008, 09h52

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