Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)



Documents pareils
Application web de gestion de comptes en banques

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

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

Java DataBaseConnectivity

Premiers Pas en Programmation Objet : les Classes et les Objets

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)

Corrigé des exercices sur les références

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

TD/TP PAC - Programmation n 3

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

TD/TP PAC - Programmation n 3

Chapitre 2. Classes et objets

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

Programmation d application Bases de données avec Java

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

OpenPaaS Le réseau social d'entreprise

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

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

Structurer ses données : les tableaux. Introduction à la programmation

Bases de données relationnelles

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

OCL - Object Constraint Language

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

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

Corrigés des premiers exercices sur les classes

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

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

Plateforme PAYZEN. Définition de Web-services

PROJET 1 : BASE DE DONNÉES REPARTIES

Synchro et Threads Java TM

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Définition des Webservices Ordre de paiement par . Version 1.0

Création d objet imbriqué sous PowerShell.

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

Programme Compte bancaire (code)

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Programmer en JAVA. par Tama

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

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

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

PHP. PHP et bases de données

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

Accès aux bases de données

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

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

Programmation avec des objets : Cours 7. Menu du jour

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

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

Cours Bases de données 2ème année IUT

TP1 : Initiation à Java et Eclipse

Traduction des Langages : Le Compilateur Micro Java

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

Création et Gestion des tables

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

UML et les Bases de Données

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

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

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

PHP 5. La base de données MySql. A. Belaïd 1

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

contact@nqicorp.com - Web :

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

TP Bases de données réparties

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

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

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Bases de Données relationnelles et leurs systèmes de Gestion

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Auto-évaluation Programmation en Java

PDO : PHP Data Object 1/13

Chapitre 10. Les interfaces Comparable et Comparator 1

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Les bases de données

PHP 4 PARTIE : BASE DE DONNEES

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Introduction : les processus. Introduction : les threads. Plan

Programmation Orientée Objet

Programmation en Java IUT GEII (MC-II1) 1

Paginer les données côté serveur, mettre en cache côté client

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

IFT3030 Base de données. Chapitre 1 Introduction

CREATION WEB DYNAMIQUE

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Bases de Données. Plan

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

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Bases de données avancées Introduction

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

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Package Java.util Classe générique

Java et les bases de données

Alfstore workflow framework Spécification technique

Un ordonnanceur stupide

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

1. Base de données SQLite

Transcription:

