TP banque. On se propose d'utiliser la classe Compte (cf. TP Comptes) afin de gérer également les mouvements bancaires.



Documents pareils
Corrigés des premiers exercices sur les classes

Chapitre 10. Les interfaces Comparable et Comparator 1

Premiers Pas en Programmation Objet : les Classes et les Objets

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Tp 1 correction. Structures de données (IF2)

Corrigé des exercices sur les références

Programme Compte bancaire (code)

TD/TP PAC - Programmation n 3

1. Base de données SQLite

Application web de gestion de comptes en banques

Package Java.util Classe générique

Cours 1: Java et les objets

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TD/TP PAC - Programmation n 3

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

1. Introduction Création d'une requête...2

TP1 : Initiation à Java et Eclipse

Qu est-ce que le relevé de compte?

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmer en JAVA. par Tama

Logo interactif renvoyant respectivement vers les sites «service-public.fr» et «Minefi.gouv.fr».

Chapitre 2. Classes et objets

Les chaînes de caractères

Programmation en Java IUT GEII (MC-II1) 1

Héritage presque multiple en Java (1/2)

Programmation par les Objets en Java

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Auto-évaluation Programmation en Java

Remote Method Invocation (RMI)

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

PROJET 1 : BASE DE DONNÉES REPARTIES

TD3: tableaux avancées, première classe et chaînes

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

I. Introduction aux fonctions : les fonctions standards

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Programmation Orientée Objet en C#

EXERCICES UML. Modéliser cette situation par un diagramme de cas d utilisation. Consulter planning

CONVENTION de souscription du forfait «AGIR 18/28» CONDITIONS PARTICULIERES

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Avec une Carte Bancaire*

Gestion distribuée (par sockets) de banque en Java

Java Licence Professionnelle CISII,

TP 1. Prise en main du langage Python

Projet de programmation (IK3) : TP n 1 Correction

Programmation avec des objets : Cours 7. Menu du jour

alg - Classes, instances, objets [oo] Exercices résolus

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Introduction à JDBC. Accès aux bases de données en Java

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

C++ - Classes, instances, objets [oo] Exercices résolus

SOMMAIRE... 1 ESPACE DU CLUB...

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Création d objet imbriqué sous PowerShell.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Master d Informatique Corrigé du partiel novembre 2010

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

GLOSSAIRE des opérations bancaires courantes

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

Préparez-vous à changer d avis sur la banque.

as Architecture des Systèmes d Information

Il n y a pas besoin d aller très loin pour trouver une banque différente.

Les arbres binaires de recherche

Chapitre VI- La validation de la composition.

Gérer sa trésorerie. Fiche. au quotidien. Sage 100 Trésorerie Version 16. Déroulement des étapes à suivre pour gérer sa trésorerie quotidienne.

Programmation Objet - Cours II

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Travaux Dirigés n 1 : chaînes de caractères

TP : Gestion d une image au format PGM

SOCLE D'HARMONISATION DES TERMES DES OPERATIONS BANCAIRES COURANTES. Janvier 2011 CCSF/CFONB

Formulaire d abonnement au service e-bdl

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Utilisation d objets : String et ArrayList

AGRÉGATION «ÉCONOMIE ET GESTION»

ASSOCIATION NATIONALE D'ASSISTANCE ADMINISTRATIVE ET FISCALE DES AVOCATS

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Arbres binaires de recherche

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Programmation par composants (1/3) Programmation par composants (2/3)

Document d information sur les offres de La Poste et leurs accès aux personnes handicapées intellectuelles

BREVET DE TECHNICIEN SUPÉRIEUR BANQUE GESTION DE CLIENTÈLE ET COMMUNICATION PROFESSIONNELLE

Pré-conditions : Evénement déclencheur : le client souhaite un virement. Description du déroulement du cas : Description des Use cases

TP, première séquence d exercices.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

HORS SÉRIE. GLOSSAIRE des opérations bancaires courantes FEDERATION BANCAIRE FRANCAISE LES MINI-GUIDES BANCAIRES. décembre 2005

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

e)services - Guide de l utilisateur e)carpa

Initiation à la programmation en Python

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Transcription:

