import java.util.*; import java.awt.event.*; public class Kontomodel { private String ejer; private double saldo; private List bevægelser = new ArrayList(); // til historik public Kontomodel(String ejer1) { ejer = ejer1; } public double getSaldo() { return saldo; } public String getEjer() { return ejer; } public String toString() { return ejer + ": "+saldo+" kr"; } public void overfør(Kontomodel til, double beløb) { if (beløb<0) throw new IllegalArgumentException( "Beløb kan ikke være negativt eller nul."); saldo = saldo - beløb; til.saldo = til.saldo + beløb;// privat variabel kan ses i samme klasse String ændring = "Overført "+beløb+" fra "+ejer+" til "+til.ejer; bevægelser.add(ændring); til.bevægelser.add(ændring); fortælLyttere(ændring); // besked til alle visninger af denne konto til.fortælLyttere(ændring); // besked til alle visninger af beløbsmodtager } public void hæv(double beløb) { if (beløb<0) throw new IllegalArgumentException( "Beløb kan ikke være negativt eller nul."); saldo = saldo - beløb; String ændring = "Hævet "+beløb; bevægelser.add(ændring); fortælLyttere(ændring); // send besked til alle visninger } public void indsæt(double beløb) { if (beløb<0) throw new IllegalArgumentException( "Beløb kan ikke være negativt eller nul."); saldo = saldo + beløb; String ændring = "Indsat "+beløb; bevægelser.add(ændring); fortælLyttere(ændring); // Send besked til alle visninger } // // Underetning af hændelses-lyttere. // /** Lyttere til denne model */ private List lyttere = new ArrayList(2); /** Tilføjer en lytter */ public synchronized void addActionListener(ActionListener l) { lyttere.add(l); } /** Fjerner en lytter */ public synchronized void removeActionListener(ActionListener l) { lyttere.remove(l); } /** Fortæller alle lytter om en ændring i modellen */ private void fortælLyttere(String ændring) { // opret hændelse, der beskriver ændringen ActionEvent hændelse = new ActionEvent(this, 0, ændring); for (Iterator i=lyttere.iterator(); i.hasNext(); ) { ActionListener l = (ActionListener) i.next(); l.actionPerformed(hændelse);// underret l om hændelsen } } }