fristående program En applikation är ett fristående program Att köra

Innehåll
! OOP
snabbintroduktion
! Datatyper
! Uttryck
! Satser
! Arv (intro)
! Att organisera Javakod
! Klassdesign och metodik
(UML, CRC)
F15
Applikationer - fristående program
! Hur
konstruerar man fristående program som
kan ”köras”? Dvs Java utan BlueJ?
! Arv,
polymorfi och
dynamisk bindning
! Fält
! Undantag
! In-/utmatning och filer
! Applets vs applikationer
! Rekursion
jubo,thomasj,marie 2003
"I
BlueJ så kan man skapa objekt genom direkt
genom att anropa konstruktorn via
klassdiagrammet…
" … och sedan anropa metoder interaktivt för att
manipulera det skapade objektet
" Detta går ej i de flesta andra
programmeringsmiljöer för java.
" Hur gör man då för att starta exekveringen av ett
program?
1
F15
jubo,thomasj,marie 2003
En applikation är ett fristående program
! En
Att köra en applikation
! Antag
Java-applikation måste innehålla en metod main()
att filerna TowersOfHanoi.java och
SolveTowers.java finns i en katalog
! Under Windows (liknande i alla andra system...):
"I
metoden main() startas exekveringen
" Metoden main() måste se ut på ett särskilt sätt
# Utom
# Måste
argv som är ett godtyckligt namn
se till objekt som behövs skapas och att rätt metoder startas.
" Starta
kommandofönstret och gå till rätt katalog
" Kompilera
> c:\jdk\bin\javac SolveTowers.java
Exempel:
" Kör
> java SolveTowers
public class ExampleApplication
{
public static void main (String[] argv)
{
// Deklarationer och satser som i
// vilken metod som helst
…
}
}
F15
jubo,thomasj,marie 2003
! Ofta
måste man ange sökvägar
" Till
java/javac
katalogen med klassfilerna (om såna finns)
" Till katalogen med källkoden
" Till
3
F15
Kommandoradsparametrar
4
! Används
main kan ges argument i kommandot
> java ComLinArgs Jättekul
!Dessa värden kallas kommandoradsparametrar
!Argumenten betraktas som en lista av strängar
//Visar exempel på parametrar till programmet
public class ComLinArgs
{
public static void main (String[] args)
{
System.out.print("Första argumentet är: ");
System.out.println(args[0]);
}//main
}//class ComLinArgs
jubo,thomasj,marie 2003
jubo,thomasj,marie 2003
Jar-filer
!Metoden
F15
2
5
för att paketera ihop javafiler så att det
blir lättare att distribuera
! BlueJ kan exportera ett projekt till en jar-fil
! Kan göras exekverbara genom att man i jar-filen
beskriver i vilken klass metoden main finns
F15
jubo,thomasj,marie 2003
6
En Applet körs i en webläsare
! Webläsare
" Laddar
HTML-filen
Doodle.html
<HTML>
<HEAD>
<TITLE>Doodle Applet</TITLE>
</HEAD>
(Netscape, Explorer etc)
en applet över nätet när den hittar en <applet>-tag
" Tillhandahåller en grafisk miljö
" Skapar ett objekt av appletens klass
" Tillåter inte vissa operationer av säkerhetsskäl
! Exempel
<BODY>
<H1>Doodle Applet</H1>
<HR>
<APPLET code="Doodle.class"
width=300
height=250
codebase=".">
</APPLET>
<HR>
</BODY>
</HTML>
på hur det ser ut i html-dokumentet:
<title>Doodle Applet</title>
...
<applet code="Doodle.class"
width=300
height=250
codebase=".">
</applet>
...
! Se
Doodle i kod-mappen på hemsidan
F15
7
jubo,thomasj,marie 2003
F15
Appletens kod
Ytan i websidan
Kodens plats
= i samma katalog som
html-dokumentet
"."
8
jubo,thomasj,marie 2003
Applet
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.Applet
F15
9
jubo,thomasj,marie 2003
F15
Applets på nätet
10
jubo,thomasj,marie 2003
En applets anatomi och livscykel
! Skapas
Browser
Server
Fönster
Applet
…
+ init ( )
+ start ( )
+ stop ( )
+ destroy ( )
Webb-sida (.html)
Applet
Applet (.class)
Arkiv (.jar)
+ paint (Graphics g)
+ play (URL source)
+ resize (int w, int h)
...
Ljud och bild filer
av browsern (eller
appletviewer:n)
! Inititialiseringen
" Endast
en gång när appleten
laddas
" Motsvarar konstruktorn
! Startas
" Varje
" När
jubo,thomasj,marie 2003
11
F15
sidan lämnas
! Slutstädas
" När
F15
gång sidan visas
! Stoppas
jubo,thomasj,marie 2003
sidan tas bort ur minnet
12
Vad Applets kan som applikationer inte kan
Vad applets inte kan/ får
! Ladda
! Spela
! Läsa
! Visa
ljudfiler
HTML-dokument
! Prata
med andra applets på samma sida
bibliotek eller “native methods”
och skriva filer på klienten
! Göra nätverksanslutningar annat än till sin
“egen” server
! Starta program på klienten
! Läsa vissa systemegenskaper
F15
! Applets
som laddats “lokalt” har inga
begränsningar
13
jubo,thomasj,marie 2003
F15
jubo,thomasj,marie 2003
14
Javadoc - för källkoden
! Speciella
kommentarer som kan användas för att
generera dokumentation av koden man har skrivit
! BlueJ har möjlighet att göra detta (finns även andra
verktyg)
! /** startar en javadoc kommentar
! Måste skrivas innan en klass, attribut, konstruktor
eller metod deklaration
! Första raden skall vara en kort förklaring av vad
metoden gör
! Efter den första raden som börjar med @ så slutar den
allmänna beskrivningen av metoden
Dokumentation
Programmeringsmetodik och programmering
i ett objektorienterat språk, 5p.
TDBA63 HT2003
F15
jubo,thomasj,marie 2003
Javadoc 2
!
!
!
!
!
!
!
!
!
@author
@version
@param
@return
@exception
@see
@since
@serial
@deprecated
(endast klasser och
(endast klasser och
(endast metoder och
(endast metoder)
(även @throws sedan
Labrapport
interface)
interface)
konstruktorer)
! Framsida
! Innehållsförteckning
! Åtkomst
och användarhandledning
! Problembeskrivning
! Systembeskrivning
! Algoritmbeskrivning
! Lösningens begränsning
! Problem och reflektioner
! Testkörningar
! Källkod
Javadoc 1.2)
(eller @serialField eller @serialData)
! API
beskrivningen på nätet är uppbyggd med
hjälp av javadoc
! För mer info se: http://java.sun.com/j2se/javadoc/
F15
jubo,thomasj,marie 2003
16
17
F15
jubo,thomasj,marie 2003
18
Framsidan
Innehållsförteckning
! Framsidan
! Innehållsförteckningen
på din labrapport kan du utforma
ganska fritt. Tänk bara på att den ska vara läsbar,
och innehålla (minst) följande information:
ska innehålla alla
rubriker i rapporten, och eventuellt en del
underrubriker, beroende på hur rörigt det blir.
" Ditt
" Tänk
namn
e-mail adress här på CS!
" Kursens namn samt vilken termin det är (t.ex. ht03)
" Vilken laboration det är
" Handledarens/handledarnas namn
" Datum
" Vilken version det är (första/andra/uppsamling etc.)
på att innehållsförteckningen inte bör vara
listad i innehållsförteckningen...
" Din
! Lämna
! Använd
gärna de funktioner som finns för att
generera innehållförteckning automatiskt i det
ordbehandlingsprogram du använder
plats för kommentarer
F15
jubo,thomasj,marie 2003
19
F15
jubo,thomasj,marie 2003
Åtkomst & användarhandledning
Problemspecifikation
! Kan
ibland delas upp i två delar…
! Hur kan handledaren komma åt din lösning för
testning, alltså sökvägen till din källkod och ditt
program.
Vad heter de olika filerna som programmet är
uppbyggt av?
! Hur används programmet?
! Hur ska handledaren gå tillväga för att kompilera
och köra din källkod?
F15
jubo,thomasj,marie 2003
21
! Ska
beskriva vad uppgiften går ut på
kunna ge en bild av uppgiften utan att man ska
behöva läsa hela orginalspecifikationen
! Använd egna ord, d v s kopiera inte labbspecifikationen
! Sammanfatta problemet
! Hänvisa till orginalspecifikationen
! Gör specifikationen att vissa antaganden måste göras? Ta
upp dessa i sådana fall
! Har du gjort några utökningar av uppgiften? Redovisa i
sådana fall dessa.
! Ska
F15
jubo,thomasj,marie 2003
Systembeskrivning
! Om
beskriva systemets interna uppbyggnad och
struktur
! Beskriv varje klass och syftet med denna och dess del
av helheten.
du har använt några icke självklara
algoritmer, t.ex. en sorteringsalgoritm, en
sökalgoritm eller något annat, ska du beskriva
den/dem här.
! Försök undvika att använda element som är direkt
kopplade till koden, t ex variabelnamn och dylikt
! Syftet med detta avsnitt är att en läsare ska kunna
få förståelse för hur en komplicerad del löses utan
att behöva lusläsa kod och utifrån denna inse vad
som händer
" För
att beskriva klassen behöver man också beskriva tex de
metoder som finns i den.
" Här kan det gå bra att använda sig av javadoc för att
automatgenerera delar av beskrivningen
! Beskriv
relationer mellan klasser, med figurer och
kommentarer till dessa, i Java är UML ett bra verktyg
jubo,thomasj,marie 2003
22
Algoritmbeskrivning
! Ska
F15
20
23
F15
jubo,thomasj,marie 2003
24
Algoritm
Exempel
!
Efter den Persiske matematikern
Muhammed al-Khowârizmî 800 talet e. Kr
! Vad
är en algoritm?
" Som
F15
ett recept eller en arbetsbeskrivning
jubo,thomasj,marie 2003
25
Antag att vi har en lista med alla anställda på ett
företag: Namn Pnr och Lön, och vi vill räkna ut
lönekostnaden för företaget
"
Skriv ner talet 0
"
Gå igenom listan, och för varje anställd så adderar du
personens lön till det skrivna talet
"
När man nått slutet på lista, så är det nedskrivna talet utdata
F15
jubo,thomasj,marie 2003
Karakteristik för en algoritm
Algoritmer mer formellt
! Def:
En algoritm är en noggrann plan, en metod för att
stegvis utföra något
! Krav på en algoritm
! Texten
som beskriver algoritmen är fixt stor
! Processen som algoritmen beskriver kan vara av
dynamisk storlek
! Algoritmer löser en klass problem
! Algoritmer kan ha olika kornighet
" Ändlighet(Algoritmen
måste ha en ändlig beskrivning)
(Varje steg måste vara entydigt)
" Indata (varje algoritm måste ha Noll eller fler indata
" Utdata (Algoritmen måste ha Ett eller flera utdata)
" Effektivitet (Varje steg i algoritmen måste vara effektiva, kunna
utföras på en ändlig tidsrymd)
" Bestämdhet
"T
ex. Andra steget i föregående algoritm kan förfinas så att man
får en mer finkornig algoritm
F15
jubo,thomasj,marie 2003
27
F15
jubo,thomasj,marie 2003
Algoritmbeskrivning
! Beskriver
alla begränsningar som du kan
komma att tänka på, eller har stött på under
testningen
! Uppriktighet anses positivt.
Alltså bör du tala om de begränsningar som
strider mot specifikationen
och koncist
! Entydigt
! Högnivåliknande syntax
1 Kontrollera att antalet personer är mindre än tio
1.1 Om antalet personer överstiger tio, avsluta
med ett felmeddelande
2 För varje person:
2.1 Skriv ut personens namn med röd text
2.2 Skriv ut personens födelsenummer med blå text
2.3 Skriv ut personens adress med grön text
3 Vänta på att användaren trycker på tangenten N
4 Avsluta funktionen
jubo,thomasj,marie 2003
28
Lösningens begränsningar
! Kort
F15
26
" Nästan
alla lösningar innehåller någon
begränsning, tänk till lite bara
! Hur
29
F15
kan/kunde begränsningarna undvikas?
jubo,thomasj,marie 2003
30
Problem och reflektioner
Testkörningar
! Stället där du kan skriva "vad som helst".
! Vad du tyckte om laborationens svårighetsgrad,
! Hur handledningen fungerat
! Hur bra datorerna fungerat
! Vilka problem som uppstått under arbetets gång
! Om du haft nog med tid etc.
! Du
måste testa din lösning innan du lämnar in
den. För att visa att du gjort det, och för att ge
handledarna ett snabbt sätt att kontrollera att din
lösning ser OK ut så bifogar man testkörningarna
i rapporten.
! Tänk ut vettiga testfall. Vad kan tänkas vara svårt
för programmet?
! Kommentera testfallen. Varför valde du detta
testfall? Blev resultatet som det var meningen att
det skulle bli?
Tack
! Om
du fått hjälp av någon (kurskamrat, handledare,
mamma), kan det vara på sin plats att tacka denne i
rapporten.
F15
jubo,thomasj,marie 2003
31
F15
jubo,thomasj,marie 2003
Källkod
Källkod/Indentering
! Kan
vara bra att bifoga som bilaga, eftersom
ordbehandlare har en tendens att misshandla källkod
ganska rejält vad gäller indentering, stavning etc.
! Hur
finns vissa verktyg vars syfte enbart är att skriva ut källkod
snyggt (t ex atp, a2ps och enscript)
för enkel sats som hör till t.ex. if- whileoch for- satser
! Tänk på att inte skriva för långa rader
! Välj identifierare med eftertanke!!
! Om du måste bryta upp ett uttryck/sats p.g.a. att raden
skulle ha blivit för lång så flytta in resten av uttrycket
minst till positionen för starten av uttrycket/satsen
! Mer info se:
http://java.sun.com/docs/codeconv/
vara utskriven med ett icke-proportionellt typsnitt,
t.ex. Courier.
! Koden ska vara indenterad på ett konsekvent sätt
! Koden ska se bra ut även på papper
! Koden ska vara kommenterad där det inte är klart vad du
gjort
! Varje metod föregås av kommentarer som beskriver dess
syfte, in-/utdata o s v
33
Övrigt
! Använd
ett korrekt och formellt språk
! Sidhuvud och sidfot. Använd dessa, men ha
inte för mycket information i dem.
I sidhuvudet kan du t.ex. ha ditt namn, datum,
kursens namn och vilken laboration det är.
I sidfoten kan du ha sidnumret.
! Tänk på att förstasidan inte bör vara numrerad
eller ha samma sidhuvud som resten av
rapporten.
! Läs
F15
igenom rapporten innan du lämnar in den!
jubo,thomasj,marie 2003
35
alltid in all kod som står i ett block 3-4 tecken (tab)
! Detsamma
! Ska
jubo,thomasj,marie 2003
man formaterar sin kod
" Flytta
" Det
F15
32
F15
jubo,thomasj,marie 2003
34