Grenoble 1 IMA Informatique & Mathématiques Appliquées UNIVERSITE JOSEPH FOURIER Sciences, Technologie, Médecine Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr) Pour la gestion des comptes de ses clients la banque IMA a mis en place une base de données relationnelle définissant les tables suivantes : Table COMPTES, stockes les données relatives aux comptes de la banque. Table CLIENTS, stocke les données relatives aux clients de la banque. Table COMPTES_CLIENTS, stocke les données relatives aux associations entre comptes et clients (permet de savoir à quels comptes un client a accès, et si il en est titulaire ou possède une procuration). 1 La banque IMA, souhaite développer différentes applications Java pour permettre l exploitation de cette base de données (entre autres est prévu le développement d une application WEB pour permettre à ses clients de consulter à distance l état de leurs comptes, et éventuellement effectuer des virements d un compte vers un autre). Pour la mise en œuvre de ces applications, les architectes logiciels de la banque IMA ont décidé de définir les classes d objets métiers suivantes : Compte : qui modélise un compte en banque. Cette classe permet de faire le lien entre une application Java et la table COMPTES dans la base de données gérant les comptes de la banque. ComptesAcessibles : qui modélise l ensemble des comptes accessibles par un client donné (information établie à partir de la table COMPTES_CLIENTS. 1 TINYINT(1) correspond à un type java boolean Page 1/5

Client : qui modélise un client (à partir des informations contenues dans la table CLIENTS). Par la suite nous ne nous intéresserons qu aux classes Compte et ComptesAccessibles. Une hiérarchie de classes d exceptions est également définie (voir annexe 1) : CompteException : classe d exception pouvant être levées par les méthodes de Compte et spécialisée en deux sous classes CompteNotFoundException (utilisée lorsqu un compte désigné par un numéro n est pas trouvé dans la base de données) et CompteOpException (lorsqu une opération sur un compte (dépôt, retrait, virement) ne peut être effectuée). 1) La classe Compte Les attributs (variables d'instance) : private DataSource datasource; la source de données pour l'accès à la base de données. private final int numero; le numéro du compte. private String titulaire; le nom du titulaire Constructeur : public Compte(DataSource ds, int no) throws SQLException, CompteNotFoundException Création d'un objet java représentant un compte donné et identifié par son numéro (paramètre no). Le paramètre ds référence une DataSource qui permet d accéder à la base de données stockant les comptes. Si il n existe pas de compte de numéro no dans la table COMPTES une CompteNotFoundException est levée. Une SQLException est levée si il y a un problème d'accès à la BD pour vérifier l'existence de ce compte. Méthodes publiques : public int getnumero()retourne le numéro du compte public String gettitulaire() retourne le nom du titulaire du compte public double getsolde() throws SQLException retourne le solde courant du compte (cette valeur est obtenue en interrogeant la table COMPTES). Une SQLException est levée si il intervient un problème d accès à la base de données. public double getdecouvertmax() throws SQLException retourne le découvert maximal autorisé pour ce compte (cette valeur est obtenue en interrogeant la table COMPTES). Une SQLException est levée si il intervient un public double getdebitmax() throws SQLException retourne le débit maximal autorisé pour ce compte (cette valeur est obtenue en interrogeant la table COMPTES). Une SQLException est levée si il intervient un public boolean estadecouvert() throws SQLException renvoie la situation de découvert du compte (true si le compte est à découvert, false sinon). Une SQLException est levée si il intervient un private double retraitmaxpossible() throws SQLException renvoie le montant maximal qu'il est possible de débiter à un instant donné sur ce compte. Ce montant est le minimum entre le débit maximal autorisé et la somme du solde du compte et du débit maximum autorisé. Une SQLException est levée si il intervient un public void crediter(double s) throws SQLException, CompteOpException dépose la somme s sur le compte (s doit être > 0). Le solde du compte est modifié dans la table COMPTES. Une SQLException est levée si un problème d'accès à la BD a lieu. Une CompteOpException est levée si le dépôt ne peut être réalisé (s <0). Page 2/5

public void debiter(double r) throws SQLException, CompteOpException débite le compte d'un montant r donné (le montant spécifié pour le retrait doit être inférieur au retrait maximal possible ou supérieur à 0). Le solde du compte est modifié dans la table COMPTES. Une SQLException est levée si un problème d'accès à la BD a lieu. Une CompteOpException est levée si le retrait ne peut être réalisé (r <0 ou r > au retrait maximal possible sur ce compte). public void virer(double r, Compte c) throws SQLException, CompteOpException effectue un virement d un montant r de ce compte vers le compte c. Une transaction est effectuée pour modifier les soldes des comptes dans la table COMPTES. Une SQLException est levée si un problème d'accès à la BD a lieu, la transaction est alors annulée. Une CompteOpException est levée si le virement ne peut être réalisé, (r <0 ou bien r > au retrait maximal possible sur ce compte). Question 1 : a) Quel est l intérêt d utiliser une variable d instance de type javax.sql.datasource plutôt qu une référence de type java.sql.connection pour les accès à la base de données? b) Quel est l intérêt de définir la hiérarchie d exceptions CompteException, CompteOpException, CompteNotFoundException? c) Ecrire le code de la classe CompteOpException. d) Ecrire le code du constructeur de la classe Compte. e) Ecrire le code des méthodes getsolde(), getdecouvermax() et getdebitmax(). Vous pouvez factoriser le code similaire en introduisant une méthode privée invoquée par ces trois méthodes. Dans ce cas vous écrirez également le code de cette méthode. f) Ecrire le code de la méthode debiter(). g) Ecrire le code de la méthode virer(double r, Compte c). 2) La classe ComptesAccessibles Attributs : private int idclient; l'identifiant du client associé à cette liste. private... lescomptes; la structure de données pour stocker l ensemble des comptes accessibles par le client idclient. Constructeur : public ComptesAccessibles(DataSource ds, int idclient) throws SQLException, CompteException, ClientNotFoundException Construit la liste des comptes accessibles pour le client dont l identifiant est idclient. ds est la référence d un objet DataSource permettant l'accès à la base de données. Recherche dans la table COMPTES_CLIENTS, tous les numéros de comptes pour lesquels CLIENT_ID=idClient, puis pour chacun des numéros trouvés crée l objet Compte correspondant et stocke sa référence dans une structure de donnée interne à ComptesAccessibles. Une SQLException est levée si une erreur intervient lors de l'accès à la base de données. Une CompteException est levée si l'un des comptes de la liste ne peut être créé. Méthodes publiques : public int nbcomptes() retourne le nombre de comptes présent dans l ensemble des comptes accessibles. public Compte compte(int no) recherche dans l ensemble des comptes accessibles le compte de numéro no. Retourne sa référence si il est présent, null si il n y est pas. public Iterator<Compte> iterator()retourne un itérateur pour le parcours de l ensemble des comptes accessibles. Page 3/5

Question 2 : a) Quel type java utiliseriez vous pour l attribut lescomptes? Pourquoi? b) Ecrire le code du constructeur de la classe ComptesAccessibles c) Ecrire le code des méthodes nbcomptes(), compte(int no) et iterator(). Question 3 : Quelles modifications apporteriez-vous aux classes Compte et ComptesAccessibles afin que l iterateur retourné par la méthode iterator() de cette dernière fournisse les comptes dans l ordre croissant de leurs numéros? Annexe : Hiérarchie des exceptions CompteException Annexe 2 : Quelques requêtes SQL Recherche dans la table COMPTES_BANQUE le solde du compte de numéro 1001 SELECT SOLDE FROM COMPTES_BANQUE WHERE NUMERO=1001 Recherche de tous les numéros de compte pour lequels le client 60097 a une autorisation d accès SELECT NUMERO FROM COMPTES_CLIENTS WHERE CLIENT_ID = 60097 Ajout de 1000 au solde du compte de numéro 1001 UPDATE COMPTES_BANQUE SET SOLDE = SOLDE+1000 WHERE NUMERO=1001 Page 4/5

Page 5/5