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 :

VB.NET et POO


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut VB.NET et POO
    Bonsoir,

    Je sais déjà programmer en VB.NET, mais je débute en POO, et j'aimerai développer donc en POO avec le langage VB.NET

    Alors, j'ai déjà créer pour "essayer" la POO sur VB en créer une application console, utiliser des héritages, des classes etc...

    mais je me demande, pour le développement d'une appli avec interface (forms) reliée à une base de données, le principe est-il le même?

    Je veux dire, je ne vois pas comment structurer le code.

    Si on prend un exemple : on suppose qu'on a une base de données de membres, avec un numéro et un prénom.

    Comment ça se passe si je souhaite utiliser la POO et afficher les résultats dans un label par exemple ?


    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Je sais déjà programmer en VB.NET, mais je débute en POO
    Comme Monsieur Jourdain cela fait un moment que vous faites de l'objet sans le savoir ...

    pour le développement d'une appli avec interface
    La notion d'Interface est objet.

    WindowsForm est un objet, un contrôle label est un objet ... Tout est objet en VB.net.

    Comment ça se passe si je souhaite utiliser la POO et afficher les résultats dans un label par exemple ?
    Il y a bien sur plusieurs solutions "techniques" mais sur le principe l'attribut text de l'objet label (qui hérite de l'objet ContentControl) sera égal à l'attributX de l'objet utilisateur.

    A+

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    Ok, mais j'aimerai bien un peu plus de détails.

    Par exemple, si avec ma table de membre, je veux les afficher, comment ça se passe ?

    Voilà comment je verrais le truc :

    -j'ai ma classe membre avec mes ascesseurs et constructeurs

    La requête qui irait chercher les membre (le select) se situerai ou ? Dans le load de ma form comme d'habitude ?

    Et pour les afficher, je dois créer une instance de chaque membre, puis les afficher ou je veux?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Soit une classe X avec son constructeur par défaut.
    Avec ses accesseurs (ici PROPERTY)

    Ses méthodes d'accès à la BD : Enregistre, Modifie, Supprime. (INSERT INTO, UPDATE , DELETE)

    Éventuellement une surcharge de New avec New(Id As Integer) où Id est la clef primaire de l'objet X dans la BD. Ce qui permet d'instancier un objet X particulier avec sa clef.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Matable WHERE Id_X= Id;
    Une méthode AFFECTE(row as datarow) qui permet d'affecter les valeurs issues de la requête au propriété de l'objet. ( Me.id_X = row("Id_X") ).

    Ensuite une classe ListeX (collection d'objet X) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Class ListeX
        Private m_col As System.Collections.Generic.List(Of ObjetX)
    End class
    Cette classe comporte des méthodes spécifiques pour obtenir une liste à partir de requête, par exemple la méthode touslesobjetsX :
    Pour ma part je synchronise dans la classe listeX une Bindinglist d'objetX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private mBindingObjetX As BindingList(Of ObjetX)
    Ce qui permet pour l'affichage dans un datagridview par exemple de ne pas ce casser la tête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datagridview1.datasource=listeX.BindingObjetX
    Ceci est une façon de faire, mais il y en a d'autres. Si par exemple je veux pouvoir faire défiler les objet de ma liste un part un et aller d'avant en arrière avec un incrément de 1 je n'utilise pas une liste d'objet mais une liste de numéro d'objet (en fait les Id_X) par exemple (extrait de mon propre code )

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Public Class Listenumdossiermaitre
        Private m_col As System.Collections.Generic.LinkedList(Of Integer)
     
        Public Sub New()
            Connect1()
            Dim sql1 As String = "SELECT Id_Dossiermaitre FROM Tabledossiermaitre ORDER BY Id_Dossiermaitre;"
            Dim cmd As New OleDb.OleDbCommand(sql1, Cnn1)
            Dim da As New OleDb.OleDbDataAdapter()
            da.SelectCommand = cmd
            Dim ds As New DataSet
            da.Fill(ds)
            Dim row As DataRow = ds.Tables(0).Rows(0)
            Dim l() As Integer
            Dim i As Integer
            i = -1
            ReDim l(0)
            For Each row In ds.Tables(0).Rows
                i = i + 1
                ReDim Preserve l(i)
                l(i) = row("Id_Dossiermaitre")
            Next
            m_col = New System.Collections.Generic.LinkedList(Of Integer)(l)
            Deconnect1()
        End Sub
    Public Function NumPrec(ByVal I As Integer) As Integer
            Dim node As LinkedListNode(Of Integer) = m_col.Find(I)
            If node.Previous Is Nothing Then
                NumPrec = I
            Else
                NumPrec = node.Previous.Value
            End If
     
        End Function
     
        Public Function NumSuiv(ByVal I As Integer) As Integer
            Dim node As LinkedListNode(Of Integer) = m_col.Find(I)
            If node.Next Is Nothing Then
                NumSuiv = I
            Else
                NumSuiv = node.Next.Value
            End If
     
        End Function
     
        Public Function Premier() As Integer
            Dim node As LinkedListNode(Of Integer) = m_col.First
            Premier = node.Value
        End Function
     
        Public Function Dernier() As Integer
            Dim node As LinkedListNode(Of Integer) = m_col.Last
            Dernier = node.Value
        End Function
    End Class
    Si par exemple au load de ma feuille je veux afficher le premier dossier je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Listenumdossier = New Listenumdossiermaitre
    'DMEC dossier maître en cours
                FormDossierMaitre.DMEC = New Dossiermaitre(Listenumdossier.Premier)
    L'utilisation de la surcharge du New avec en paramètre la clef primaire permet d'instancier l'objet désiré.


    A+

Discussions similaires

  1. Outils interessants .net - HTML POO DB ..
    Par sunny06 dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 02/02/2012, 09h28
  2. Réponses: 4
    Dernier message: 15/07/2011, 14h08
  3. Réalisation d'un mémoire sur la POO pour PHP et ASP.NET
    Par arnaudperfect dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 21/07/2007, 16h06
  4. [VB.NET]Utilité de la POO
    Par badrel dans le forum Windows Forms
    Réponses: 4
    Dernier message: 25/10/2006, 16h59
  5. [WinForms].NET 2.0 collection et POO
    Par romeo9423 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 28/06/2006, 17h03

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