



<html>
<head>
  <title>javabog.dk -  - Forord</title>
  <link rev="stylesheet" type="text/css" href="../typografi.css">
  <meta name="description" content="Lærebog i Java. Af Jacob Nordfalk. Udkommet hos Forlaget Globe">
  <meta name="keywords" content="designmønster, programmering, OOP, objekter, klasser, objektorienteret programmering, Java, JSP, lærebog, UML, IT">
</head>
<body bgcolor="#ffffff">



<a href='http://javabog.dk/'>javabog.dk</a>&nbsp;&nbsp;|&nbsp;&nbsp;&lt;&lt; forrige&nbsp;&nbsp;|&nbsp;&nbsp;<a href='indhold.jsp'>indhold</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='kapitel1.jsp'>n&aelig;ste &gt;&gt;</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='kode/'>programeksempler</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='../index_OOP.html'>om bogen</a>

<H1 CLASS="western" STYLE="">0 <a name='afsn0'></a>Forord</H1>
<P CLASS="western">I denne bog kan du l&aelig;re tre ting:</P>
<UL>
  <LI><P CLASS="western"><B>Programmering</B>. Bogen starter fra
  grunden af, men har du ikke programmeret f&oslash;r, b&oslash;r du
  v&aelig;re rede til at g&oslash;re en indsats, dvs. l&oslash;bende
  lave en r&aelig;kke sm&aring; programmer, for at &oslash;ve dig i
  stoffet. Det foruds&aelig;ttes, at du har kendskab til computere p&aring;
  brugerniveau, dvs. at du uden problemer kan bruge internet,
  tekstbehandling og andre programmer og problemfrit navigere og
  flytte og kopiere filer i Windows, Linux eller et andet
  styresystem. En smule kendskab til matematik er en fordel, men
  bestemt ikke et krav.</P>
  <LI><P CLASS="western"><B>Objektorienteret programmering</B>. Bogen
  arbejder grundigt med begreberne omkring objektorienteret
  programmering (forkortet OOP) og har mange praktiske eksempler p&aring;
  denne m&aring;de at programmere p&aring;. Den introducerer og
  anvender l&oslash;bende relevante dele af UML-notationen, som er
  meget anvendt i objektorienteret analyse og design og besl&aelig;gtede
  fag.</P>
  <LI><P CLASS="western"><B>Java</B>. Programmeringssproget Java har
  en r&aelig;kke faciliteter, som kan lette programmeringen
  meget. Har du - som mange andre - l&aelig;rt Java ved at pr&oslash;ve
  dig frem, kan det overblik, der pr&aelig;senteres i denne bog,
  hj&aelig;lpe, samtidig med, at hvert kapitel slutter af med at g&aring;
  i dybden med avancerede emner.</P>
</UL>
<P CLASS="western">Ideen til bogen opstod i efter&aring;ret 2000, i
forbindelse med at jeg underviste p&aring; et kursus i
objektorienteret programmering og Java p&aring; IT-Diplomuddannelsen
p&aring; Ingeni&oslash;rh&oslash;jskolen i K&oslash;benhavn. Jeg
savnede en l&aelig;rebog p&aring; dansk og gik sammen med Troels
Nordfalk og Henrik Tange i gang med at skrive mine egne noter. Det er
blevet en praktisk orienteret l&aelig;rebog, krydret med mindre, men
komplette, eksempler. 
</P>
<P CLASS="western">St&oslash;rstedelen af bogen (opgaver og
avancerede emner er sk&aring;ret v&aelig;k) findes ogs&aring; p&aring;
adressen <A CLASS="western" HREF="http://javabog.dk/">http://javabog.dk</A>,
der frit kan bruges af alle, der vil l&aelig;re Java. Bidrag til
bogen og hjemmesiden er meget velkomne: Skriv til
nordfalk@mobilixnet.dk</P>
<P CLASS="western">P&aring; <A CLASS="western" HREF="http://javabog.dk/">http://javabog.dk</A>
kan du ogs&aring; hente programeksemplerne fra bogen.</P>
<H2 CLASS="western">0.1 <a name='afsn0.1'></a>Bogens opbygning</SPAN></H2>
<P CLASS="western">Hvert emne behandles i et s&aelig;rskilt kapitel.
Det er i en vis udstr&aelig;kning muligt, at l&aelig;se kapitlerne
uafh&aelig;ngigt af hinanden.</P>
<H3 CLASS="western">0.1.1 <a name='afsn0.1.1'></a>Veje gennem bogen</H3>
<P CLASS="western">Det anbefales at l&aelig;se <a href='kapitel2.jsp'>kapitel 2</a>, 3, 4 og 5 i
r&aelig;kkef&oslash;lge. Derefter kan man v&aelig;lge, om man vil:</P>
<UL>
  <LI><P CLASS="western">l&aelig;se nogle af de valgfrie kapitler (6,
  7 og 8)</P>
  <LI><P CLASS="western">g&aring; i gang med interfaces, grafik og
  brugergr&aelig;nseflader (9, evt. 10, 11, 12, evt. 13)</P>
  <LI><P CLASS="western">arbejde med undtagelser (eng.: exceptions),
  filer og netv&aelig;rk (14, 15 og 16)</P>
