Bonjour je viens de me mettre à la programmation multi-couche en vb.net et ado.net je pense avoir compris les liens entre chaque couche mais c'est la construction des classes qui me posent problème.

J'ai 4 couche : IHM (interface homme - machine), DAL (accès aux données), BEL (objet métier) et BPL (règle de gestion, appel des fonctions du DAL)

J'ai une table Access nommé User, j'ai donc crée mon interface pour en ajouter un enregistrement (IHM).
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
 
'ajout référence vers BEL
Imports BEL
'ajout référence vers BEL
Imports BPL
 
 
Public Class Inscription
 
    Private Sub AjouterUser(ByVal login As String, ByVal password As String, ByVal question As String, ByVal reponse As String)
        Dim NewUser As USER = New USER(login, password, question, reponse)
        Dim UserBPL As New BPL.BPLuser
        UserBPL.BPL_Ajouter(NewUser)
    End Sub
 
 
    Private Sub Binscription_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Binscription.Click
        AjouterUser(TBlogin.Text, TBpassword.Text, CBquestion.SelectedText, TBlogin.Text)
    End Sub
End Class
DAL, une classe pour la connexion :
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
55
56
57
 
' Ajout référence : Microsoft ADO Ext. 2.8 for DDL and Security
 
Public Class AccessConnexion
    'attribut chemin de la base
    Private chemin As String
    'Attribut connexion unique à une source de données
    Private cnx As OleDb.OleDbConnection
    'Attribut chaine de connection (fournisseur d'accès aux données + chemin)
    Private cnxstr As String
 
    'retourne vrai si le fichier (base) existe
    Public Function verif_chemin() As Boolean
        Return System.IO.File.Exists(chemin)
    End Function
 
    Public Sub Initialise_connexion()
        chemin = My.Application.Info.DirectoryPath & "\Data_base.accdb"
        cnxstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin & ";"
    End Sub
 
    Public Sub Create_base()
        'base de donnée
        Dim db As New ADOX.Catalog
        Try
            db.Create(cnxstr)
        Catch ex As Exception
            Throw New Exception("Erreur de création de la base" & Environment.NewLine & ex.Message)
        End Try
    End Sub
 
    Protected Sub Open_connexion()
        Try
            'test si la connexion n'est pas déjà ouverte
            If cnx.State <> 1 Then
                cnx = New OleDb.OleDbConnection
                cnx.ConnectionString = cnxstr
                cnx.Open()
            End If
        Catch ex As Exception
            Throw New Exception("Erreur d'ouverture connexion" & Environment.NewLine & ex.Message)
        End Try
    End Sub
 
    Protected Sub Close_connexion()
        Try
            'test si la connexion n'est pas déjà fermer
            If cnx.State <> 0 Then
                cnx.Close()
            End If
        Catch ex As Exception
            Throw New Exception("Erreur fermeture connexion" & Environment.NewLine & ex.Message)
        End Try
    End Sub
 
 
End Class
une autre pour la table User (c'est la que je bloque un peu beaucoup) je ne vois pas trop comment je dois organisé cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Public Class AccessUsers
    'vide
End Class
BEL, instanciation des objet
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
55
56
57
58
59
 
Public Class USERS
 
#Region "Attributs"
    Private User_login As String
    Private User_password As String
    Private User_question As String
    Private User_reponse As String
#End Region
 
#Region "Property"
 
    Public Property Login() As String
        Get
            Return User_login
        End Get
        Set(ByVal value As String)
            User_login = value
        End Set
    End Property
 
    Public Property Password() As String
        Get
            Return User_password
        End Get
        Set(ByVal value As String)
            User_password = value
        End Set
    End Property
 
    Public Property Question() As String
        Get
            Return User_question
        End Get
        Set(ByVal value As String)
            User_question = value
        End Set
    End Property
 
    Public Property Reponse() As String
        Get
            Return User_reponse
        End Get
        Set(ByVal value As String)
            User_reponse = value
        End Set
    End Property
 
#End Region
 
    Public Sub New(ByVal Login As String, ByVal Password As String, ByVal Question As String, ByVal Reponse As String)
        User_login = Login
        User_password = Password
        User_question = Question
        User_reponse = Reponse
    End Sub
 
 
End Class
et la couche BPL
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
 
'ajout référence vers la BEL
Imports BEL
'ajout référence vers la DAL
Imports DAL
 
Public Class BPLuser
 
    'Envoie de l'objet metier à la DAL pour l'ajout de l'utilisateur
    Public Sub BPL_Ajouter(ByVal NewUser As USER)
        Dim UserDAL As New DAL.AccessUsers
        UserDAL.Ajouter(NewUser)
    End Sub
 
End Class