Dernière scéance: Des question?????? + Deux exercices.

Slides:



Advertisements
Présentations similaires
Etudes de cas A vous de faire Bases de données DRES – B. TALON.
Advertisements

Applications N-Tiers Rappels: architecture et méthodologie
Module 5 : Implémentation de l'impression
Le mécanisme des exceptions
(Classes prédéfinies – API Java)
O.C.L. Object Constraint Language
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Exercices page JSP.
Ce qui est fait Cahier des charges L’analyse de l’application
Traitement des erreurs en Java
Principes de programmation (suite)
SQL (1) Exercices - Enoncés
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Initiation à la conception de systèmes d'information
COURS DE PROGRAMMATION ORIENTEE OBJET :
Java Remote Method Invocation (RMI)
Bibliothèque standard du C++
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
Traitements Donne accès Aux bordereaux de remises en banque Aux remises d'espèces en banque Calcul des commissions de CB À la gestion des écritures répétitives.
Mapping Objet-Relationnel
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique et de génie logiciel Développer.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Présentation de l’application bancaire
Design Pattern: Decorator
IFT 6800 Atelier en Technologies d’information
8PRO100 Éléments de programmation Les types composés.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que.
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
Structures de données IFT-2000
Structures de données IFT-10541
Processus d'un projet F.Pfister
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
AP4 - Programmation Orientée Objet Chapitre 3 : Programmation Objet en C++ class Entier { int i; int lit_i(void); void Ecrit_i(int); }; int Entier::lit_i(void)
Objectifs À la fin de ce cours, vous serez capables de :
Traitements Donne accès  Aux bordereaux de remises en banque  Aux remises d'espèces en banque  Calcul des commissions de CB  À la gestion des écritures.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
Cours 7 Classes locales Clonage Divers: tableaux.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024.
12/04/ Les exceptions Cours 11 Cours 11.
Entrées / Sorties.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Les sockets.
Un peu de Design Pattern Quelques modèles pour développer vite et bien.
Bureautique M1 Publipostage.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Citrix® Presentation Server 4.0 : Administration
Héritage Conception par Objet et programmation Java
Master 1 SIGLIS Systèmes d’Information pour l’entreprise – Java RMI Stéphane Tallard Mise en œuvre de l’exemple Bonjour RMI Master 1 SIGLIS1 Intégration.
Création d'un fichier image
JAVA Les Entrées-sorties
Citrix ® Presentation Server 4.0 : Administration Module 7 : Configuration des stratégies Citrix Presentation Server.
La comptabilisation des opérations commerciales (deuxième partie)
Créé le 27/04/2006 Mod 005 Catégorie de compte 1 1 Cat é gories de comptes Comptes relatifs aux opérations de financement investissement Comptes relatifs.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Dernière scéance: Des question?????? + Deux exercices

exercice1 On veut créer une application de gestion de compte bancaire. Chaque client possède est identifier par un numéro client, son nom et son prénom. chaque client possède un ou plusieurs comptes bancaires Chaque compte est identifier par un numéro relatif Chaque compte contient une liste dopération. Une opération peut être une opération de retrait ou de versement On veux créer une application de gestion dun agence

Modèle de données agenceclient compte opération

Modèle de traitement : On veux effectuer les opération suivante: Ajout de client le solde est fixé à la création. Effectuer des opérations de retrait: le retrait non autorisé générera une exception de type OperationInvalide à la fin de chaque exécution de lapplication les clients ainsi que les opération seront sauvegarder (en utilisant le mécanisme de la sérialisation dans un fichier banque.obj).

Première étape programmer les classe public class OperationInvalide extends Exception { float soldmax; public OperationInvalide(float sm) {soldmax=sm;} public String toString() {return "vous devez retirer au maximum : :"+soldmax;} }

