Encapsulation [Résolu]

3xplo 10 Messages postés mercredi 13 décembre 2006Date d'inscription 8 juillet 2007 Dernière intervention - 6 févr. 2007 à 15:54 - Dernière réponse : 3xplo 10 Messages postés mercredi 13 décembre 2006Date d'inscription 8 juillet 2007 Dernière intervention
- 8 févr. 2007 à 22:29
Bonjour,
je viens de créer une classe ClassCompteBancaire mais je n'arrive pas à faire en sorte qu'on puisse modifier le nom du titulaire du compte, je sais que ceci devrait, par la même occasion, simplifier la methode Initialiser. Je voudrais donc savoir si quelqu'un pourrait m'aider afin de me débloquer.
Voici la classe ClassCompteBancaire :

Private Type TOperation
Date As Date
Montant As Currency
Libelle As String
End Type

Private NomTitulaire As String
Private PrenomTitulaire As String
Private DateOuverture As Date
Private TypeCompte As String
Private NbOperations As Integer
Private Operation(1000) As TOperation
Private Solde As Currency

Public Function GetNomTitulaire() As String
GetNomTitulaire = NomTitulaire
End Function

Public Function GetPrenomTitulaire() As String
GetPrenomTitulaire = PrenomTitulaire
End Function

Public Function GetDateOuverture() As Date
GetDateOuverture = DateOuverture
End Function

Public Function GetTypeCompte() As String
GetTypeCompte = TypeCompte
End Function

Public Function GetSolde() As Currency
GetSolde = Solde
End Function

Public Sub Class_Initialize()
Solde = 0
NbOperations = 0
MsgBox "Le constructeur a été exécuté"
End Sub

Public Sub Class_Terminate()
MsgBox "Le destructeur a été exécuté"
End Sub

Public Sub Initialiser(PNomTitulaire As String, PPrenomTitulaire As String, PDateOuverture As Date, PTypeCompte As String)
NomTitulaire = PNomTitulaire
PrenomTitulaire = PPrenomTitulaire
DateOuverture = PDateOuverture
TypeCompte = PTypeCompte
End Sub

Public Sub AjoutOperation(PMontant As Currency, PDateOp As Date, PLibelle As String)
Operation(NbOperations).Montant = PMontant
Operation(NbOperations).Date = PDateOp
Operation(NbOperations).Libelle = PLibelle
NbOperations = NbOperations + 1
Solde = Solde + PMontant
End Sub

Sub Main()
Dim Mon_Compte As New ClassCompteBancaire
Mon_Compte.Initialiser "DUPONT", "Jean", Date, "Courant"
Mon_Compte.AjoutOperation 500, Date - 2, "Dépôt initial"
Mon_Compte.AjoutOperation 1000, Date - 1, "Dépôt de chèques"
Mon_Compte.AjoutOperation -200, Date, "Retrait"
MsgBox Mon_Compte.GetSolde
End Sub
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 8 févr. 2007 à 17:00
3
Merci
Oui, ben dans ce cas il te suffit de faire une méthode qui défini ton champs :

Public Sub SetNomTitulaire(value as String)
    NomTitulaire = value
End Sub

Et pour modifier tu fais CompteBancaire.SetNomTitulaire("Yopyop"), mais je suis étonné que tu fasse des classes sans utiliser les propriétés, c'est vraiment la base et tu ferais mieux des les utiliser...

<hr size="2" width="100%" />Julien.

Merci Julien237 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Julien237
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 6 févr. 2007 à 18:30
1
Merci
Salut,
Remplace toutes les fonctions "Get****" par des propriétés, ce sera bien plus pratique...

Property NomTitulaire() As String
    Get
        Return _NomTitulaire  
'Le _ au début de la variable est une manière pratique d'indiquer qu'il s'agit de la variable
'privée se rapportant à la propriété sans le _, tu dois donc renommer tes variables
'au début de ton document...
   End Get
   Set (Value as String)
       _NomTitulaire = Value
   End Set
End property

Et bien entendu, si tu veux que l'utilisateur ne puisse pas modifier une propriété, tu ajoute le mot-clé ReadOnly dans sa déclaration et tu n'implémente pas de méthode Set.

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
3xplo 10 Messages postés mercredi 13 décembre 2006Date d'inscription 8 juillet 2007 Dernière intervention - 8 févr. 2007 à 13:14
0
Merci
Ok ok, merci pour les explications, celà ma permis de comprendre ta méthode, mais le problème c'est que je n'ai pas encore appris ça, donc je ne vais pas l'utiliser dans ma classe :( .
Il me semble que mon code n'a pas besoin d'être modifié à ce point pour que celà fonctionne, je crois qu'il existe "Set" (permet de modifier la valeur de la proprieté) qu'il faudrait utiliser à la place de "Get", mais je ne sais pas comment l'utiliser.

Julien, je valide tout de même ta reponse car c'est aussi bon mais encore trop technique pour moi ;) ! Merci encore !
Donc si quelqu'un a compris(décrypté) ce que je recherchais, merci de m'aider.
Commenter la réponse de 3xplo
3xplo 10 Messages postés mercredi 13 décembre 2006Date d'inscription 8 juillet 2007 Dernière intervention - 8 févr. 2007 à 22:29
0
Merci
Parfait, merci beaucoup !
En fait je ne suis qu'au début de mon apprentissage VB, et je n'ai pas encore vu les propriètés dans les classes, le programme est peut-être mal foutu, ça je te l'accorde .
En tout cas, tu as répondu à mes attentes, encore merci et bonne continuation !
++
Commenter la réponse de 3xplo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.