Første
Objekt kommunikation (repetition) serie, Planche nr. 25
Kursus Indhold

Udskrift af : Objekt kommunikation (repetition)

Planche 1 : Objekt kommunikation (repetition)

Java-objekter kommunikerer på 3 måder:

Planche 2 : Hændelser ("Events")

Hændelser er metoder, der udføres som en del af den forventede afvikling af programmer, på tidspunkter der ikke kan fastsættes. Eksempel:

Planche 3 : 2 modeller

Planche 4 : Eventmodel 1.0

    public bolean HandleEvent (Event e) {
      ... kig på e, for at se, om det var en hændelse du kan bruge
      return true ; // hvis du har "brugt" eventet
      ..
      return false ; // hvis du ikke har "brugt" eventet
}

Planche 5 : Begrænsninger

Man bør ikke anvende model 1.0 fordi:

Planche 6 : Eventmodel 1.1

Der er to dele i eventmodel 1.1 De sammenkædes, ved at lytteren registrerer sig for at modtage en speciel hændelse.

Planche 7 : Event klasser

Planche 8 : Implementer V.1.1

Planche 9 : Eksempel - Trin 1

Kig i java.awt.event og find en passende klasse:
  • ActionEvent
  • AdjustmentEvent
  • ComponentAdapter
  • ComponentEvent
  • ContainerAdapter
  • ContainerEvent
  • FocusAdapter
  • FocusEvent
  • InputEvent
  • ItemEvent
  • KeyAdapter
  • KeyEvent
  • MouseAdapter
  • MouseEvent
  • MouseMotionAdapter
  • PaintEvent
  • TextEvent
  • WindowAdapter
  • WindowEvent
  • Se nærmere i pakke-dokumentationen

    Planche 10 : Eksempel - trin 1 (fortsat)

    Klasserne implementeres v.h.a følgende interface-klasser:
         ActionListener 
         AdjustmentListener 
         ComponentListener 
         ContainerListener 
         FocusListener 
         ItemListener 
         KeyListener 
         MouseListener 
         MouseMotionListener 
         TextListener 
         WindowListener 
    

    De mest interessante er:

    Planche 11 : Eksempel: Trin 2

    Implementer interface.

    2 måder:

    Planche 12 : Eksempel: Trin 2 (fortsat)

    Interface ActionListener har en metode, actionPerformed()

    Hvis klassen selv er lytter (et event pr klasse)

    java.awt.event.*;
    
    class MinApplet extends java.applet.Applet implements ActionListener {
    	
    	// øvrige kode...
    
    	public void actionPerformed(ActionEvent e) {
    		// behandling af aktions event
    	}
    
    	// øvrige kode
    }
    

    Hvis man opretter en særlig lytter-klasse

    java.awt.event.*;
    
    class MinApplet extends java.applet.Applet {
    	
    	// øvrige kode...
    
            class MinActionListener implements ActionListener {
              Lokalhenvisning h;
              
    	  MinActionListener(Lokalhenvisning h) {
    	    // konstruktør
                this.h = h ;
              } 
    
    	  public void actionPerformed(ActionEvent e) {
    		// behandling af aktions-hændelse
    	  }
    	}
    	// øvrige kode
    }
    

    Planche 13 : Eksempel: Trin 3

    Registrer lytteren:

    Planche 14 : Eksempel: Trin 3 (fortsat)

    Registrer ActionListener:

    Planche 15 : Fra 1.0 til 1.1:

    Chekliste: Javac og kryds fingrene... :-)

    Planche 16 : Undtagelser ("Exceptions")

    Undtagelser er hændelser, der indtræffer på grund af uventede begivenheder.

    Planche 17 : Fejlhåndtering

    int status = metodeDerNæstenVirker();
    
    if (status == SÆR_RETUR_KODE) {
    	// gør noget ved det
        switch(Fejlindikator) {
    		// håndter mere specifik kode
    	}
    } else {
    	// alt i orden - fortsæt normalt
            ..
    }
    

    try {
    	metodenDerNæstenVirker();
        } catch {
    	// metoden fejlede - gør noget!
        }
        // fortsæt normal kode...
    

    Planche 18 : Javaundtagelser (klasser)

    Undtagelsesklasser stammer alle fra Og de fleste findes i java.lang.*

    Men man kan oprette sine egne...

    Planche 19 : Kastes?

    Planche 20 : Manglende Undtagelser

    Hvis man mangler at implementer en undtagelse, vil compileren gøre opmærksom på det og nægte at danne kode!

    Planche 21 : Implementer undtagelser

    Håndter undtagelser ved

    Ryd evt. op med

    (Finally udføres altid - både efter undtagelser og normal proces)

    Planche 22 : Syntaks

    try {
    	// sætninger, der skal beskyttes
    }
    catch ( Liste af undtagelsesvariable ) {
    
    	// sætninger, der redder fejl
    
    }
    
    // alm. sætninger, udføres hvis det gik godt.
    
    

    Der kan være flere catch-blokket efter hinanden på den samme try

    Eksempel på undtagelsesvariabelerklæring: Exception e

    Planche 23 : Send videre

    Undtagelser kan skabes fra kode

    (Det er oprettelse af et nyt objekt)

    Planche 24 : Klasse signatur

    Planche 25 : Og hvad så?

    IO...


    © 1999 BLA*net - Leif E. Andersen, leander@blanet.dk