Exercice Visual Basic : Examen Passage 2007 TSDI Variante 3 Orienté Objet

On souhaite traiter des comptes bancaires. Un compte bancaire possède à tout moment une donnée entière, son solde. Il est caractérisé par ailleurs par un code donné sous forme de chaîne de caractères, et un titulaire qui est une personne physique. Ce solde peut être positif (compte créditeur) ou négatif (compte débiteur). Au départ, un compte bancaire a un solde nul, un code nul par défaut, et un titulaire inconnu. Il est aussi possible de créer un compte en précisant son solde initial, son titulaire et son code initial.

Utiliser son compte consiste à pouvoir y faire des dépôts et des retraits. Pour ces deux opérations, il faut connaître le montant de l'opération et vérifier que le code proposé est bien le code du compte.

L'utilisateur peut aussi consulter le solde de son compte.

1.1. Ecrivez une classe PersonnePhysique, elle est décrite par un nom et prénom, et comprendra les méthodes suivantes : (3 Points)

  • constructeur
  • une méthode de consultation du nom
  • une méthode de consultation du prénom

1.2. Ecrivez une classe CompteBancaire prenant en compte la description précédente. Cette classe comprendra les méthodes suivantes : (3 Points)

  • constructeurs
  • une méthode de modification du code
  • une méthode de consultation du solde
  • une méthode de dépôt
  • une méthode de retrait

1.3. La banque souhaite autoriser pour certains clients un découvert. Par défaut, ce découvert autorisé est nul. (6 Points)

Une méthode decouvertAutorise permettra d'en spécifier la valeur. Un retrait est alors possible tant que le client ne dépasse pas ce découvert autorisé. Le cas échéant, le retrait est refusé. Dans ce dernier cas, la méthode de retrait lancera une exception.

  • précisez le(s) attribut(s) à ajouter à la classe CompteBancaire et modifiez le(s) constructeur(s).
  • écrivez la méthode decouvertAutorise.
  • définissez une classe RetraitInterditException qui sera lancée par la méthode de retrait dans le cas d'une tentative de retrait impossible.
  • modifiez la méthode de retrait.

1.4. La banque souhaite conserver le nombre de comptes bancaires existants, le nombre de comptes débiteurs. (2 Points)

Proposez une solution pour cela.

1.5. La banque souhaite maintenant gérer des comptes "rémunérés". Il s'agit de comptes bancaires avec un attribut supplémentaire, un "taux d'intérêt". Les titulaires de tels comptes voudront savoir : (4 Points)

  • quel sera leur solde dans x années, en supposant qu'aucune opération ne sera effectuée sur leur compte ;
  • combien d'années sont nécessaires pour doubler leur solde, en supposant qu'aucune opération ne sera effectuée sur leur compte.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125Public Class CompteBancaire Private solde As Double Private code As String Private titulaire As PersonnePhysique Private taux_int As Double Private decouvert As Double Public Shared nb As Integer = 0 Public Shared nbd As Integer = 0 Property _solde() As Double Get Return solde End Get Set(ByVal value As Double) solde = value End Set End Property Property _code() As String Get Return code End Get Set(ByVal value As String) code = value End Set End Property Property _titulaire() As PersonnePhysique Get Return titulaire End Get Set(ByVal value As PersonnePhysique) titulaire = value End Set End Property Sub New() End Sub Public Sub New(ByVal S As Double, ByVal C As String, ByVal P As String, ByVal N As String) nb += 1 decouvert = 0 _solde = S _code = C _titulaire = New PersonnePhysique(P, N) End Sub Public Sub ModifierCode() Console.WriteLine("saisire votre solde") Dim So As Double = Console.ReadLine Console.WriteLine("saisire votre code") Dim Co As String = Console.ReadLine If So = solde And Co = code Then Console.WriteLine("saisire le nouveau code") Dim Newco As String = Console.ReadLine code = Newco Else Console.WriteLine("saisire les données correctement") End If End Sub Public Function consult_so() Return solde End Function Sub dépôt(ByVal montant As Double) solde += montant End Sub ' Sub retrait(ByVal montant As Double) If solde + decouvert >= montant Then solde -= montant nbd += 1 Else Dim r As New RetraitInterditException End If End Sub Public Function decouvertAutorise(ByVal valeure As Integer) Return valeure End Function Public Function nombre_compt() As Integer Return nb End Function Public Function nombre_comp_de() As Integer Return nbd End Function Public Function calcule_sold(ByVal x_années As Double) Return solde + (solde * taux_int * x_années) End FunctionEnd Class-------------------------------------------------------------------------------Public Class PersonnePhysique Private nom As String Private prénom As String Property _nom() As String Get Return nom End Get Set(ByVal value As String) nom = value End Set End Property Property _prénom() As String Get Return prénom End Get Set(ByVal value As String) prénom = value End Set End Property Sub New() End Sub Public Sub New(ByVal N As String, ByVal P As String) _nom = N$ _prénom = P End Sub Public Function consu_nom() As String Return nom End Function Public Function consul_prénom() As String Return prénom End FunctionEnd Class-----------------------------------------------------------------------------Public Class RetraitInterditException Public Sub New() Console.WriteLine("retrait inpossible") End SubEnd Class
Article publié le 04 Janvier 2012 Mise à jour le Samedi, 17 Décembre 2022 15:32 par GC Team