cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010
-
7 août 2007 à 22:06
cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010
-
8 août 2007 à 22:28
J'aimearis avoir un exemple de class dependante. Comment peux on acceder au information de la class supérieur commeles variable ? Est-ce que les class imbriqué sont la solution ?
avelone
Messages postés15Date d'inscriptiondimanche 5 août 2007StatutMembreDernière intervention30 novembre 2010 8 août 2007 à 01:57
T'entend quoi par classe supérieur, une classe parent que tu viens d'hériter si c'est le cas tu dois avoir dans un projet par exemple une classe dans une nouvelle classe. Je vais te donner un exemple de classe hériter en te présentant une classe compteBancaire qui contient quelque information d'un compte :
Public
Class CompteBancaire
'Déclaration de variables protected pouvant être lu par les
'classes dérivés et cette classe seulement
Protected aNo
As
Integer
Protected aProprietaire
As
String
Protected aBalance
As
Double = 0
Public
Sub
New()
End
Sub
'Constructeur avec paramètre
Public
Sub
New(
ByVal paramNo
As
Integer,
ByVal paramProprio
As
String,
ByVal paramBalance
As
Double)aNo = paramNo
aProprietaire = paramProprio
aBalance = paramBalance
End
Sub
'Propriétés publique pour accéder aux valeurs des variables et
'pour setter des valeurs aux variables
Public
Property no()
As
Integer
Get
Return aNo
End
Get
Set(
ByVal Value
As
Integer)aNo = Value
End
Set
End
Property
Public
Property proprietaire()
As
String
Get
Return aProprietaire
End
Get
Set(
ByVal Value
As
String)aProprietaire = Value
End
Set
End
Property
Public
ReadOnly
Property balance()
As
Double
Get
Return aBalance
End
Get
End
Property
'Exemple d'un sub qui permettrait de retirer de l'argent au compte
Public
Sub retirer(
ByVal paramMontant
As
Double)aBalance -= paramMontant
End
Sub
'Overridables permet de pouvoir modifier le sub dans les
'classe dérivés
Public
Overridable
Sub deposer(
ByVal paramMontant
As
Double)aBalance += paramMontant
End
SubEnd
ClassVoilà maintenant une classe dérivé qui hérite de cette classe parent qui est donc un compte bancaire, mais disons que pour l'exemple, ce compte bancaire possède un bonus qui est incrémenter de 10 points pour chaque dépot de 100$, c'est une exemple, alors, on peut hériter de compte bancaire pour reprendre ce que la classe possède déjà afin de ne pas réinventer la roue et créer le bonus en supplément dans cette classe, la classe aura accès à tous les attributs de la classe parent ainsi qu'aux méthodes (bien sur, si l'attribut est privé on ne pourra pas le voir) :
Public
Class CompteBancaireBonus
Inherits CompteBancaire
Private aBonus
As
Integer
Public
Sub
New()
End
Sub
'Constructeur avec tous les paramètres comme dans celui plus haut, mais avec compte bancaire en supplément
Public
Sub
New(
ByVal paramNo
As
Integer,
ByVal paramProprio
As
String,
ByVal paramBalance
As
Double,
ByVal paramNbBonus
As
Integer)aNo = paramNo
aProprietaire = paramProprio
aBalance = paramBalance
aBonus = paramNbBonus
End
Sub
'Nouvelle propriété, pas obligé de créer les autres, ils ont déjà été créé dans la classe parent
Public
Property bonus()
As
Integer
Get
Return aBonus
End
Get
Set(
ByVal Value
As
Integer)aBonus = Value
End
Set
End
Property
'On modifie la méthode deposer pour ajouter 10 dans les bonus à
'chaque fois que l'usager dépose plus de 100 $
'C'est un exemple pour modifier une classe parent
'avec le mot clé "Overrides"
Public
Overrides
Sub deposer(
ByVal paramMontant
As
Double)
'Permet d'aller chercher ce qui a déjà été créé dans la classe parent
avelone
Messages postés15Date d'inscriptiondimanche 5 août 2007StatutMembreDernière intervention30 novembre 2010 8 août 2007 à 02:20
Si tu désires accéder à des variables et des méthodes d'un autre projet que tu as créé, tu dois le compiler et prendre la dll obtenu dans le fichier bin.
Ensuite, tu peux ajouter une référence dans ton nouveau projet sur la dll obtenu dans le fichier bin. Ensuite, tu peux utiliser toutes les fontions et les variables publiques qui s'y trouve.
Sinon, si tu veux accéder à une variable ou méthode dans une classe du même projet sans effectuer d'héritage comme j'ai fais plus haut, tu n'as qu'à instancier une nouvelle instance de cette classe et ensuite tu pourra la manipuler comme instance de la classe désirée. Tu pourra donc lui attribué les valeur défini dans ton autre classe ainsi qu'atteindre les méthodes
Exemple : Dans mon exemple, j'ai créér 2 projets sous la même solution pour te donner un exemple de faire une importattion de projet sous une même solution.
Donc, mes classes compteBancaire et compteBancaireBonus se trouve dans la librairie : ClassLibrary1. Je dois donc l'importer pour pouvoir créer des instances de classe que je pourrai manipuler :
'J'importe ma ClassLibrary1 qui contient les classes
Imports ClassLibrary1
Public Class Exemple
'je crée un instance de compteBancaire que j'instancie immédiatement
Private cb As CompteBancaire = New CompteBancaire
'je crée un instance de compteBancaire que je vais instancier plus
'tard à titre d'exemple
Private cbBonus As CompteBancaireBonus
Public Sub attribuerValeur()
'J'attibue mes valeurs à compteBancaire en utilisant
'les méthodes créées dans la classe CompteBancaire
cb.no = 1
cb.proprietaire = "unNom"
'J'utilise une méthode de la classe CompteBancaire
cb.deposer(100)
'J'instancie CompteBancaireBonus
cbBonus = New CompteBancaireBonus
'J'attibue mes valeurs à compteBancaireBonus en utilisant
'les méthodes créées dans la classe CompteBancaireBonus
cbBonus.no = 2
cbBonus.proprietaire = "riche"
'J'utilise une méthode de la classe CompteBancaireBonus
cbBonus.deposer(200)
End Sub
End Class
cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010 8 août 2007 à 16:10
Ce n'est pas exactement ce que je veux faire.
Example :
Public
ClassMain
Private _UserId As
Integer
Public
Sub
New ( ByVal Par AsInteger )
....
EndSub
Public
ReadOnly
Property
Nested()
Get
Return
New
NestedClass
End
Get
End
Property
REM - Class Nested
Friend
Class
NestedClass
Public
Sub
GetElement()
....
End
Sub
End
Class
End
Class
Dans ce cas les deux class sont imbriqué il y a-t-il un moyen de remonter la hiéarchie pour accéder à la variable userId à partir de la class NestedClass ???
Myke
Vous n’avez pas trouvé la réponse que vous recherchez ?
avelone
Messages postés15Date d'inscriptiondimanche 5 août 2007StatutMembreDernière intervention30 novembre 2010 8 août 2007 à 18:03
Selon ton exemple, il y aurait moyen d'insatncier une nouvelle classe Main et d'aller chercher les valeur de la variable en ajoutant un accesseur dans la classe Main, soit une property :
Public
Class Main
Private aUserId
As
Integer
Public
Sub
New(
ByVal Par
As
Integer)
End
Sub
Public
ReadOnly
Property Nested()
Get
Return
New NestedClass
End
Get
End
Property
'Ajout d'une propriété pour accéder et attribuer
'des valeurs à aUserId
Public
Property UserId()
As
Integer
Get
Return aUserId
End
Get
Set(
ByVal Value
As
Integer) aUserId = Value
End
Set
End
Property
REM - Class Nested
Friend
Class NestedClass
Public
Sub GetElement()
'instanciation de la classe
Dim test
As Main =
New Main(1)
Dim chercherUserId
As
Integer = 100
'J'attribue une valeur à la variable aUserId test.UserId = chercherUserId
'Je vais chercher la valeur de la variable aUserId chercherUserId = test.UserId()