Kapitel 7. Pakker

Indhold:

Kapitlet forudsættes ikke i resten af bogen, men er ofte en fordel, når man skal programmere i praksis.

Forudsætter Kapitel 5, Definition af klasser.

Når man laver større programmer (over 30-40 klasser), kan det være nyttigt at opdele dem i grupper. En pakke er en samling af klasser, der på en eller anden måde er beslægtede i funktion.

En pakke er en samling af klasser

Javas standardbibliotek på mere end 1000 klasser er delt op i ca. 30 mindre pakker.

Pakker svarer til (klasse)biblioteker i C eller C++ eller "unit"-begrebet i PASCAL.

7.1. At importere klassedefinitioner

Vi har set, at når vi skal benytte klasser, der ligger ud over de helt grundlæggende, bliver vi nødt til at meddele oversætteren, hvor den kan forvente at finde definitionen af klassen. Dette kaldes at importere klassen.

Egentlig kunne vi godt helt udelade import-sætninger og skrive det fulde pakke- og klassenavn hver gang. Hvis vi f.eks. vil benytte Vector-klassen, kunne vi skrive:


    java.util.Vector v;
    v = new java.util.Vector();

Det er jo lidt besværligt, og derfor kan vi vælge øverst i kildetekstfilen at skrive:


import java.util.Vector;

Dette får oversætteren til at lede i java.util-pakken, hvis den møder en klasse, den ikke umiddelbart genkender. Nu kan vi skrive, som vi plejer:


    Vector v;
    v = new Vector();

Der kan forekomme et hvilket som helst antal import-sætninger i en javafil. Import-sætninger skal stå først i filen, før klassedefinitionen. Hvis man ønsker at importere flere klassedefinitioner fra samme pakke kan man skrive en * i stedet for klassenavnet:


import java.util.*;

Dermed importerer man samtlige klasser fra denne pakke. Det vil sige, at oversætteren leder denne pakke igennem, når den møder en klasse, den ikke umiddelbart genkender. De klassedefinitioner, der ikke bruges, bliver altså bare ignoreret.

Import af en klasse gør blot definitionen af klassen kendt for oversætteren - det gør ikke det færdige program større eller langsommere