ING 1 - POO Java année TD-TP n 6. Application à la gestion bancaire Partie sans héritage

Documents pareils
Premiers Pas en Programmation Objet : les Classes et les Objets

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

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

Programmation par les Objets en Java

TD/TP PAC - Programmation n 3

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

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

TD/TP PAC - Programmation n 3

Programme Compte bancaire (code)

Corrigé des exercices sur les références

Projet de programmation (IK3) : TP n 1 Correction

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

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

Java Licence Professionnelle CISII,

Langage Java. Classe de première SI

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

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

TP1 : Initiation à Java et Eclipse

Package Java.util Classe générique

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

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

Chapitre VI- La validation de la composition.

Une introduction à Java

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

RMI le langage Java XII-1 JMF

Initiation à JAVA et à la programmation objet.

Programmer en JAVA. par Tama

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Remote Method Invocation (RMI)

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

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

Design patterns. Design patterns - définition. Design patterns - avantages

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

Synchro et Threads Java TM

Cours 1: Java et les objets

Objets et Programmation. origine des langages orientés-objet

Auto-évaluation Programmation en Java

Support de cours et TD Programmation Orientée Objet

Exercices sur les interfaces

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

as Architecture des Systèmes d Information

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

Programmation avec des objets : Cours 7. Menu du jour

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

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

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

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

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

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

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

Les frameworks au coeur des applications web

Java 1.5 : principales nouveautés

Threads. Threads. USTL routier 1

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

TP, première séquence d exercices.

Généralités sur le Langage Java et éléments syntaxiques.

INITIATION AU LANGAGE JAVA

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

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

Un ordonnanceur stupide

Programmation Orientée Objet application au langage Java Version Novembre 2007

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

Notion de thread (1/2)

Programmation Objet Java Correction

Classe Interne, Anonyme & Enumération

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Environnements de développement (intégrés)

Introduction : les processus. Introduction : les threads. Plan

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation Par Objets

Utiliser Java sans BlueJ

Remote Method Invocation en Java (RMI)

Corrigés des premiers exercices sur les classes

Remote Method Invocation Les classes implémentant Serializable

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

TD2 Programmation concurrentielle

Programmer en Java. OC Informatique GYMNASE DE BURIER

Apprendre Java en 154 minutes

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Génie Logiciel avec Ada. 4 février 2013

Calcul Parallèle. Cours 5 - JAVA RMI

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

ACTIVITÉ DE PROGRAMMATION

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

Java c est quoi? Java pourquoi?

Programmation en Java IUT GEII (MC-II1) 1

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)

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation Objet I

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Flux de données Lecture/Ecriture Fichiers

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Transcription:

ING 1 - POO Java année 2015-2016 TD-TP n 6 Application à la gestion bancaire Partie sans héritage Nous allons commencer par définir une classe Compte et une classe Client, version améliorée du TD/TP précédent. La classe Client A réaliser Créer la classe Client en utilisant le diagramme de classes et les précisions concernant les méthodes : 1. le constructeur mémorise le numéro et le nom 2. les méthodes accesseurs renvoient et modifient les valeurs des attributs correspondants 3. la méthode tostring() renvoie une représentation textuelle d un client (cf. exemple de résultat plus bas) 4. la méthode main définit les instructions suivantes : instancier un client de numéro 1 et de nom "Gold" instancier un client de numéro 2 et de nom "Silver" afficher les 2 clients

