Namn: Personnr: 1 Programmeringsteknik i Java för B2 och V1 2D1310 28 oktober 2000 (1p) En Javabok. För betyget godkänt krävs att a- eller b-delen (eller c-delen då en Hjälpmedel: finns) av varje fråga (uppgt 1 5) är rätt besvarad. Ett mindre fel som e har med sån att göra kan accepteras. Vi reserverar oss för eventuella lättnader av dessa krav. frågan linje och årskurs (t ex B-99) på omslaget. Skriv svaren i ramarna i detta häfte. Glöm Skriv att skriva namn och personnummer på varje blad! e till! Lycka Uppgt 1: Parametrar a) Vad blir utskrten från följande program? Island antal = 2; far = new ("Gunnar Benediktsson"); son = new ("Peter Gunnarsson"); son, antal); foo(far, System.out.prln(far.namn + " : " + son.namn + " : " + antal); void foo( a, b, c) c=4; Island // namn; String a=b; Gunnarsson"; a.namn="jonas System.out.prln(a.namn + " : " + b.namn + " : " + c); namn) (String this.namn=namn; // Utskrt i metoden foo: Utskrt i metoden main: 2 b) Mat mumsbit = new Haj(70); Haj tid = 200; sälta = 0.7; (färdig(mumsbit, tid, sälta)) System.out.prln("Dags att äta hajen!"); boolean färdig(haj h, d, s) om hajen är färdig att ätas //beräknar Mat // Haj vikt; Här finns kod som e visas på tentan vikt) Haj( = vikt; this.vikt Haj // delikatess på Island är haj som man grävt ner i sanden och låtit jäsa. Det gäller att gräva En den i rätt tid för att den ska smaka rätt. Programmet här beräknar om det är dags upp gräva upp fisken. När delikatessbutiken Haj-deli använder programmet märker de att att är något fel i metoden färdig(). För att lättare hitta felet skriver Haj-deli ut värdena det före och efter anropet till färdig(). Ange för följande variabler om utskrten kan ha både efter anropet till metoden färdig(). ändrats Kan ha Motivering Variabel (j/n) ändrats mumsbit.vikt tid sälta
Namn: Personnr: 3 Uppgt 2: Metodanrop Lisa Lundi är på Island och ringmärker och väger lunnefåglar. För att hålla Fågelforskaren på alla märkta fåglar har hon ett program. koll deklarationer av variabler och metoder är redan gjorda och inga andra får Följande för att lösa uppgten. användas Fagelskadning void main(string[] args) pippi = new Fagel(1200,"200X45" ); Fagel Koden i a- och b-delen hamnar här. // Fagelskadning // Fagel antal=0; vikt; String märkning; Fagel( vikt, String märkning) instansvariablerna //Initierar void ändravikt( vikt) fågelns vikt //Ändrar gevikt() fåglens vikt //Returnerar String gemärkning() fågelns märkning //Returnerar Fagel // Markera vilka av följande satser (som utförs i main-metoden) som är riktiga respektive a) och ange för de felaktiga varför de är fel. Om det finns fler fel i en sats behöver felaktiga du bara ange ett av dessa. Sats Rätt/Fel Motivering String s = pippi.gemärkning(); pippi.ändravikt(); char c = Fagel.antal; Fagel f = new Fagel(200X46); b) Skriv kod som skriver ut all information om pippi(dvs pippis vikt och märkning). 4 Uppgt 3: Matriser, arrayer och vektorer energimyndigheten vill ta hålla koll på vattenflödet i vattenfallen. Hjälp dem Isländska ett program för att göra detta. De har gjort följande deklarationer, inga andra får skriva användas för att lösa uppgten. VattenKraft num=150; i, totflöde, maxflöde; fall = new [num]; //vattenflödet i vattenfallen [] v = new Vector(); Vector ettfall; Vattenfall Koden i a-, b- och c-delen hamnar här. // VattenKraft // Vattenfall flöde; String namn; Vattenfall( flöde, String namn) = flöde; this.flöde this.namn = namn; Vattenfall // a) Skriv kod som summerar alla vattenflöden (dvs alla värden i fall).
Namn: Personnr: 5 Skriv kod som skriver ut alla flöden i omvänd ordning (dvs det sista flödet i fall ska b) ut först). skrivas Anta att flera element (avtypen Vattenfall) lagts in i vektorn v. Skriv kod som skriver c) namnet på Vattenfallet på den första positionen i vektorn. ut Uppgt 4: Klasser Frej Fårskalle har en enorm fårhage (hagen) med massor av får. Han har börjar Fårägaren skriva på ett program för att hålla reda på sina får. Hjälp honom att skriva koden i metoderna! Faarskallen hagen = new FaarHage(200); FaarHage (hagen.klipp(40)) Faarskallen // FaarHage Faar[] bä; System.out.prln("Klipp fåren!!!"); private antal; FaarHage( n) som ger värden till instansvariablerna och som /*konstruktor in information från en fil om fåren och läser bä med får*/ fyller 6 medelulllängd() Metod som beräknar medelullängden på alla fåren i hagen*/ /* klipp( gräns) boolean som jämför medelullängden med gräns och /*metod FaarHage // Faar ullängd; true om fåren ska klippas. Om medellängen returnerar gränsvärdet ska fåren klippas.*/ överstiger födelseår; ullängd, år) Faar( Konstruktor som ger instansvariablerna värden*/ /* Faar // a) Skriv den kod som saknas i konstruktorn i klassen Faar. b) Skriv den kod som saknas i metoden klipp().
Namn: Personnr: 7 Uppgt 5: Minnesbilder Betrakta följade program. Fem Fem // krafla = new Vulkan(true, 1984, 97.3); Vulkan krafla.snartutbrott(); Vulkan final GRÄNSVÄRDE = 103; numaktiv = 0; //antal aktiva registrerade vulkaner aktiv; boolean utbrottsår; //årtal för senaste utbrott tryck; //inre tryck i vulkanen Vulkan(boolean aktiv, utbrottsår, tryck) = aktiv; this.aktiv this.utbrottsår=utbrottsår; = tryck; this.tryck (aktiv) numaktiv++; //a void snartutbrott() kvot = tryck/gränsvärde; (kvot>1) har ett utbrott NU!!"); System.out.prln("Vulkanen (kvot>0.7) else else //b Vulkan // System.out.prln("Troligtvis utbrott snart"); System.out.prln("Ta det LUNGT..."); 8 uppgterna nedan skall du rita bilder av minnet vid två tillfällen under exekveringen. Bilderna I innehålla samtliga klasser med tillhörande klassvariabler, samtliga metodanrop med lokala skall (glöm e this) och samtliga objekt med instansvariabler. Alla variablers värden skall variabler av bilden. Objekt som är kandidater för skräpsamling skall markeras. framgå a) Rita en bild av minnet vid läge (a) i programmet. Klasser och klassvariabler Metodanrop och lokala variabler Objekt och instansvariabler b) Rita en bild av minnet vid läge (b) i programmet. Klasser och klassvariabler Metodanrop och lokala variabler Objekt och instansvariabler
Klasser och klassvariabler Metodanrop, parametrar och lokala variabler Objekt/Instanser och instansvariabler FemC main(...) -objekt String[] args? islandshäst dalahäst mankhöjd 120 -objekt mankhöjd 15 Namn: Personnr: 9 5c) Betrakta följade program. FemC // c) FemC // mankhöjd; ( mankhöjd) = mankhöjd; this.mankhöjd void skrivmankhöjd() är " + mankhöjd); System.out.prln("Mankhöjden // Skriv de satser som ska in vid c) i main för att det ska seutsomovan i minnet.