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