public class Compte { float solde; public Compte() { } public Compte(float s){solde=s;} public void retirer(float somme) throws OperationInvalide {if (somme<solde) solde-=somme; else throw new OperationInvalide(solde); }

public class Client { String nom; String prenom; int numC; Compte compteC; public Client() { } public Client(String n,String p,int num, float solde) {nom=n;prenom=p;numC=num;compteC=new Compte(solde);} public void retirer(float somme)throws OperationInvalide { compteC.retirer(somme);} }

public class Agence { Vector listeClient=new Vector(); String name; public Agence() { } public Agence(String n) {name=n;} public void ajoutClient(Client c) {listeClient.add(c);} public Client getClient(int num) {for(int i=0;i<listeClient.size();i++) {if (((Client) listeClient.get(i)).numC==num) { return ((Client) listeClient.get(i));} } return null; } public void save()throws IOException { File f=new File("agence.obj"); ObjectOutputStream m=new ObjectOutputStream(new FileOutputStream(f)); m.writeObject(this);} public static Agence load(String n)throws IOException, ClassNotFoundException {File f=new File(n+".obj"); ObjectInputStream m=new ObjectInputStream(new FileInputStream(f)); return ((Agence) m.readObject()); }

Conception de linterface graphique Interface général agence1 load Gestion agence1 Ajout client opératio ns Quiter+ save Interface Ajout Interface opération nu mC no m pre no m ajouter nu mC som me retirer Quatre classe: une par interface voulu cinque class écouteur: une par boutton Objet:Agen ce

Les class des fenêtre Chaque fenêtre doit avoir accés aux données nécessaires a son fonctionnement 1.Class InterGéneral crée un objet agence Nouveau ou désérialisé et le passe dans à lobjet InterGestionAgence. 2.Les autres interfaces ont aussi besoin de lobjet Agence pour le gérer.

Fenêtre générale public class InterGeneral extends JFrame { JTextField nom=new JTextField("quel agence?"); JButton load=new JButton("Load"); public InterGeneral() { this.getContentPane().setLayout(new GridLayout(2,1,10,10)); this.getContentPane().add(nom); this.getContentPane().add(load); }

Fenêtre gestion dune agence public class InterGestionAgence extends JFrame { Agence ag; JButton ajout=new JButton("Ajout client"); JButton operation=new JButton("Opération"); JButton quiter=new JButton("Quit + save"); public InterGestionAgence(Agence c) { ag=c; this.setTitle("gestion de l'agence : "+ag.name); this.getContentPane().setLayout(new GridLayout(3,1,10,10)); this.getContentPane().add(ajout); this.getContentPane().add(operation); this.getContentPane().add(quiter); }

Fenêtre Ajout client public class InterfaceAjout extends JFrame { Agence ag; JLabel numL=new JLabel("Num Client"); JTextField numT=new JTextField("num???"); JLabel nomL=new JLabel("Nom"); JTextField nomT=new JTextField("Nom???"); JLabel preL=new JLabel("Prénom"); JTextField preT=new JTextField("Prénom???"); JLabel somL=new JLabel("Crédit"); JTextField somT=new JTextField("Crédit???"); JButton ajout=new JButton("Ajout"); public InterfaceAjout(Agence c) { ag=c; this.setTitle("ajout client de l'agence "+ag.name); this.getContentPane().setLayout(new GridLayout(5,2,10,10)); this.getContentPane().add(numL); this.getContentPane().add(numT); this.getContentPane().add(nomL); this.getContentPane().add(nomT); this.getContentPane().add(preL); this.getContentPane().add(preT); this.getContentPane().add(somL); this.getContentPane().add(somT); this.getContentPane().add(ajout); }}

Fenêtre opération public class InterOperation extends JFrame { Agence ag; JLabel numL=new JLabel("num Client"); JTextField numT=new JTextField("num???"); JLabel somL=new JLabel("Somme"); JTextField somT=new JTextField("somme???"); JButton retirer=new JButton("retirer"); JLabel message=new JLabel(""); public InterOperation(Agence c) { ag=c; this.setTitle("opération Client de l'agence "+ag.name); this.getContentPane().setLayout(new GridLayout(3,2,10,10)); this.getContentPane().add(numL); this.getContentPane().add(numT); this.getContentPane().add(somL); this.getContentPane().add(somT); this.getContentPane().add(retirer); this.getContentPane().add(message); message.setVisible(false); }}

Les écouteurs: load Interface général agence1 load Entrée: La valeur de zone de texteIl doit avoir accés à lobjet fenêtre auquel il est rattaché Traitement : essayer de lire désérialiser un objet Agence à partir dun fichier au nom de zone de texte « valuerdezoneText.obj »

code public class EcouteurLoad implements ActionListener { InterGeneral in; public EcouteurLoad(InterGeneral i) {in=i;} public void actionPerformed(ActionEvent e) { Agence c; try{ c=Agence.load(in.nom.getText()); InterGestionAgence inter=new InterGestionAgence(c); inter.pack();inter.show(); } catch(IOException ex){c=new Agence(in.nom.getText()); InterGestionAgence inter=new InterGestionAgence(c); inter.pack();inter.show(); } catch(ClassNotFoundException exc){ in.nom.setText("vérifier la class Agence"); in.load.setEnabled(false); } }} Attacher une instance au boutton load: load.addActionListener(new EcouteurLoad(this));

Gestion agence1 Ajout client opératio ns Quiter+ save Entrée: lobjet agence de la fenêtre en cours Traitement 1 et 2: création dune fenêtre de type interAjout où interOperation pour les deux premiers. Traitement quit: Exécute la méthode save de lobjet agence et quit en exécutant exit

Code des deux écouteurs ajout et opérations public class EcouteurAjout implements ActionListener { Agence ag; public EcouteurAjout(Agence a) {ag=a; } public void actionPerformed(ActionEvent e) { InterfaceAjout in=new InterfaceAjout(ag); in.pack();in.show(); } ****************************************************** *************************************** public class EcouteurOperation implements ActionListener { Agence ag; public EcouteurOperation(Agence a) {ag=a;} public void actionPerformed(ActionEvent e) { InterOperation in=new InterOperation(ag); in.pack();in.show(); } Attachez les ecouteur au bouttons ajout et operation: ajout.addActionListener(new EcouteurAjout(ag)); operation.addActionListener(new EcouteurOperation(ag));

Code de lécouteur quiter+save public class EcouteurQuiter implements ActionListener { Agence ag; public EcouteurQuiter(Agence a) {ag=a;} public void actionPerformed(ActionEvent e) { try{ag.save(); System.exit(1);} catch(IOException ex){ ((JButton)e.getSource()). setText("problème de sauvgarde: fermez la fenêtre"); ((JButton)e.getSource()).setEnabled(false); } Attachez l écouteur au boutton quiter: quiter.addActionListener(new EcouteurQuiter(ag));

Ecouteur du bouton ajouter Interface Ajout nu mC no m pre no m ajouter Entrée: objet agence + les valeurs de champs texte donc la fenêtre Traitement: créer un client avec les valeur en entrée et ajouter le client dans la liste des clients de lagence

Code de lécouteur AjoutClient public class EcouteurAjoutClient implements ActionListener { InterfaceAjout in; public EcouteurAjoutClient(InterfaceAjout inter) {in =inter;} public void actionPerformed(ActionEvent e) { int num=Integer.parseInt(in.numT.getText()); String n=in.nomT.getText(); String p=in.preT.getText(); float s=Float.parseFloat(in.somT.getText()); Client c=new Client(n,p,num,s); in.ag.ajoutClient(c); } Attachez l écouteur au boutton ajouter: ajout.addActionListener(new EcouteurAjoutClient(this));

Même chose ~ pour opération Interface opération nu mC som me retirer Entrée: objet agence + les valeurs de champs texte donc la fenêtre Traitement: chercher le client dans la liste et effectuer une opération: Attention il faut gérer lexception

Code écouteur retirer public class EcouteurRetirer implements ActionListener { InterOperation in; public EcouteurRetirer(InterOperation inter) {in=inter; } public void actionPerformed(ActionEvent e) { int num=Integer.parseInt(in.numT.getText()); Client c=in.ag.getClient(num); if (c==null) {in.message.setText("client n'exsite pas. refaire!!!!"); in.message.setVisible(true);} else {try{ float somme=Float.parseFloat(in.somT.getText()); c.retirer(somme);} catch(OperationInvalide ex){ in.message.setText(ex.toString()); in.message.setVisible(true);} } }} Attachez l écouteur au boutton retirer: retirer.addActionListener(new EcouteurRetirer(this));

Vous pouvez tester votre programme public Test() { } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); InterGeneral f=new InterGeneral(); f.pack(); f.show(); }