Mobiltelefonapplikationer med J2ME
(distanskurs)
lördag 3 juni 2006 kl 8:00 - 13:00 i L001
Hjälpmedel: | Vilket tryckt eller skrivet material som helst, bara det är på papper: böcker, utskrifter, egna anteckningar. Inga datorer. Som alternativ till ordbok, om man behöver en sån, kan man dock använda en så kallad "C-pen", som är ett elektroniskt lexikon i form av en penna. |
Poängkrav, gamla kursplanen: |
Maximal poäng är 44.
För betyget G krävs 22 poäng. För betyget VG krävs 33 poäng. |
Poängkrav, nya kursplanen: |
Maximal poäng är 34.
För betyget G krävs 17 poäng. För betyget VG krävs 26 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida senast lördag 17 juni 2006. |
Visning och frågestund: |
Måndag 19 juni 2006 kl 12:00-12:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på expeditionen. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-7347013. |
Den här uppgiften ska man bara göra om man läst kursen enligt den gamla kursplanen (höstterminen 2005), när det inte ingick några obligatoriska inlämningsuppgifter i kursen. |
Skapa en MIDlet som har två kommandon, Hej och Hopp, och som håller reda på vilka av dessa kommandon man gett.
När man startar applikationen ska den visa en tom textruta (av klassen TextBox):
Om man ger kommandot Hej eller kommandot Hopp, ska motsvarande text läggas till i textrutan:
Med kommandot Byt ska man kunna byta till en lista (av klassen List), där samma kommandon visas:
Det ska också finnas ett Rensa-kommando, som tömmer både textrutan och listan, och ett Avsluta-kommando, som förstås avslutar programmet.
Skriv denna MIDlet. Skriv alltså hela Java-filen med den eller de klassdefinitioner som behövs.
Den här uppgiften, och alla följande uppgifter, ska alla göra. |
Skapa en MIDlet som fungerar som en (dålig) miniräknare.
Man ska kunna ställa in två heltal mellan noll och tio (inklusive gränserna) med hjälp av två mätare ("gauges"). Det ska finnas kommandon för de fyra räknesätten, och resultatet ska visas på skärmen. Det ska också finnas ett Avsluta-kommando.
a) (8p) Skriv denna MIDlet. Skriv alltså hela Java-filen med den eller de klassdefinitioner som behövs.
b) (1p) Mätarna på skärmbilderna här ovan har bara fem staplar. Då är det väldigt svårt att ställa in talen, som ju kan variera mellan noll och tio. Jag gav MIDleten till en kompis, som provkörde den på sin (riktiga) mobiltelefon. Hon tyckte inte alls att det var något problem att ställa in talen, och förstod inte riktigt vad jag menade när jag pratade om de fem staplarna. Förklara vad detta berodde på!
a) (4p) Skriv en metod som heter skapa, som skapar heltalslagret och fyller det med några heltal. Du får själv bestämma hur heltalen lagras. Det ska vara ett heltal lagrat i varje post.
b) (4p) Skriv en metod som heter summera, som läser i postlagret och returnerar summan av alla de lagrade talen.
Båda metoderna ovan ska kunna kasta undantaget RecordStoreException.
c) (1p) Skriv en metod som heter säkersumma, som läser i postlagret och returnerar summan av alla de lagrade talen, men som returnerar talet 0 om något gick fel, till exempel om postlagret inte fanns. Metoden ska anropa metoden summera.
När man utvecklar program för en vanlig skrivbordsdator kan man oftast provköra programmet direkt på den datorn man programmerar på. När man skriver program för J2ME på mobiltelefoner går inte det, för man skriver programmet på en vanlig skrivbordsdator och ska sen köra det på en mobiltelefon. Om man har en Java-kapabel mobiltelefon tillgänglig, kan man provköra på den, men annars brukar man använda en emulator.
a) (2p) Vilka fördelar och nackdelar finns det med att testköra ett program i en emulator, jämfört med att köra det på en riktig mobiltelefon?
b) (2p) Vilka fördelar och nackdelar finns det med att testköra ett program i en emulator, jämfört med att köra det på en vanlig skrivbordsdator?
a) (1p) Vad är en konfiguration?
b) (1p) Vad bestäms av konfigurationen?
c) (1p) Vad är en profil?
d) (1p) Vad bestäms av profilen?
e) (1p) J2ME innehåller också ett antal tilläggs-API:er. Ge exempel på ett tilläggs-API.
f) (1p) Varför har man skapat dessa tilläggs-API:er som separata API:er, i stället för att ha med dem direkt i en konfiguration eller en profil?
b) (1p) Varför har man infört detta krångel?
c) (1p) Vilka säkerhetsrisker finns med preverifiering?
b) (2p) Hur många Item-objekt bör man ha i ett och samma formulär? Diskutera!