javabog.dk  |  << forrige  |  indhold  |  næste >>  |  programeksempler  |  om bogen

0 Forord

Denne bog henvender sig til de, der allerede har kendskab til Java eller grundlæggende objektorienteret programmering på et vist niveau, men som ønsker at vide mere.

Bogen udspringer af noter fra kurset "Videregående Programmering", som jeg begyndte at undervise i i efteråret 2001 på IT-Diplomuddannelsen på Ingeniørhøjskolen i København. De er senere blevet udbygget under videre undervisning i kurset.

0.1 Formål og indhold

Det, du kan opnå med denne bog, er:

0.1.1 Bogens opbygning og indhold

Bogen består af 2 dele. Hver del består af nogle emner, der behandles i hvert sit kapitel. Det er i stor udstrækning muligt at læse kapitlerne uafhængigt af hinanden.

Forrest i hvert kapitel beskrives forudsætningerne for at læse kapitlet, så her kan du vurdere, om der er et andet kapitel du eventuelt bør se i først.

Første del: Videregående Java

Første del giver en introduktion til nogle af de vigtigste teknologier inden for java.

Kapitel 1, Samlinger af data, beskriver de almindeligt anvendte datastrukturer og algoritmer (Collections-klasserne - stakke, lister, mængder, afbildninger, hashtabeller, søgetræer...)

Kapitel 2, Dokumentation, beskriver brugen af javadoc, der er standarden for dokumentation af javakode.

Kapitel 3, Rekursion, giver en introduktion til rekursive algoritmer (metoder der kalder sig selv).

Kapitel 4, Komponentbaseret programmering, handler om javabønner (eng.: JavaBeans) som er genbrugelige programkomponenter som kan manipuleres visuelt i et udviklingsværktøj.

Kapitel 5, Grafiktegning (Java2D), giver en introduktion til den avancerede 2D-grafik i Java.

Kapitel 6, Grafiske brugergrænseflader (Swing), behandler nogle af de mere avancerede aspekter af brugergrænseflader og Swing, bl.a. JTable og Model-View-Controller-arkitekturen brugt i Swing.

Kapitel 7, Internationalisering, diskuterer, hvordan man får sine programmer til at kunne køre på flere sprog.

Kapitel 8, Databaser (JDBC), uddyber JDBC og databaser, bl.a. m.h.t. optimering og metadata.

Kapitel 9, Optimering, giver en række råd og vejledning i, hvordan man kan optimere sit javaprogram, så det kører hurtigere.

Kapitel 10, Eksterne kald og JNI, beskriver, hvordan man kalder eksterne programmer, og hvordan man bruger JNI (Java Native Interface) til at kalde f.eks. C- eller C++-kode fra Java.

Kapitel 11, Introspektion, beskriver, hvordan man undersøger et vilkårligt objekts variabler og metoder under kørslen (også kaldet reflection), og hvordan man løbende kan generere nye klasser og indlæse dem under kørslen.

Kapitel 12, Standardbiblioteket (J2SE), giver et overblik over hele standardbiblioteket (kaldet J2SE - Java 2 Standard Edition).

Kapitel 13, Mobiltelefoner (J2ME), beskriver, hvordan man programmerer til J2ME (Java 2 Micro Edition) og midletter til små, indlejrede systemer (bl.a. mobiltelefoner).

Kapitel 14, Servere (J2EE & EJB), beskriver J2EE (Java 2 Enterprise Edition), der er beregnet til større serversystemer og webservere.

Anden del: Videregående objektorienteret programmering

Anden del beskriver en række af de mest anvendte designmønstre og strategier for, hvordan man skal designe sit program.

Kapitel 15, Videregående OOP, diskuterer nogle af de begreber og tankegange, der gør sig gældende inden for objektorienteret programmering, og introducerer designmønstre.

Kapitel 16, Skabende designmønstre, beskriver designmønstre til at mindske bindingen mellem den del af programmet som bruger nogle objekter, og den del af programmet, der bestemmer, hvordan disse objekter oprettes/fremskaffes.
Abstrakt Fabrik, Fabrik, Singleton, Bygmester, Prototype og Objektpulje gennemgås.

Kapitel 17, Hyppigt anvendte designmønstre, beskriver de designmønstre, der ofte ses anvendt i i standardbiblioteket og i lidt større programmer.
Proxy, Adapter, Iterator, Facade, Observatør/Lytter og Dynamisk Binding gennemgås.

Kapitel 18, Andre designmønstre, beskriver nogle lidt mere eksotiske designmønstre, der sjældnere ses anvendt, men som er velegnede i visse situationer.
Uforanderlig, Fluevægt, Filter, Lagdelt Initialisering, Komposit/Rekursiv komposition og Kommando gennemgås.

Kapitel 19, Model-View-Controller-arkitekturen, beskriver, hvordan man kan opdele programmer med en brugergrænseflade i en model, en præsentation og en kontrol-del.

0.2 Forudsætninger for at læse bogen

For at få fuld nytte af hele bogen skal du på forhånd have kendskab til nogle emner, som er kendte fra grundkurser i Java og objektorienteret programmering:

Hvis du er usikker i et eller flere af emnerne, kan du læse om dem på http://javabog.dk.

0.2.1 UML: Klassediagrammer

Klassediagrammer forudsættes kendt. Vigtige relationer mellem klasser er har-relationen og er-en-relationen. Eksempel (et matadorspil):

Rederi og Gade har en Spiller.

Helle, Start, Rederi og Gade er-et Felt.

Har-relationen