</UL>


<P CLASS="western">Her er en oversigt over kapitlerne (midters&oslash;jle)
og hvilke kapitler de foruds&aelig;tter (venstre s&oslash;jle). Hvis
et kapitel er forudsat i parentes, betyder det, at visse eksempler
eller opgaver foruds&aelig;tter det, men man kan godt klare sig uden.
</P>
<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0>
  <COL*>
  <COL*>
  <COL*>
  <THEAD>
    <TR VALIGN=TOP>
      <TH>
        <P CLASS="western">Foruds&aelig;tter</P>
      </TH>
      <TH>
        <P CLASS="western">Kapitelnummer og -navn</P>
      </TH>
      <TH>
        <P CLASS="western">Er n&oslash;dvendig for</P>
      </TH>
    </TR>
  </THEAD>
  <TBODY>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western"><BR>
        </P>
      </TD>
      <TD>
        <P CLASS="western">2<B> Basal programmering</B></P>
      </TD>
      <TD>
        <P CLASS="western">Alle efterf&oslash;lgende</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">2</P>
      </TD>
      <TD>
        <P CLASS="western">3<B> Objekter</B></P>
      </TD>
      <TD>
        <P CLASS="western">Alle efterf&oslash;lgende</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">3</P>
      </TD>
      <TD>
        <P CLASS="western">4<B> Definition af klasser</B></P>
      </TD>
      <TD>
        <P CLASS="western">N&aelig;sten alle efterf&oslash;lgende</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">4</P>
      </TD>
      <TD>
        <P CLASS="western">5<B> Nedarvning</B></P>
      </TD>
      <TD>
        <P CLASS="western">N&aelig;sten alle efterf&oslash;lgende</P>
      </TD>
    </TR>
    <TR>
      <TD COLSPAN=3% VALIGN=TOP>
        <P CLASS="western"><BR><BR>
        </P>
        <P CLASS="western"><B>Valgfrie emner</B></P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">4</P>
      </TD>
      <TD>
        <P CLASS="western">6<B> Pakker</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">4</P>
      </TD>
      <TD>
        <P CLASS="western">7<B> Lokale, objekt- og klassevariabler</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">3 (5)</P>
      </TD>
      <TD>
        <P CLASS="western">8<B> Arrays</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR>
      <TD COLSPAN=3% VALIGN=TOP>
        <P CLASS="western"><BR><BR>
        </P>
        <P CLASS="western"><B>Grafik og brugergr&aelig;nseflader
        (klient-programmering)</B></P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">3 (5)</P>
      </TD>
      <TD>
        <P CLASS="western">9<B> Grafiske programmer</B></P>
      </TD>
      <TD>
        <P CLASS="western">11</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">9</P>
      </TD>
      <TD>
        <P CLASS="western">10<B> Appletter</B></P>
      </TD>
      <TD>
        <P CLASS="western">(12 og 13)</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">9 (5)</P>
      </TD>
      <TD>
        <P CLASS="western">11<B> Grafiske standardkomponenter</B></P>
      </TD>
      <TD>
        <P CLASS="western">13</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">5 (10)</P>
      </TD>
      <TD>
        <P CLASS="western">12<B> Interfaces - gr&aelig;nseflade til
        objekter</B></P>
      </TD>
      <TD>
        <P CLASS="western">13, 17, 18, 19, 21</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">11, 12 (10)</P>
      </TD>
      <TD>
        <P CLASS="western">13<B> H&aelig;ndelser i grafiske
        brugergr&aelig;nseflader</B></P>
      </TD>
      <TD>
        <P CLASS="western">21</P>
      </TD>
    </TR>
    <TR>
      <TD COLSPAN=3% VALIGN=TOP>
        <P CLASS="western"><BR><BR>
        </P>
        <P CLASS="western"><B>Filer og netv&aelig;rk 
        (server-programmering)</B></P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">4 (5)</P>
      </TD>
      <TD>
        <P CLASS="western">14<B> Undtagelser og k&oslash;retidsfejl</B></P>
      </TD>
      <TD>
        <P CLASS="western">15</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">14</P>
      </TD>
      <TD>
        <P CLASS="western">15<B> Datastr&oslash;mme og filh&aring;ndtering</B></P>
      </TD>
      <TD>
        <P CLASS="western">16 + 18</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">15</P>
      </TD>
      <TD>
        <P CLASS="western">16<B> Netv&aelig;rkskommunikation</B></P>
      </TD>
      <TD>
        <P CLASS="western"><BR>
        </P>
      </TD>
    </TR>
    <TR>
      <TD COLSPAN=3% VALIGN=TOP>
        <P CLASS="western"><BR><BR>
        </P>
        <P CLASS="western"><B>Videreg&aring;ende emner</B></P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">12 (16)</P>
      </TD>
      <TD>
        <P CLASS="western">17<B> Flertr&aring;det programmering</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">15 (12)</P>
      </TD>
      <TD>
        <P CLASS="western">18<B> Serialisering af objekter</B></P>
      </TD>
      <TD>
        <P CLASS="western">19</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">12, 18</P>
      </TD>
      <TD>
        <P CLASS="western">19<B> RMI - objekter over netv&aelig;rk</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">14</P>
      </TD>
      <TD>
        <P CLASS="western">20<B> JDBC - databaseadgang</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">5, 12 (13, 17)</P>
      </TD>
      <TD>
        <P CLASS="western">21<B> Avancerede klasser</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
    <TR VALIGN=TOP>
      <TD>
        <P CLASS="western">5</P>
      </TD>
      <TD>
        <P CLASS="western">22<B> Objektorienteret analyse og design</B></P>
      </TD>
      <TD>
        <P CLASS="western">Ingen</P>
      </TD>
    </TR>
  </TBODY>
