Instuderingsfrågor och övningar Innehåll Delmoment 4... 2 Kapitel 1-5:... 2 Delmoment 5... 3 Kapitel 7 Förslag på instuderingsfrågor... 3 Kapitel 8 Förslag på instuderingsfrågor... 4 Övningar utan svar - Delmoment 5... 5 Kapitlen avser boken: Knudsen, Jonathan. (2008) Kicking butt with MIDP and MSA : creating great mobile applications. Boston : Addison-Wesley. (403 s). ISBN 978-0-321-46342-5 Tips: Använd Google! Prova att skriva in t ex sökorden J2ME Midlet tutorial 1 (6)
Delmoment 4 Kapitel 1-5: Läs igenom alla dessa kapitel. En bra övning är att formulera frågor till Dig själv medan Du läser kapitlen. Ta fram frågorna vid ett senare tillfälle och besvara dem. Förslag på instuderingsfrågor 1. Vad är Java ME (fd J2ME)? 2. Vad är en konfiguration? 3. Vad bestäms av konfigurationen? 4. Vilka konfigurationer finns det? Beskriv dem kort! 5. Vad är en profil? 6. Vad bestäms av profilen? 7. Vilka profiler finns det? Beskriv dem kort! 8. Vad menas med en stack? 9. Vad är en JSR? 10. Vilka fördelar är det man får med MIDP, jämfört med att till exempel programmera i C++ mot ett särskilt API för varje mobiltelefonmodell eller tillverkare? (Ledtrådar: portabilitet, säkerhet) 11. Vad innebär, i MIDP-sammanhanget, en denial-of-service-attack? 12. Nämn några tillverkare av mobiltelefoner som stöder MIDP. 13. Vad gör man för att motverka fragmentering? 14. I boken nämns Sun Java Wireless Toolkit for CLDC. Måste man använda detta Toolkit från Sun (eller referensimplementation), eller finns det fler alternativ? Nämn några! 15. Vad innebär förverifiering eller preverifiering, och varför har man infört detta krångel? 16. Vilka säkerhetsrisker finns med preverifiering? 17. Vad är en "mjuk knapp" (engelska: soft button)? 2 (6)
Delmoment 5 Kapitel 7 Förslag på instuderingsfrågor 1. Vad menas med abstraktion och upptäckt (engelska: discovery) i MIDP-sammanhang? 2. För det mesta bör man använda abstraktion. Varför? 3. Det finns åtminstone två anledningar till att man ibland i stället vill använda upptäckt. Vilka? 4. Vad är det för skillnad på klasserna Display och Displayable? 5. Var hittar man metoden setcurrent, och vad gör den? 6. Vilka är de viktigaste klasserna i paketet javax.microedition.lcdui? 7. En MIDlet har, som alla Java-klasser, en konstruktor, men också en metod som heter startapp. Kan man inte lämna startapp tom, och lägga all initieringskod, med getdisplay med mera, i konstruktorn? 8. Kommandon har olika typer, som CANCEL och HELP. Varför? (Det förklaras inte särskilt bra i boken, så du kan behöva läsa om klassen Command i APIdokumentationen för MIDP.) 9. Kommandon har olika prioriteter. Varför? 10. MIDP innehåller gränssnittet (engelska: interface) CommandListener. Vad är det till för (Se bla API-dokumentationen för MIDP.)? 11. Vad är en tråd (engelska: "thread")? (Det förklaras inte i kapitlet, men står förmodligen i en grundläggande Java-bok.) 12. Ibland vill man göra saker som tar lång tid, till exempel göra komplicerade beräkningar eller koppla upp sig via Internet, som svar på att användaren ger ett kommando. Boken rekommenderar att man då inte gör allt det jobbet i hanterarmetoden, utan startar en egen tråd för det. Varför? 13. Vad är klassen Screen? 14. Vad är klassen Ticker? 15. MIDP-program ska helst inte kräva att användaren matar in långa texter. Varför? 16. När man skapar en TextBox anger man en maxstorlek. Vad mäts den i? Rader, tecken, pixlar, eller något annat? (Glöm inte att den sortens information ofta hittas enklast i API-dokumentationen för MIDP.)!) 17. Man kan ange begränsningar (engelska: constraints) på vad man kan mata in i en TextBox. Hur gör man det? 18. Hur skulle man skapa en TextBox för inmatning av en e-postadress? 19. Hur skulle man skapa en TextBox för inmatning av en e-postadress, som dessutom är lite hemlig och inte bör lagras i telefonens eventuella listor för automatisk ifyllning av senare inmatning? 20. Varför kan flaggan PASSWORD vara olämplig att använda vid inmatning på en mobiltelefon? 21. Vad är det för skillnad på en tidsbegränsad (engelska: timed) och en modal (engelska: modal) varning (engelska: alert)? 22. Hur anger man hur länge en varning ska visas? 3 (6)
Kapitel 8 Förslag på instuderingsfrågor 1. Vad har man listor (alltså klassen List) till? 2. Vad har man MULTIPLE-listor till? 3. Vad har man EXCLUSIVE-listor till? 4. Vad har man IMPLICIT-listor till? 5. I vilka olika sammanhang kan bilder visas i listor och formulär? 6. På vilka sätt kan man i Java-koden ange vilka alternativ som ska finnas i en lista? 7. Hur får man i Java-koden reda på vilka av alternativen som användaren har valt? Skiljer det sig mellan olika typer av listor? 8. Vad är klassen Form? 9. Vad är klassen Item? 10. Varför behövs klassen Form? Skulle man inte kunna placera ut Item-objekten direkt på displayen? 11. Ett Item kan, precis som en Displayable, ha kommandon. Vad kan man ha Itemkommandon till? 12. Vad används Item.HYPERLINK till? 13. Vad används Item.BUTTON till? 14. Vad bör man ofta använda istället för knappar BUTTON? 15. Vad är de viktigaste skillnaderna mellan StringItem och TextField? 16. Klassen ImageItem har två olika konstruktorer. (Se API-dokumentationen för MIDP.) Vad skiljer dem åt? 17. Hur skapar man ett DateField där man kan ange klockslag, men inte datum? 18. Det finns flera olika sorters "mätare" (engelska: gauges), som alla representeras med klassen Gauge, men med olika inställningar. Vilka, och vad kan man använda dem till? 19. Klassen ChoiceGroup har stora likheter med klassen List, men vilka skillnader finns det? 20. Hur använder man gränssnittet ItemStateListener? 4 (6)
Övningar utan svar - Delmoment 5 Delmomentet handlar främst om att kunna hantera användargränssnittskomponenter (subklasser av klassen Screen - Klasserna Alert, TextBox, List, Form och subklasser till Item - ChoiceGroup, DateField, Gauge, ImageItem, Spacer, StringItem, TextField) samt händelsehantering med hjälp av kommandon (klassen Command och interfacet CommandListener). Till Din hjälp finns här några övningsuppgifter. När du väl gått igenom dem, så kan du helt säkert med lite fantasi och kreativitet hitta på någon enkel mobilapplikation som kanske kan underlätta Din vardag. Kom ihåg att mer finns att lära sig inom detta område t ex hur man kopplar upp sig mot Internet, hur man lagrar data permanent i telefonen, hur man skickar och tar emot SMS från just din applikation etc. Detta tas upp i fortsättningskursen Programutveckling för mobila enheter! 1. Skapa en MIDlet som startar upp med en Alert med texten och titeln Välkommen. Denna alert visas i fem sekunder därefter visas en TextBox innehållande texten Tryck på exit för att avsluta applikationen. Till TextBox en kopplar du ett avslutakommando med namnet Avsluta varvid MIDleten termineras. 2. Samma som i ovanstående uppgift, men Alerten ska aldrig tajma ut och övergår således inte automatiskt till TextBoxen efter viss tid. Skapa ytterligare ett kommando för Alerten för att användaren skall kunna navigera till Textboxen. 3. Skapa en EXCLUSIVE lista (klassen List) med valen CD, DVD respektive VHS. När användaren valt ett alternativ så testar du bara genom att presentera en Alert som utvisar vad som valdes. 4. Samma som föregående uppgift, men skapa nu en IMPLICIT lista 5. Samma som föregående uppgift, men skapa nu en MULTIPLE lista 6. Skapa ett formulär innehållande följande Item s: StringItem, ImageItem. Välj själv någon bild i PNG-format. 7. Skapa ett formulär innehållande följande Item s: StringItem, ChiceGroup, TextField och använd Spacer s för att få isär dem- Se figur nedan. 5 (6)
Detta är ett StringItem Alt 1 Alt 2 Alt 3 Avstånd: 10 Avstånd: 10 Figur: Displayens utseende 8. Krösus Sork tycker om att spela på Lotto mm. Han litar inte riktigt på sig själv, så han vill inte välja nummer själv. Han litar inte heller på spelmaskinens lottning (kallad Hux Flux). Krösus tycker om och fascineras av att fylla i numren själv det ger en speciell känsla inför dragningen. Eftersom han känner och litar Dig, så ber han dig göra en mobilapplikation som han kan använda sig av. Riktlinjer: MIDleten startas med en välkomst-alert med texten Krösus Sorks Lottogenerator och med en bild på Krösus Sork http://www.du.se/~rny/distans/grundlprogr1_5pa_etjanster/delmoment5/material/krosus1.png Visa kort textinstruktion om vad som skall göras samt låt Krösus välja det antal rader (n) han vill slumpa. (1 n 12 rader) o Du väljer själv ett lämpligt Item för att lösa detta Slumpa sju stycken heltal mellan 1-35. Detta görs n gånger och skriv ut dem Inget nummer skall kunna uppkomma mer än en gång. Flödesschema Screen s: END Alert Välkommen Form Instruktioner Välj n antal rader TextBox Visa n slumpade rader Alert Vill du Avsluta? Pilarna anger hur man skall kunna navigera: Enkelriktad (Det går ej att gå tillbaka) Dubbellriktad (Det går att gå tillbaka) Nu kan du säkert hitta på något program själv Det är den bästa drivkraften att lära sig! 6 (6)