At X har Y betyder: i klassen X er defineret en variabel af type Y. Et X-objekt har derfor en reference til et Y-objekt, og derfor har X-objektet mulighed for at kalde metoder og bruge variabler fra Y-objektet gennem denne reference. Y-objekter kender ikke nødvendigvis noget til X-objekters eksistens.

Eksempel (det væsentlige i fed):

public class X
{
  private Y yobj = new Y();
  ...
}

Er-en-relationen

At X er-en Y betyder: i klassen X er defineret, at X arver fra klassen Y. Et X-objekt indeholder derfor (mindst) alle de metoder og variabler, som et Y-objekt indeholder.

Eksempel:

public class X extends Y
{
  ...
}

Det er også en er-en-relation, når man implementerer et interface.

0.3 Netudgaven af bogen

Størstedelen af bogen (opgaver og avancerede emner er skåret væk) findes også på adressen http://javabog.dk/VP, der frit kan bruges af enhver.

Her kan du også hente:

Netudgaven, dvs. alt hvad der kan findes på http://javabog.dk/VP, er frigivet under Åben Dokumentlicens (ÅDL). Det betyder at du kan udskrive og kopiere netudgaven, som du lyster.

Den præcise ordlyd af Åben Dokumentlicens kan læses på næste side.

I netudgaven er avancerede afsnit, løsninger på opgaver samt kapitel 14, Servere (J2EE & EJB), og kapitel 18, Andre designmønstre, skåret væk.

Bidrag og rettelser til bogen og hjemmesiden er meget velkomne. Send dem til: nordfalk@mobilixnet.dk

0.4 Åben Dokumentlicens (ÅDL)

Version 1.0 (25. januar 2002)


1. Kopiering og distribution af værket i uændret form

Du må frit kopiere dette værk uændret og distribuere det på ethvert medium, forudsat at du sammen med hver kopi bibeholder denne licens og en henvisning til værkets kilde.

Du kan vælge at kræve penge for kopiering og distribution af indholdet, for undervisning i indholdet, for brugerstøtte og garantier i forbindelse med indholdet. Hvis du videregiver værket til andre, har du pligt til at se til, at du selv eller andre giver modtageren gratis adgang i minimum 3 år til en elektronisk udgave af indholdet - i et åbent redigérbart format - for eksempel via internettet, og at der i hvert eksemplar tydeligt angives, hvordan man kan få den elektroniske udgave.

2. Ændring af indholdet

Du må gerne ændre i dette værk eller dele af det (og dermed lave et nyt værk baseret på dette værk) og distribuere det som nævnt ovenfor, forudsat at du opfylder alle følgende krav:

  1. Du skal sørge for, at det nye værk indeholder en tydelig anmærkning om, at du ændrede det, hvad du ændrede og datoen for ændringerne.

  2. Det skal være omfattet af samme rettigheder og betingelser ("licens") som det oprindelige værk.

Alternativt kan det nye værk bære en anden licens eller almindelig ophavsretlig beskyttelse, forudsat at samtlige dele, der oprindeligt stammer fra dette værk, tydeligt er markeret (f.eks. i sidefoden på hver side) som værende under denne licens, og at licensen følges for disse dele af værket, herunder at der gives gratis elektronisk adgang som nævnt under afsnittet om kopiering og distribution.

3. Pligter

Enhver anvendelse, kopiering eller distribuering betragtes som en accept af denne licens og dens betingelser. Ved overtrædelse af licensbetingelserne, vil almindelig ophavsretlig beskyttelse være gældende for hele værket og vil dermed gøre person eller personer erstatningspligtige for enhver uautoriseret anvendelse.

4. Garanti

Indholdet leveres "som det er", uden nogen form for garanti for købs-, brugs- eller nytteværdi, medmindre der er givet en særskilt skriftlig garanti herom.

Denne bog er under ÅDL, med undtagelse af avancerede afsnit, løsninger på opgaver samt kapitel 14, Servere (J2EE & EJB), og kapitel 18, Andre designmønstre. Disse dele er under almindelig ophavsretlig beskyttelse.

0.5 Tak

Først og fremmest en speciel tak til Tina Modvig Frederiksen, først kursist i faget Videregående Programmering, senere medunderviser i det. Hun er kommet med mange vigtige bidrag til bogen, bl.a. afsnit 15.6, Ansvarsområder, og en meget stor del af kapitel 13, Mobiltelefoner (J2ME).

Tak til Troels Nordfalk og de mange andre kursister, der gennem tiden har påpeget fejl og mangler i noterne, bl.a. Kenn Thisted, Florin-Gabriel Badea, Jon Axelsson, Anita Mygind og Jan Christiansen.

Sidst men ikke mindst - tak til Linux-samfundet for at lave et styresystem, der styrer!

Denne bog er skrevet med OpenOffice.org under Mandrake Linux. Begge er projekter med åben kildekode (Open Source) og kan gratis hentes på henholdsvis www.openoffice.org og www.linux-mandrake.com.

Bonan plezuron legi la libron!
(det er esperanto og betyder "god fornøjelse med at læse bogen")

Jacob Nordfalk

Valby, maj 2003.

Første del: Videregående Java

javabog.dk  |  << forrige  |  indhold  |  næste >>  |  programeksempler  |  om bogen
http://javabog.dk/ - af Jacob Nordfalk.
Licens og kopiering under Åben Dokumentlicens (ÅDL) hvor intet andet er nævnt (71% af værket).

Ønsker du at se de sidste 29% af dette værk (362838 tegn) skal du købe bogen. Så får du pæne figurer og layout, stikordsregister og en trykt bog med i købet.