</TABLE>


<H3 CLASS="western">0.1.2 <a name='afsn0.1.2'></a>Kapitlernes opbygning</H3>
<P CLASS="western">Hvert kapitel starter med en <B>oversigt</B> over
indholdet og hvilke andre kapitler det foruds&aelig;tter, s&aring;dan
at man altid har overblik over, om man har de n&oslash;dvendige
foruds&aelig;tninger.</P>
<P CLASS="western">S&aring; kommer <B>hovedteksten</B>, der
introducerer emnerne og kommer med programeksempler, hvor de
anvendes. 
</P>
<P CLASS="western">De fleste kapitler har herefter</P>
<UL>
  <LI><P CLASS="western"><B>Test dig selv</B>, hvor man kan afpr&oslash;ve,
  om man har f&aring;et fat i de vigtigste ting i kapitlet.</P>
  <LI><P CLASS="western"><B>Resum&eacute;</B>, som i kort form
  repeterer de vigtigste ting.</P>
  <LI><P CLASS="western"><B>Appendiks</B> giver en komplet oversigt
  over de fakta, som relaterer sig til kapitlet. <BR>Det er beregnet
  til at blive l&aelig;st sammen med kapitlet, men er ogs&aring;
  velegnet til senere opslag.</P>
  <LI><P CLASS="western"><B>Avanceret</B><SPAN STYLE="font-weight: medium">,
  der handler om de mere avancerede ting i relation til kapitlets
  emne. <BR>Avancerede afsnit kan springes over ved f&oslash;rste
  l&aelig;sning, men kan v&aelig;re nyttige at kigge p&aring; senere
  hen. Resten af bogen foruds&aelig;tter ikke, at man har l&aelig;st
  de avancerede afsnit.</SPAN></P>
