Forelæsning 7/10 2003: Java, nedarvning, Java Platform, konventioner og Collections API m.v.

Henning Christiansen

Læsestof: Kap. 6 i lærebogen + referencer til kap. 1-4.

Bogens kapitel 6 er noget vandfaldsagtig i sin introduktion til "Collections API" og vi tager her en mere struktureret tilgang ved at tage udgangspunkt i opbygningen af sproget Java og dets omgivelser kaldet "platform".

Dette dokument er kun beregnet til at fungere i sammenhæng med en forelæsning og skal altså ikke tages som stykke online lærebogslitteratur.

Dokumentet indeholder links til SUNs online dokumentation, som var gyldige oktober 2003, men der garanteres ikke for deres aktualitet, ej heller om de vil være gyldige på et senere tidspunkt.

Primær indgang er: http://java.sun.com/j2se/1.4.2/docs/api/index.html

Formål

Kort om Java

Diskussion: Hvad er værd at vide om en klasse, vi skal bruge?

Programmering i Java

Forklaring:

Byggesten i Java

Konventioner

Eksempel på "hjælpeklasse"

Arrays

Eksempel på generisk datastruktur

ArrayList

Vigtige generelle klasser og interfaces

Overvej: Hensigtsmæssigt at intuitivt samme begreb fremtræder i to former?

Generelle datastrukturer for samlinger af objekter

Lagt ind under interface Collection
Der findes forskellige implementationer med flere eller færre (!) metoder og forskellige performance-karakteristika.

Om metoden Iterator iterator()

Skaber en iterator = "virtuel for-sætning".
Lad os se, hvad er en Iterator?

Fordel ved adskillelse af (konkret) Iterator fra (konkret) Collection (modsat startIterator, hasNext og Next som metoder på Collection):

Til design af en ny slags Collection hører design af en Iterator.

Faktum: Ikke altid nemt at finde Iterator-klasse eller for given klasse.
F.eks. prøv at finde iteratorer til ArrayList og til HashSet ved at lede her

Specialiserede versioner af Collection

Noget om

... hvorfor det er godt at kende til algoritmer og store O også selvom de fleste er skrevet i forvejen

Generelle værktøjskasse for Collection

class Collections - med "S"

Bemærk mismask af generelt og specifikt, og ting til det teknisk set urelaterede interface Map!!

Historien om igen for afbildninger

Afbildning: Nøgle --> Værdi

Intuitivt og matematisk: Blot specialiseret "Set" af par (Nøgle, Værdi) med egenskab at til en nøgle hører max. en Værdi.

Men i java.util realiseret som separat interface klasser (hvorfor mon?)

interface Map
- bemærk ved metoden "values" i interface Map såvel som class HashMap returnerer et Collection-objekt, men der står ikke hvilken "slags" Collection!! (Collection er specifiseret som interface)

Andre interessante datastrukturer diskuteret i bogen:

Stakke, Køer, Prioritetskøer (læs selv).

Konklusion

Grundlæggende egenskaber i Java som giver problemer og besvær

Tænk hvis man ku' skrive

parameterized class Map(From,To) { .... }
....
Map(int, MinKlasse []) m1 = ...; Map(MinKlasse, bool) m2; ...


x

Sidst rettet 6. oktober 2003