Videregående programmering i Java

Dag 14 - afrunding (og valgfrie emner)

Nye faciliteter i JDK 1.5, herunder:

- Definere egne generiske klasser fortsat

- Annotations

Evt: Nye faciliteter i JDK 1.4, herunder XML-processering, det nye I/O-API, logning og antagelser.

Evt.: AOP - Aspekt-orienteret programmering

Om eksamen og eksamensforberedelse

Spørgetime: Repetition af designmønstre

Projektvejledning

Projekthjælp: javadoc, JUnit, ...

Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Nyt i JDK 1.4

(http://java.sun.com/j2se/1.4.2/docs/relnotes/features.html)

Logning

Antagelser (eng.: assertations)

Implitte antagelser skrevet eksplicit (med tjek slået til/fra)

Nye IO-klasser (nio)

Direkte afbilding af data (f.eks. byte fra fil) til datastruktur

...

Nyt i JDK 1.4: Logning

import java.util.logging.*;

...

static final Logger log = Logger.getLogger("Cavemet");

//static { log.setLevel(Level.INFO); }

...

log.info("Brugeren skrev: "+svar);

log.warning("Brugeren skrev: "+svar);

Nyt i JDK 1.4: Antagelser

ArrayList l = new ArrayList();

assert l.size()==0: "l burde være tom 1: " + l;

l.add("hej2");

l.add("hej");

l.add("hej");

assert l.size()==0: "l burde være tom 2: " + l;

java -da (-disableassertions standardindstilling)

java -ea (-enableassertions for at køre tjekkene)

Nyt i JDK 1.5: ny syntaks

(http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html)

Generiske klasser (generics/parametriserede typer)

Stærkere typesikkerhed. Eks.: ArrayList af strenge:

ArrayList<String> sl = new ArrayList<String>();

Nemmere for-løkke

Kan gennemløbe enhver datastruktur (bruger skjult Iterator på Collections-klasser og tællevariabel på almindelige arrays)

for(String s : sl) { System.out.println(s); }

Automatisk konvertering mellem simpel type og objekt

Map<String, Integer> navnTilCPR = new HashMap<String, Integer>();

navnTilCPR.put("Jacob Nordfalk", 010171); // boxing af int 010171

int cpr = navnTilCPR.get("Jacob Nordfalk"); // unboxing af Integer 010171

Typesikre opremsninger (typesafe enums)

public enum MainMenu {FILE, EDIT, FORMAT, VIEW};

Variabelt antal argumenter til en metode (array af arg)

Import af klassemetoder og -variabler (static import)

import static java.lang.Math.*; ... x = 2*PI; y = sin(x); ...

Metadata (Annotations)

Nye faciliteter i JDK 1.5

Nemmere læsning og skrivning af tekst

printf-lignende formatering med java.util.Formatter

System.out.format("Local time: %tT", Calendar.getInstance());

// -> "Local time: 13:34:18"

// Writes formatted output to System.err.

System.err.printf("Unable to open file '%1$s': %2$s",

fileName, exception.getMessage());

// -> "Unable to open file 'food': No such file or directory"

Regulære udtryk og indlæsning med java.util.Scanner

java.util.Scanner tastatur = new java.util.Scanner(System.in);

System.out.println("Tast et tal herunder og tryk retur:");

double svar = tastatur.nextDouble(); // læs tal fra tastaturet

System.out.println("Du indtastede "+svar+", det dobbelte er: "+svar*2);

eksamen og eksamensforberedelse

http://www.cv.ihk.dk/ITD/CN/VPJ/holdinformationer.html

10 min fremlæggelse af projekt

Vigtigt at rapportens bilag er nemme at finde rundt i!

Hvis du vil vise programmet så hav det klar på forhånd!

10 min spørgmål i pensum

Tjek af generel viden

Ekstra projekthjælp

Der er ekstra vejledning i morgen (torsdag) mellem kl 16-17 i P1.07, hvis interesse

Videregående programmering i Java

Præsentatoner fra kurset

2004-08-30T12:23:21