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

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

Embed Size (px)

Citation preview

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

Dernière scéance:

Des question??????

+

Deux exercices

Page 2: 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 d’opération.• Une opération peut être une opération de retrait

ou de versement• On veux créer une application de gestion d’un

agence

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

Modèle de données

agence client

compteopération

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

• 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 l’application les clients ainsi que les opération seront sauvegarder (en utilisant le mécanisme de la sérialisation dans un fichier banque.obj).

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

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;}

}

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

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);}}

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

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);}

}

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

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()); }

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

Conception de l’interface graphiqueInterface général

agence1load Gestion agence1

Ajout clientopératio

nsQuiter+saveInterface Ajout Interface

opérationnumCnomprenom ajouter

numCsomme

retirer

Quatre classe: une par interface voulu

cinque class écouteur: une par boutton

Objet:Agence

Objet: Agence

Objet: Agence

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

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 à l’objet InterGestionAgence.

2. Les autres interfaces ont aussi besoin de l’objet Agence pour le gérer.

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

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); }

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

Fenêtre gestion d’une 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); }}

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

Fenêtre Ajout clientpublic 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); }}

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

Fenêtre opérationpublic 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); }}

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

Les écouteurs:load

Interface général

agence1load

Entrée: La valeur de zone de texteIl doit avoir accés à l’objet fenêtre auquel il est rattaché

Traitement : essayer de lire désérialiser un objet Agence à partir d’un fichier au nom de zone de texte «  valuerdezoneText.obj » 

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

codepublic 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));

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

Gestion agence1

Ajout clientopératio

nsQuiter+save

Entrée: l’objet agence de la fenêtre en cours

Traitement 1 et 2: création d’une fenêtre de type interAjout où interOperation pour les deux premiers.

Traitement quit:

Exécute la méthode save de l’objet agence et quit en exécutant exit

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

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));

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

Code de l’écouteur quiter+savepublic 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));

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

Ecouteur du bouton ajouter

Interface Ajout

numCnomprenom 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 l’agence

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

Code de l’écouteur AjoutClientpublic 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));

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

Même chose ~ pour opérationInterface opération

numCsomme

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 l’exception

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

Code écouteur retirerpublic 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));

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

Vous pouvez tester votre programme

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