Kapitel 12. Interfaces - grænseflader til objekter

Forudsættes af Kapitel 13, Hændelser, Kapitel 17, Flertrådet programmering, Kapitel 18, Serialisering, Kapitel 19, RMI og Kapitel 22, Indre klasser.

Forudsætter Kapitel 6, Nedarvning (og Kapitel 10, Appletter og grafik for at forstå et eksempel).

I generel sprogbrug er et interface (da.: grænseflade, snitflade) en form for grænseflade, som man gør noget gennem. F.eks. er en grafisk brugergrænseflade (eng.: Graphical User Interface - GUI) de vinduer med knapper, indtastningsfelter og kontroller, som brugeren har til interaktion med programmet.

Vi minder om, at en klasse er definitionen af en type objekter. Her kunne man opdele i

  1. Grænsefladen - hvordan objekterne kan bruges udefra.Dette udgøres af navnene på metoderne, der kan ses udefra.

  2. Implementationen - hvordan objekterne virker indeni.Dette udgøres af variabler og programkoden i metodekroppene.

Et »interface« svarer til punkt 1): En definition af, hvordan objekter bruges udefra. Man kan sige, at et interface er en "halv" klasse.

Et interface er en samling navne på metoder (uden krop)

Et interface kan implementeres af en klasse - det vil sige, at klassen definerer alle interfacets metoder sammen med programkoden, der beskriver, hvad der skal ske, når metoderne kaldes.

12.1. Definere et interface

Lad os definere et interface kaldet Tegnbar, der beskriver nogle metoder på objekter, der kan tegnes.

import java.awt.*;

public interface Tegnbar
{
  public void sætPosition(int x, int y);

  public void tegn(Graphics g);
}

I stedet for "class" erklæres et interface med "interface".

Metoder i et interface har ingen krop, alle metodeerklæringerne følges af et semikolon. Der kan ikke oprettes objekter ud fra et interface. Det kan opfattes som en "tom skal", der skal "fyldes ud" af en rigtig klasse, der implementerer metoderne (dvs. definerer kroppene).

Figur 12-1. Java

Man ser, at tegnbare objekter:

I UML-notation (tegningen til højre) er Tegnbar-interfacet tegnet med kursiv. Alle metoderne er abstrakte (= ikke implementerede) og er derfor også tegnet kursivt.