Mobiltelefonapplikationer med J2ME
(fristående kurs)
lördag 7 januari 2007 kl 14:00 - 19:00 i T227
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: |
Maximal poäng är 40.
För betyget G krävs 20 poäng. För betyget VG krävs 30 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida senast lördag 28 januari 2006. |
Visning och frågestund: |
Onsdag 1 februari 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. |
Här ska det, som synes på bilden, finnas ett Avsluta-kommando (som förstås avslutar MIDleten) och ett Välj-kommando, som utför det alternativ man valt i listan. Det ska bara gå att markera ett alternativ åt gången.
Om man väljer alternativet Fortsätt visa den här listan, ska MIDleten fortsätta att visa listan. Användaren ser alltså ingen skillnad.
Om man väljer alternativet Visa textrutan, ska MIDleten visa en textruta som innehåller en informationstext om hur många kommandon som getts, totalt sedan MIDleten startades:
I textrutan ska det, som synes på bilden, finnas ett Avsluta-kommando på samma sätt som på den första skärmen med listan, och ett Tillbaka-kommando, som tar oss tillbaka till listan med alternativ.
Om vi nu använder Tillbaka-kommandot och går tillbaka till listan med alternativ, och sen i stället väljer Visa formuläret, ska man komma till ett formulär som är en sorts kombination av listan och textrutan. På formuläret ska det nämligen finnas dels ett textfält som visar antalet kommandon, och dels ska det finnas en ny lista med alternativ:
I formuläret ska det, som synes på bilden, finnas ett Avsluta-kommando, och ett Välj-kommando som utför det alternativ man valt i listan, på samma sätt som i den första listan. Det ska bara gå att markera ett alternativ åt gången i listan.
Notera att textfältet med antalet kommandon ska uppdateras om man väljer alternativet Fortsätt visa det här formuläret:
Det finns ett Avsluta-kommando på varje skärm, men man ska också kunna avsluta programmet genom att välja Avsluta-alternativet som finns i de båda listorna:
Uppgiften är förstås att skriva denna MIDlet. Skriv alltså hela Java-filen med klassdefinitionen.
b) Ska obfuskeringen göras före eller efter kompileringen? Motivera svaret!
c) Ska obfuskeringen göras före eller efter för-verifieringen (engelska: pre-verificiation)? Motivera svaret!
d) Ska obfuskeringen göras före eller efter det att MIDlet:en skickas till telefonen? Motivera svaret!
Även om man inte kommer ihåg om klassen finns i MIDP eller CLDC, kan man ofta gissa.
Vi vill hålla reda på antalet kommandon även mellan körningar av MIDleten. Varje gång MIDleten avslutas sparar vi därför undan antalet kommandon i ett postlager (på engelska record store), och varje gång MIDleten startas hämtar vi antalet ur postlagret.
a) (5p)
Skriv metoden spara_antal_kommandon. Den ska lämpa sig för att anropas från destroyApp, och den ska spara antalet kommandon i postlagret.
Om postlagret inte fanns, ska det först skapas. Om det uppstår något fel ska vi bara strunta i att spara antalet kommandon, utan något felmeddelande eller liknande.
b) (5p)
Skriv metoden hämta_antal_kommandon. Den ska lämpa sig för att anropas från MIDlletens konstruktor, och den ska hämta antalet kommandon från postlagret.
Om det uppstår något fel, till exempel beroende på att det är första gången vi kör MIDleten och postlagret ännu inte har skapats, börjar vi bara räkna antalet kommandon från noll, utan något felmeddelande eller liknande.
Ett tips för båda metoderna är att lagra antalet som en sträng i postlagret. (Den strängen måste dock konverteras till en byte-array.) Om vi antar att MIDleten lagrar antalet kommandon i en heltalsvariabel som heter antal_kommandon, och vi vill konvertera den till en sträng, kan man helt enkelt göra så här:
strängen = "" + antal_kommandon;
För att konvertera tillbaka från en sträng till ett heltal kan man göra så här:
antal_kommandon = Integer.parseInt(strängen);