</UL>
<H2 CLASS="western">0.2 <a name='afsn0.2'></a>Til underviseren</SPAN></H2>
<P CLASS="western">Denne bog koncentrerer sig om OOP og Java i
praksis. Den starter med det helt grundl&aelig;ggende og kommer
i avanceret-afsnittene til bunds i mange aspekter af stoffet. I OOP
g&aring;r den &quot;hele vejen&quot; og f&aring;r d&aelig;kket
klasser og objekter, indkapsling, arv og polymorfi.</P>
<P CLASS="western">Der er mange m&aring;der at undervise i Java p&aring;
og bogen giver mulighed for, at underviseren selv v&aelig;lger,
hvilken del af stoffet, han vil l&aelig;gge v&aelig;gt p&aring; i sit
kursus:</P>
<UL>
  <LI><P CLASS="western">Objektorienteret programmering: <a href='kapitel2.jsp'>kapitel 2</a>, 3,
  4, 5 og derefter 9, 11, 12, 13 (<a href='kapitel7.jsp'>kapitel 7</a> om klassevariabler kan
  komme sent i kurset, s&aring; eleverne ikke fristes til at bruge dem
  som &quot;globale variabler&quot;).</P>
  <LI><P CLASS="western">Strukturel programmering: <a href='kapitel2.jsp'>kapitel 2</a>, dern&aelig;st
  dets avanceret-afsnit om do-while, switch, tastaturindl&aelig;sning
  og klassemetoder, <a href='kapitel3.jsp'>kapitel 3</a> om brug af objekter, <a href='kapitel8.jsp'>kapitel 8</a> om
  arrays, <a href='kapitel4.jsp'>kapitel 4</a> om klasser, <a href='kapitel7.jsp'>kapitel 7</a> om klassevariabler.</P>
  <LI><P CLASS="western">Sproget Java: <a href='kapitel2.jsp'>kapitel 2</a>, 3, 4, 5, 6, 7, 8, 9,
  10, 11, 12 osv. i r&aelig;kkef&oslash;lge.</P>
  <LI><P CLASS="western">Hurtigt i gang med at lave grafiske
  programmer: <a href='kapitel2.jsp'>kapitel 2</a>, det meste af 3 og derefter 9, 11 og 13 om
  grafik, grafiske standardkomponenter og h&aelig;ndelser.</P>
</UL>
<P CLASS="western">Bogen er egnet til kursusbrug. Med tredje udgave
underst&oslash;ttes nu ogs&aring; udviklingsv&aelig;rkt&oslash;jet
BlueJ, der mange steder bruges til at st&oslash;tte eleven i at komme
i gang med objektorienteret programmering (se <a href='kapitel1.jsp#afsn1.3.5'>afsnit 1.3.5</a> og <a href='kapitel4.jsp#afsn4.10.1'>afsnit
4.10.1</a>).</P>
<P CLASS="western">Der findes en (gratis) samlet pakke, hvor
underviseren f&aring;r:</P>
<UL>
  <LI><P CLASS="western">transparenter (pr&aelig;sentationer), der
  supplerer bogen</P>
  <LI><P CLASS="western">forslag til lektionsplan og opgaver</P>
  <LI><P CLASS="western">vejledende opgavebesvarelser</P>
</UL>
<P CLASS="western">Skriv til nordfalk@mobilixnet.dk, hvis du holder
et kursus og er interesseret i undervisningspakken.</P>

