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