TP banque Auteur : Xavier Coelembier On se propose d'utiliser la classe Compte (cf. TP Comptes) afin de gérer également les mouvements bancaires. Pour commencer, vous aller récupérer la classe Compte (légèrement modifiée). Une classe AppBanque est présente également, elle servira à tester les différentes classes. Nouvelles règles de gestion 1) Construction du diagramme de Classes. - La banque regroupe les différents comptes. Question 1.1 Proposer un diagramme de classes dans lequel figurent les deux classes, Compte et Banque. Vous ferez figurer les attributs de la classe Compte (à partir de l'analyse du fichier), les relations, les valeurs de multiplicité ainsi qu'une proposition de navigabilité. Solution - Un mouvement bancaire est une opération concernant un compte. Un mouvement a une date de réalisation, un montant (en crédit ou en débit) et est d'un certain type. Un compte n'est réellement modifié par un mouvement que le jour correspondant à la date de valeur du mouvement. Ainsi par exemple, un dépot de chèque peut être fait le 2 novembre 2004, mais le compte ne sera crédité que le 6 novembre, soit 4 jours plus tard. Si le compte est débiteur (solde inférieur à 0), le titulaire doit payer des aggios sur le montant du débit pendant la durée du solde débiteur et à un taux fixé par la banque. La durée des soldes débiteurs dépend des dates de valeurs des mouvements. - Un type de mouvement caractérise une opération, et détermine ainsi la date de valeur de ce mouvement. Nous prendrons en compte qu'un nombre limité de mouvements : Type Code Prélèvement pre 0 Chèque débité ch 0 Chèque déposé dch 4 Dépot d'espèce des 0 Virement vir 0 Retrait dab -1 Délais en nb de jours pour la mise en valeur Commentaire En débit ou en crédit

distributeur Intérêt des aggios Retrait en guichet int 0 ret -1 Sont toujours débités. Question 1.2 Compléter le diagramme de classe en faisant figurer les nouvelles classes (avec les attributs) et leurs relations. Solution L'objectifs de la nouvelle application est de gérer les mouvements et de calculer les éventuels aggios. On vous fournit le diagramme de classe dans lequel figurent toutes les classes. Diagramme de classes. Question 1.3 A qui sert la classe Ecran? Quel est son intérêt? Quelles relations a-t-elle avec les autres classes? Réponse Question 1.4 La classe Paramètre ne contient qu'une seule méthode statique GetTaux() - le taux ext fixé à 0.0021-. Ecrire le code de cette classe ainsi qu'un appel à sa méthode dans une classe extérieure, fonction Main par exemple. Réponse Remarque : dans le diagramme de classes on peut voir une association entre la classe Banque et la classe Type ; ce choix de conception est nécessaire pour la suite du TP. 2) Etude du code des classes On vous fournit un extrait de la classe Banque : class Banque{ public Banque() { mescomptes= new ArrayList(); mestypes = new ArrayList(); public void AjouteType(string libel, int nbjour) { Type t = new Type(libel, nbjour);