modifier le nom du client de la 2ème instance avec "Platinum" (au lieu de Silver) afficher la 2ème instance de Client L exécution produit le résultat suivant : Client 1 - Gold Client 2 - Silver Client 2 Platinum la classe Compte Vous définirez la classe Compte à partir du schéma ci-dessous et des informations qui vous sont données. A réaliser Créer la classe Compte en utilisant le diagramme de classes et les précisions concernant les méthodes : 1. ajouter un attribut privé qui mémorise le client du compte 2. modifier le constructeur pour mémoriser le client à la création d un compte 3. ajouter une méthode accesseur getclient() qui renvoie le client du compte 4. modifier la méthode tostring() pour ajouter l affichage du nom du client Utiliser le programme principal suivant pour tester votre application public static void main(string [] args){ Client c1 = new Client("Gold",1); Client c2 = new Client("Silver",2);

Compte com1 = new Compte(10,c1); Compte com2 = new Compte(20,c2); System.out.println(com1); System.out.println(com2); java Compte Compte 10 - client Gold - Solde : 0.0 Compte 20 - client Silver - Solde : 0.0 Dernière amélioration Un client pouvant posséder plusieurs compte, modifier la classe Client en conséquence en ajoutant un attribut de type ArrayList<Compte> à chaque client. Vous ajouterez les méthodes de la figure suivante permettant de rajouter un compte à un client et d obtenir la liste de tous ses comptes. La méthode tostring() sera surchargée afin d afficher la liste de tous les comptes d un client et leur solde (cf exemple ci-dessous) Utiliser le programme principal suivant pour tester votre application public static void main(string [] args){ Client c1 = new Client("Gold",1); System.out.println(c1); Compte com1 = new Compte(10,c1); Compte com2 = new Compte(20,c1); c1.addcompte(com1); c1.addcompte(com2); System.out.println(c1);

com1.credit(500.0); System.out.println(c1); Client 1 - Gold Client 1 - Gold Compte n 10 - solde : 0.0 Compte n 20 - solde : 0.0 Client 1 - Gold Compte n 10 - solde : 500.0 Compte n 20 - solde : 0.0 HERITAGE La notion de compte a été décrite précédemment. On peut cependant distinguer 2 types de comptes spécialisés : le compte courant, qui sert aux opérations quotidiennes. le compte épargne, vers lequel on effectue périodiquement des opérations de transfert d un montant fixe à partir d un compte courant Ces 2 types de comptes sont des comptes classiques (ils héritent de compte) avec en plus des particularités dans chacune de leurs classes respectives

A réaliser Créer la classe CompteCourant en utilisant le diagramme de classes et les précisions concernant les méthodes : 1. la classe CompteCourant hérite de Compte 2. elle définit un constructeur qui attend un numéro de compte et un client : ce constructeur appellera le constructeur de la classe Compte en lui passant les valeurs de numéro et Client (méthode super ) 3. elle redéfinit la méthode tostring() pour afficher "Compte courant no " numéro du compte et solde (cf. exemple plus bas) A réaliser Créer la classe CompteEpargne en utilisant le diagramme de classes et les précisions concernant les méthodes : 1. la classe CompteEpargne hérite de Compte 2. elle définit les attributs permettant la mémorisation du compte courant de transfert et du montant de transfert 3. elle définit un constructeur qui attend un numéro de compte, un montant de transfert, un client et un compte courant à partir duquel des transferts seront réalisés : ce constructeur appellera le constructeur de la classe Compte en lui passant les valeurs de numéro et Client (méthode super ) 4. elle définit une méthode transfert() qui crédite le compte et débite le compte courant en utilisant le montant de transfert 5. elle redéfinit la méthode tostring() pour afficher "Compte épargne no " numéro du compte et solde (cf. exemple plus bas) A réaliser Créer la classe BanqueApp à partir de la classe BanqueApp et modifier le déroulement dans la méthode main : 1. la méthode main :

créer une ArrayList de Client ajouter 4 clients à la collection des clients de la banque (numéro 1 à 4 et nom "Client" suivi du numéro : Client1, Client2, etc.) lister les clients de la banque dans une boucle, parcourir les clients pour leur ajouter des comptes : récupérer le client créer un compte courant pour le client (numéro de compte : numéro du client * 1000 + 1) créer un compte épargne pour le client (numéro de compte : numéro du client * 1000 + 2, référence au compte courant (pour les transferts) et montant de transfert de 50 ajouter les 2 comptes au client lister les clients de la banque Si vous êtes arrivé jusqu ici et vous avez réussi tous les exemples précédents, bravo! L exécution produit le résultat suivant : Banque DuTresor ====================== Liste initiale des clients: Client 1 - client1 Client 2 - client2 Client 3 - client3 Client 4 - client4 Client 1 - client1 Compte n 1001 - solde : 0.0 Compte n 1002 - solde : 0.0 Client 2 - client2 Compte n 2001 - solde : 0.0 Compte n 2002 - solde : 0.0 Client 3 - client3 Compte n 3001 - solde : 0.0

Compte n 3002 - solde : 0.0 Client 4 - client4 Compte n 4001 - solde : 0.0 Compte n 4002 - solde : 0.0 import java.util.arraylist; public class Client { private long numéro; private String nom; private ArrayList<Compte> comptes; public Client(long numéro, String nom){ this.numéro = numéro; this.nom = nom; this.comptes = new ArrayList<Compte>(); public String getnom(){ return nom; public long getnumero(){ return numéro; public void setnom(string n){ nom = n; public void addcompte(compte c){ comptes.add(c); public String tostring(){ String res = ""; if (comptes.isempty()) // vrai si l'arraylist des clients est vide return "client " + nom + "\t numéro " + numéro + "\n" + "pas de compte associé"; for(int i = 0; i < comptes.size(); i++) res = res + comptes.get(i).tostring() + "\n"; return "client " + nom + "\t numéro " + numéro + "\n" + res; public static void main(string [] args){ Client c1 = new Client(1,"Gold"); Client c2 =new Client(2,"Silver"); Compte com1 = new Compte(10,c1); Compte com2 = new Compte(20,c2); c1.addcompte(com1); c1.addcompte(com2);

System.out.println(c1); com1.credit(500.0); System.out.println(c1); public class Compte { private long numéro; private Client client; private double solde; public Compte(long numéro, Client c){ this.numéro = numéro; client = c; solde = 0.0; public double getsolde(){ return solde; public Client getclient(){ return client; public long getnumero(){ return numéro; public void credit(double m){ solde += m; public void debit(double m){ solde -= m; public String tostring(){ String res; solde; res = "Compte " + numéro + " - client " + client.getnom() + " - " + return res; public static void main(string [] args){ Client c1 = new Client(1,"Gold"); Client c2 = new Client(2,"Silver"); public class CompteCourant extends Compte { public CompteCourant(long numero, Client cl){ super(numero,cl);

public String tostring(){ return "Compte courant numéro " + getnumero() + " - solde " + getsolde(); public class CompteEpargne extends Compte { private CompteCourant comptetransfert; private double montanttransfert; public CompteEpargne(long numéro, Client cl, montanttransfert){ super(numéro, cl); CompteCourant comptetransfert, double this.comptetransfert = comptetransfert; this.montanttransfert = montanttransfert; public void transfert(){ credit(montanttransfert); comptetransfert.debit(montanttransfert); public String tostring(){ return "Compte épargne numéro " + getnumero() + " - solde " + getsolde();