<H2 CLASS="western">0.3 <a name='afsn0.3'></a>&AElig;ndringer i tredje udgave</SPAN></H2>
<P CLASS="western">Tredje udgave er blevet opdateret og forbedret p&aring;
en r&aelig;kke punkter:</P>
<UL>
  <LI><P CLASS="western"><a href='kapitel1.jsp'>Kapitel 1</a>, Introduktion er opdateret med de
  nyeste v&aelig;rkt&oslash;jer, incl. BlueJ, som der ogs&aring; er
  kommet underst&oslash;ttelse for i bogen eksempler.</P>
  <LI><P CLASS="western"><a href='kapitel2.jsp'>Kapitel 2</a>, Basal programmering er udvidet med
  if-else-konstruktionen og nemmere indl&aelig;sning fra tastaturet
  (Scanner-klassen). Formatering med printf() beskrives ogs&aring;.</P>
  <LI><P CLASS="western"><a href='kapitel3.jsp'>Kapitel 3</a>, Objekter er blevet opdateret til
  at n&aelig;vne de mest nyttige klasser og metoder, der er
  tilg&aelig;ngelige i J2SE 5.0.I stedet for Vector og Hashtable
  beskrives nu ArrayList og HashMap med typeangivelse.</P>
  <LI><P CLASS="western">Alle steder, hvor det sk&oslash;nnes
  hensigtsm&aelig;ssigt, er <I>generics</I> udnyttet (s&aring; lister
  har nu en typeangivelse). Autoboxing og den nye nemmere
  for-each-l&oslash;kke anvendes ogs&aring; hvor det sk&oslash;nnes
  hensigtsm&aelig;ssigt.</P>
  <LI><P CLASS="western">StringTokenizer og DecimalFormat og de andre
  formateringsklasser udg&aring;r til fordel for de nemmere m&aring;der
  at g&oslash;re tingene p&aring; (is&aelig;r System.out.printf(),
  Scanner og strengklassens split()-metode), der er kommet til i
  mellemtiden.</P>
  <LI><P CLASS="western"><a href='kapitel5.jsp'>Kapitel 5</a>, Nedarvning har bedre forklaringer
  p&aring; polymorfi. Derudover er matadorspillet blevet interaktivt.</P>
  <LI><P CLASS="western"><a href='kapitel6.jsp'>Kapitel 6</a>, Pakker n&aelig;vner nu ogs&aring;
  indkapsling med pakker.</P>
  <LI><P CLASS="western"><a href='kapitel9.jsp'>Kapitel 9</a>, Grafiske programmer har f&aring;et
  afsnittene om animationer opdateret.</P>
  <LI><P CLASS="western"><a href='kapitel15.jsp'>Kapitel 15</a>, Datastr&oslash;mme og filh&aring;ndtering
  er blevet opdateret til J2SE 5.0</P>
</UL>

<H2 CLASS="western">0.4 <a name='afsn0.4'></a>Tak</SPAN></H2>
<P CLASS="western">Min bror Troels' kritik og bidrag har v&aelig;ret
uundv&aelig;rlige og bogen afspejler mange af hans holdninger (som
ogs&aring; er blevet mine) om objektorienteret programmering. 
</P>
<P CLASS="western">Tak til Henrik Tange, Jakob Bendsen, Peter Sestoft
og andre, som  har  ladet  mig  bruge deres materiale. 
</P>
<P CLASS="western">Tak til Torben Vaarby Laursen for at l&aelig;se
faglig korrektur p&aring; manuskriptet til 1. udgave.</P>
<P CLASS="western">Sidst men ikke mindst - tak til Linux-samfundet
for at lave et styresystem, der styrer!</P>
<P CLASS="western">Denne bog er skrevet med OpenOffice.org under
Linux-Mandrake. Begge er projekter med &aring;ben kildekode (Open
Source) og kan gratis hentes p&aring; henholdsvis www.openoffice.org
og www.linux-mandrake.com.</P>

<P CLASS="western"><I>Bonan plezuron legi la libron!<BR> </I>(det er
esperanto og betyder &quot;god forn&oslash;jelse med at l&aelig;se
bogen&quot;)</P>

<P CLASS="western">Jacob Nordfalk<BR><BR><BR>
</P>
<P CLASS="western">Valby, januar 2005.</P>


<a href='http://javabog.dk/'>javabog.dk</a>&nbsp;&nbsp;|&nbsp;&nbsp;&lt;&lt; forrige&nbsp;&nbsp;|&nbsp;&nbsp;<a href='indhold.jsp'>indhold</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='kapitel1.jsp'>n&aelig;ste &gt;&gt;</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='kode/'>programeksempler</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='../index_OOP.html'>om bogen</a>
<hr>
<font size=-2>http://javabog.dk/ - <b></b> af Jacob Nordfalk.
<br>
  Licens og kopiering under <a href='http://www.linuxbog.dk/licens.html'>&Aring;ben Dokumentlicens</a> (&Aring;DL)
  hvor intet andet er nævnt (82% af værket).
</font>
<br>
Ønsker du at se de sidste 18% af dette værk (199974 tegn)
skal du købe bogen. Så får du pæne figurer og layout, stikordsregister og en trykt bog med i købet.
<!-- netlæser: Wget/1.10, autoHent: true  -->
     

</body>
</html>
