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.
Det, du kan opnå med denne bog, er:
Bedre kendskab til almindeligt anvendte datastrukturer/samlinger af data og algoritmer
At kunne lave komponentbaseret
udvikling
(afgrænsede programdele, der kan genanvendes i
flere sammenhænge)
At få kendskab og kunne anvende forskellige hyppigt anvendte designmønstre (eng.: reusable design patterns), såsom Singleton, Adapter, Iterator, Fabrik, Proxy, ... osv.
At få bedre forståelse for Javas
standardbibliotek
(hvor designmønstrene er vidt anvendte)
At blive mere rutineret i programmering
At få kendskab til forskellige konkrete
teknologier i Java
(javadoc, introspektion, Swing, Java2D, JNI,
JDBC, J2SE, J2ME, J2EE, EJB, ... ) osv.
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 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 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.
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:
Vector-klassen og andre almindeligt kendte objekter
Arv og polymorfi
Indkapsling (public/private)
Lokale variabler, objektvariabler og klassevariabler og deres virkefelt (eng.: scope)
Hændelser i grafiske brugergrænseflader
Programmering af grafiske brugergrænseflader på et basalt niveau
Hvis du er usikker i et eller flere af emnerne, kan du læse om dem på http://javabog.dk.
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.
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();
...
}
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.
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:
Programeksemplerne fra bogen (http://javabog.dk/VP/kode)
Undervisningsmateriale, såsom lektionsplaner, ugesedler, opgaver og transparenter
Foredrag om udvalgte kapitler (som lydfiler)
Rettelser og tilføjelser til bogen
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
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.
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:
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.
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.
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.
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.
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