AjouteType(t); public void AjouteType(Type untype) { mestypes.add(untype); // les attributs classe Banque private ArrayList mescomptes; private ArrayList mestypes; Question 2.1 Quels sont les attributs de la classe? Quels rôles jouent ils? Reponse Question 2.2 En utilisant l'aide MSDN (touche F1 sur ArrayList), indiquer en quelques phrases les services rendus par cette classe. Quels sont ses avantages comparés avec la classe tableau? Reponse Question 2.3 Que font les méthodes AjouteType? Réponse 3) Codage des classes Intégrer le code qui crée la banque et lui ajoute des types. using System; using System.Collections; class AppBanques { static void Main() { // *********A àjouter***************** Banque b = new Banque(); b.ajoutetype("ch",0); b.ajoutetype("pre",0); b.ajoutetype("dab",-1); b.ajoutetype("ret",-1); b.ajoutetype("vir",0); b.ajoutetype("dch",4);

b.ajoutetype("des",0); b.ajoutetype("int",0); // **********Fin ajout***************** Question 3.1 Ecrire la classe Type ; elle proposera un constructeur à deux arguments et deux accesseurs sur ses attributs privés. Compiler. Question 3.2 Ecrire la méthode publique AjouteCompte( ) de la classe Banque qui permet de créer un Compte et de l'ajouter à la collection mescomptes de la classe Banque. Tester en écrivant : DateTime d1 = Convert.ToDateTime( "02/01/2004"); b.ajoutecompte(12345,"toto",0,-5000,d1); Question 3.3 Gestion de l'affichage. Ecrire la classe Ecran qui contiendra une méthode statique surchargée : Affiche( Compte uncompte); // affiche les infos d'un compte Tester dans le Main avec : Compte c = new Compte(123, "Bison",100,-1000,d1); Ecran.Affiche(c); Affiche (Banque unebanque, int nbcomptes); // affiche nb premiers comptes : pour cela un accesseur GetCompte(int indicecompte) est nécessaire dans la classe Banque) Tester dans le Main avec : d1 = Convert.ToDateTime( "06/04/2004"); b.ajoutecompte(45657, "titi",0,-1000,d1); d1 = Convert.ToDateTime( "02/02/2004"); b.ajoutecompte(32345,"dupond",0,-1500,d1); d1 = Convert.ToDateTime( "03/03/2004"); b.ajoutecompte(11633, "durand",0,-500,d1);

d1 = Convert.ToDateTime( "05/04/2004"); b.ajoutecompte(2568,"dubois",0,-500,d1); d1 = Convert.ToDateTime( "06/06/2004"); b.ajoutecompte(8978, "duval",0,-2000,d1); d1 = Convert.ToDateTime("01/09/2004"); b.ajoutecompte(1245, "dutronc",0,-500,d1); Ecran.Affiche(b,6); Question 3.4 Ecrire une méthode publique RendCompte( ) de la classe Banque qui retourne un Compte en fonction de son numéro. La Fonction retourne null si le compte n'est pas trouvé. Tester en écrivant : Ecran.Affiche(b.RendCompte(1245)); 4) Les méthodes des classes Mouvement et Banque La classe Mouvement se présente ainsi : class Mouvement : IComparable { public int CompareTo(object obj) { if (obj == null) return 1; if (obj.gettype()!= this.gettype()) throw new ArgumentException("Comparaison invalide"); Mouvement mvt1 = (Mouvement)obj; int result = this.getvaleur().compareto(mvt1.getvaleur()); return result; // les attributs classe Mouvement private float Montant; private float SoldeAvant; private DateTime DateMvt;

private Type montype; Remarque : ne vous attardez pas sur ce qui est encore un peu obscur!! regardez seulement pour l'instant les attributs. Question 4.1 Ecrire un constructeur à 4 arguments ainsi que les accesseurs. Créer un Mouvement, compiler. Question 4.2 Ecrire la méthode Affiche(Mouvement) de la classe Ecran. Vous écrirez au préalable un accesseur GetType(int indicetype) dans la classe Banque. Tester avec : d1 = Convert.ToDateTime("02/11/2004"); Mouvement m = new Mouvement(100,1000,b.GetType(1), d1); Ecran.Affiche(m); Question 4.3 Surchargez (écrire une nouvelle méthode de même nom) la méthode GetType(string libtype) de la classe Banque permettant de récupérer le type connaissant son libellé. Tester après avoir écrit une nouvelle méthode Affiche de la classe Ecran permettant d'afficher les informations d'un objet de la classe Type. Tester avec : Ecran.Affiche(b.GetType("vir")); C'est la classe Banque qui déclenchera les mouvements grâce à la méthode EffectuerMvt : public void EffectuerMvt(int num,datetime dmvt,float montant,string TMvt) { Type t1 = this.gettype(tmvt); Compte c1 = this.rendcompte(num); if (c1!=null) if (montant < 0) c1.debiter(montant,t1,dmvt); else c1.crediter(montant,t1,dmvt); Question 4.4 Après avoir intégré la méthode EffectuerMvt dans le code, écrire les méthodes Crediter et Debiter de la classe Compte. Tester avec :

d1 = Convert.ToDateTime("01/09/2004"); b.effectuermvt(12345,d1,1000,"des"); b.effectuermvt(12345,d1,-3000,"ch"); d1 = Convert.ToDateTime("02/09/2004"); b.effectuermvt(12345,d1,1000,"dch"); d1 = Convert.ToDateTime("04/09/2004"); b.effectuermvt(12345,d1,3000,"vir"); d1 = Convert.ToDateTime("05/09/2004"); b.effectuermvt(12345,d1,-1000,"dab"); d1 = Convert.ToDateTime("10/09/2004"); b.effectuermvt(12345,d1,-5000,"dab"); d1 = Convert.ToDateTime("02/01/2004"); b.effectuermvt(12345,d1,1000,"dch"); d1 = Convert.ToDateTime("27/10/2004"); b.effectuermvt(12345,d1,-1500,"dab"); Ecran.Affiche(b.RendCompte(12345)); Ceci doit produire : Méthode GetValeur de la classe Mouvement Question 4.5 Ecrire la méthode GetDateValeur() : DateTime de la classe Mouvement qui va permettre de calculer la date de valeur d'un mouvement. Elle s'obtient en ajoutant le nombre de jour à la date du mouvement. Ce nombre est présent dans l'occurrence de la classe Type rattachée au mouvement. Si ce nombre est positif et la date obtenue est un dimanche alors la date de valeur est le lundi suivant. Si ce nombre est négatif et la date obtenue est un dimanche alors la date de valeur est le vendredi précédent. Si ce nombre est négatif et la date obtenue est un samedi alors la date de valeur est le vendredi précédent. Remarque : vous regarderez dans MSDN la classe DateTime Modifier la méthode Affiche (unmvt Mouvement) de la classe écran pour afficher cette date de valeur. Tester en écrivant : Ecran.Affiche(b.RendCompte(12345));

5) le calcul des aggios. Méthode CalculAgios (DtDébut, DtFin : DateTime) : réel de la classe Compte. Un calcul d'agios s'effectue pour une période donnée (date début date de fin), il consiste à recalculer le solde du compte en date de valeur et si le solde est négatif calculer pendant combien de jours voici ses principales phases : a) extraction des mouvements dont la date de mouvement est >= à la date de début et <= à la date de fin (utiliser une collection pour recevoir les mouvements extraits) b) trier les mouvements extraits sur la date de valeur (Cf. méthodes de la collection) c) calcul du solde de début de période : - Solde avant du premier mouvement de la période (si il y a des mouvements extraits) - Si aucun mouvement pour la période : solde avant du premier mouvement supérieur à la date de fin, si il n'y a pas de mouvement supérieur à la date de Fin prendre le solde du compte. d) si le solde à une date de valeur est débiteur (inférieur à zéro) calculez les agios : nbj = nombre de jours entre la date de valeur du solde débiteur et la date de valeur du mouvement suivant, agios = solde * nbj * Taux. e) cumulez les agios sur la période. Question 5.1 Ecrire une méthode CalculAgios( ) de la classe banque qui : Calcule les agios pour le compte passé en paramètre Génère le mouvement et le débit des agios sur le compte avec le type de mouvement " int " Testez avec : DateTime debuta = Convert.ToDateTime("01/09/2004"); DateTime fina = Convert.ToDateTime("30/09/2004"); b.calculagios(12345,debuta,fina,"int"); Ecran.Affiche(b.RendCompte(12345));

Question 5.2 Ecrire une méthode CalculAgios( ) de la classe Banque pour calculer les agios de tous les comptes Testez avec : d1 = Convert.ToDateTime("01/09/2004"); b.effectuermvt(45657,d1,2000,"des"); b.effectuermvt(32345,d1,1500,"des"); b.effectuermvt(11633,d1,1200,"des"); d1 = Convert.ToDateTime("01/09/2004"); b.effectuermvt(8978,d1,750,"des"); b.effectuermvt(8978,d1,-1750,"ret"); DateTime debuta = Convert.ToDateTime("01/09/2004"); DateTime fina = Convert.ToDateTime("30/09/2004"); b.calculagios(debuta,fina,"int"); int nbcompte = b.getnbcomptes(); // il faut écrire cette nouvelle méthode qui renvoie le nombre de comptes dans la collection Ecran.Affiche(b,nbCompte);