Laboration Ett Java Reflections 1 Introduktion 2 Syfte 3 Beskrivning

Laboration Ett
Java Reflections
1
Introduktion
I Java finns ett inbyggt stöd för att manipulera Javakod dynamiskt under
exekvering, det sker genom The reflection API. Detta representerar, eller
reflekterar, klasserna, interfacen och objekten som för närvarande finns i vår
Java Virtual Machine.
Man kan med hjälp av detta API undersöka, manipulera och skapa objekt och dess innehåll. En annan finess är att man kan, utan att i förväg
veta vad klassen eller dess metoderna heter, utföra en metod på ett objekt.
Detta är bland annat användbart när du vill skriva utvecklingsverktyg såsom
debuggers, klassbrowsers och GUI-byggare [1, 4].
2
Syfte
Syftet med uppgiften är att ...
• Få en insikt i hur Java Reflections fungerar och kan användas.
• Träna på att följa en kodkonvention.
• Öva er färdighet i rapportskrivning.
3
Beskrivning
Er uppgift går ut på att med hjälp av The reflection API implementera
ett program som undersöker en given klass och konstruerar ett interface till
denna.
3.1
Att tänka på
Det som måste finnas med i interfacet är:
1
• Metodhuvuden
• Returvärdestyper
• Parametertyper
• Exceptions
• Konstanter
Med konstanter avses de fält som är deklarerade final.
3.1.1
Programmet
Programmet ska heta ClassToInterface och en kompilerad version samt
källkoden ska finnas under /edu/pmb/lab1/ i er hemkatalog. Indata till programmet ska vara namnet på klassen. Utdata, koden till interfacet, ska
skrivas ut på standard output. Ett anrop kan se ut påföljande sätt:
java ClassToInterface ExampleClass
3.1.2
Källkod
Er kod ska uppfylla Suns kodkonvention för Java. Framförallt namngivning
av funktioner och variabler är viktigt, detta för att det ska bli lättare att läsa
koden och för att undvika onödiga fel. Både utdatat från ert program och
er egen källkod ska följa denna. Kodkonventionen återfinns på Suns Javasida
[2].
3.2
Klassfiler
De klasser som programmet ska kunna hantera finns tillgängliga på kursens
hemsida [3]. Ert program får givetvis göras mer generellt, men minimikravet
är att dessa klasser ska kunna hanteras.
4
Rapport
Rapporten skall innehålla följande:
• Framsida: Kursens namn och termin, uppgiftsnummer, ditt namn och
användar-id, handledarnas namn, inlämningsdatum, samt sökvägen till
er källkod.
2
• Problemspecifikation: Beskriv med egna ord vad uppgiften gick ut på.
Är det någonting som varit oklart och ni gjort egna tolkningar så beskriv dessa.
• Användarhandledning: Förklara var programmet och källkoden ligger
samt hur man startar, kompilerar och använder det.
• Algoritmbeskrivning: Beskriv de algoritmer som inte kan anses självklara
(beskriv hellre för mycket än för lite).
• Begränsningar: Vilka problem och begränsningar har din lösning av
uppgiften? Hur skulle de kunna rättas till?
• Reflektioner: Var det något som var speciellt krångligt? Vilka problem
uppstod och hur löste ni dem? Allmänna synpunkter.
• Testkörningar: Noggranna testkörningar där man ser att programmet
fungerar som det ska.
• Diskussion: Hur fungerade det att följa en kodkonvention? Vilka var
fördelarna respektive nackdelarna? .
• Källkod: Källkoden ska finnas tillgänglig i er hemkatalog. Bifoga även
utskriven källkod. Rekommenderat är att ni skriver ut den med kommandot:
atp -C <filnamn> | lpr -P <skrivare>
Mer information om hur och varför man skriver en labrapport finns på
http://www.cs.umu.se/information/misc/labspec.html
Sista inlämningsdatum är 2004-11-22 (23:59).
Lycka till!
Referenser
[1] Sun Microsystems, http://Java.sun.com/docs/books/tutorial/
reflect/ (2004-11-02)
[2] Sun Microsystems,
html (2004-11-02)
http://Java.sun.com/docs/codeconv/index.
[3] http://www.cs.umu.se/kurser/TDBB24/HT04/
[4] J. Wigglesworth, P. McMillan Java Programming: Advanced Topics
Thomson, 2004
3