User Tools

Site Tools


linuxbog.old:java:java-interface-standard-bib
Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31
forrige Kapitel 12. Interfaces - grænseflader til objekter næste

12.5. Interfaces i standardbibliotekerne

Interfaces bliver brugt i vid udstrækning i standardbibliotekerne, og mange steder benyttes polymorfi til at gøre det muligt at lade systemet arbejde på programmørens egne klasser.

I det følgende vil vi se nogle eksempler på at implementationen af et interface fra standardbiblioteket gør, at vores klasser passer ind i systemet på forskellig måde.

12.5.1. Sortering med Comparable

Hvis et objekt implementerer Comparable-interfacet skal det definere metoden:

public int compareTo(Object obj)

For eksempel:

public class Element //implements Comparable// { 
  int x;

  public Element(int x1)
  {
    x = x1;
  }

  public String toString()
  {
    return "element"+x;
  } //public int compareTo(Object obj)//  //// kræves af Comparable// {
    Element andetElement = (Element) obj; //// typekonverter først til Element// if (x == andetElement.x) return 0; //// dette elem. og obj har samme plads// if (x  > andetElement.x) return 1; //// dette element kommer efter obj// else return -1; //// dette element kommer før obj// }
}

Interfacet giver standardbibliotekerne mulighed for at sammenligne objekter og sortere dem i forhold til hinanden.

Sortering kan bl.a. ske ved at kalde metoden Collections.sort() med en vektor af objekter, der implementerer Comparable.

import java.util.*;
public class BrugElementer
{
  public static void main(String args[])
  {
    Vector liste = new Vector();
    liste.addElement( new Element(5));
    liste.addElement( new Element(3));
    liste.addElement( new Element(13));
    liste.addElement( new Element(1));

    System.out.println("før: "+liste); //Collections.sort(v);// System.out.println("efter: "+liste);
  }
}

Resultatet bliver:

før: [element5, element3, element13, element1]
efter: [element1, element3, element5, element13]

sort() vil kalde compareTo() på vores objekter for at ordne dem i rækkefølge. Havde vores objekter ikke implementeret Comparable, ville der opstå en køretidsfejl, da systemet så ikke havde nogen grænseflade, hvorigennem det kunne undersøge, hvordan elementerne skal ordnes.

12.5.2. Flere tråde med Runnable

Hvis man vil bruge flere tråde (processer, der kører samtidigt i baggrunden) i sit program, kan dette opnås ved at implementere interfacet Runnable og definere metoden run(). Derefter opretter man et trådobjekt med new Thread(objektDerImplementererRunnable). Når tråden startes (med trådobjekt.start()), vil det begynde en parallel udførelse af run()-metoden i objektDerImplementererRunnable.

Dette vil blive behandlet iKapitel 17, Flertrådet programmering.

12.5.3. Lytte til musen med MouseListener

Når man programmerer grafiske brugergrænseflader, kan det være nyttigt at kunne få at vide, når der er sket en hændelse, f.eks. at musen er klikket et sted.

Dette sker ved, at man definerer et objekt (lytteren), der implementerer MouseListener-interfacet. Den har forskellige metoder, f.eks. mouseClicked(), der er beregnet på et museklik.

Lytteren skal registreres i en grafisk komponent, f.eks. en knap eller en applet. Det gøres ved at kalde komponentens addMouseListener()-metode med en reference til lytteren. Derefter vil, hver gang brugeren klikker på komponenten, lytterens mouseClicked() blive kaldt.

Analogt findes lyttere til tastatur, musebevægelser, tekstfelter, kontroller osv. IKapitel 11om grafiske brugergrænseflader og hændelser er disse ting beskrevet nærmere.


forrige hjem næste
Polymorfi op Opgaver
linuxbog.old/java/java-interface-standard-bib.txt · Last modified: by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.