DD1342 Programkonstruktion för F1, 2007-2008 Lappskrivning 2 Tisdag 5/2 2008 kl 14.15 15.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga hjälpmedel är tillåtna. 10-13 rätt av 16 möjliga ger säkert godkänt och 2poäng. 14-16 rätt ger säkert 3poäng Skriv alla svar på svarsblanketten! 1. Vilket är namnet på den metod där exekveringen av ett fristående program i Java alltid börjar? A) public B) static C) void D) main 2. Några variabler av typ String definieras så här: String s1 = "Äppel"; String s2 = "paj"; String s3 = "Äppelpaj"; String s4 = s1+s2; Vilket av uttrycken nedan har värdet false givet definitionerna ovan? (De uttryck som inte är false, är alla true.) A) s3 == s4 B) s4.equals(s3) C) s3.equals(s4) D) s1.length() > s2.length() 3. Antag att heltalsvektorn a (typen int[]) är deklarerad och initierad, dvs den finns och har värden. Vilket påstående är sant efter programavsnittet har exekverats? boolean hemlig = false; for (int i=0; i<a.length; i++) { if (a[i] == 0) { hemlig = true; // vilket värde har hemlig här? A) hemlig har värdet false oavsett hur vektorn a ser ut B) hemlig har värdet true oavsett hur vektorn a ser ut C) Om det finns minst en nolla i vektorn a så har hemlig värdet true, omvektorn är utan nollor så är hemlig false. D) Endast om alla värden i vektorn är nollor så har hemlig värdet true, vektorn int[] a = {0,0,1 skulle ge hemlig värdet false. 1
4. Vad blir utskriften från följande satser? String[] kryddor = {"Basilika", "Timjan", "Oregano", "Rosmarin"; String[] örter = {"Persilja", "Salvia", "Mejram"; kryddor[1] = örter[1]; örter = kryddor; System.out.println(kryddor[1] + " " + örter[2]); A) Salvia Mejram B) Timjan Oregano C) Salvia Oregano D) Timjan Mejram Klasserna Beräkningar och Presentation finns i samma filkatalog och definieras såhär: class Beräkningar { int minv = 25; // fler variabler och metoder class Presentation { Beräkningar minab; Presentation (Beräkningar b) { // *** här fattas något -- Uppgift 5 void skriv () { //??? vad får stå här? -- Uppgift 6 Varje objekt av Presentation ska känna till ett objekt av Beräkningar. Presentation - objekt ska kunna hämta data ur sitt objekt av Beräkningar. 5. I konstruktormetoden till Presentation ser man till att Presentation- objektet får reda på vilket Beräkningar-objekt som ska användas samt sparar denna information. Hur ska konstruktorn kompletteras (vid ***) för att det ska bli rätt? A) minab = b; B) Beräkningar minab; C) Beräkningar b = minab; D) b = minab; 6. Presentation-objektet ska kunna skriva ut data som hämtas från Beräkningarobjektet. Detta symboliseras här av metoden skriv(). Vilken av följande utskriftssatser är riktig i metoden skriv, alltså vid????viförutsätter att att konstruktorn är korrekt enligt uppgift 5 och att inga ytterligare deklarationer av instansvariabler eller lokala variabler i instansmetoder görs i Presentation. A) System.out.println(minv); B) System.out.println(minaB.minv); C) System.out.println(Beräkningar.minv); D) System.out.println(minv.minaB); 2
Klassen Punkt definieras så här: class Punkt { static int z = 10; int x = 1; int y = 1; Punkt () { z = z - 1; public void sättkoord (int ix, int iy) { x = ix; y = iy; static void skrivz () { System.out.println("z = " + z); 7. Hur många konstruktorer, instansmetoder respektive klassmetoder har klassen Punkt? A) 2 konstruktorer, inga instansmetoder, 1 klassmetod B) 1 konstruktor, 2 instansmetoder, inga klassmetoder C) 1 konstruktor, 1 instansmetod, 1 klassmetod D) 3 instansmetoder 8. En main-metod i en annan klass på samma filkatalog som Punkt innehåller följande satser (och inga andra satser). Punkt p1 = new Punkt(); Punkt p2 = new Punkt(); p2.sättkoord(12,5); Punkt p3 = new Punkt(); Punkt.skrivZ(); Vad kommer att skrivas ut? A) z = 8 B) z = 10 C) z = 7 D) z = 9 9. Endast en av satserna nedan är riktig om klassen Punkt definieras enligt ovan. Vilken då? Satserna finns i en metod i en klass på samma filkatalog som klassen Punkt. A) Punkt vertex = new Punkt(487,1729); B) int koordinat = Punkt.x; C) int koordinat = Punkt.y; D) int koordinat = Punkt.z; 3
10. Följande programrader definierar en matris och ger den värden. int n = 5; int[][] m = new int[n][n]; // alla matriselement sätts till 0 från början for (int i=0; i<n; i++) { m[i][0] = 1; m[0][i] = 1; m[i][n-1] = 1; m[n-1][i] = 1; Hur ser den skapade matrisen ut efter for-satsen är utförd? 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 A B C D 11. Om följande två satser står i en main-metod, vad skrivs ut då man kör programmet? int[][] m = {{5,11,1,{2,3,4,{7,1,2; System.out.println(m[ m[0][2] ] [ m[2][2] ]); A) 2 B) 4 C) 5 D) 7 12. Klassen T finns och kan användas som superklass. Klasserna Z, Y och X definieras så här: class Z extends T { class Y extends Z { class X extends T { class W extends Z { Vilken av följande satser är inte tillåten givet klasserna ovan? A) Object r1 = new Y(); B) Y r4 = new X(); C) Z r2 = new Z(); D) T r3 = new W(); 4
13. Endast ett av följande påståenden om konstruktormetoder i Java är sant. Vilket? A) Konstruktormetod är detsamma som klassmetod. B) En klass får ha flera konstruktormetoder men konstruktormetoderna måste då ha olika parameterlistor. C) Exekvering av ett fristående program startar alltid i klassens konstruktormetod. D) Konstruktormetod är detsamma som instansmetod. 14. När ett lyssnarobjektska användas för att ta hand om händelsen att användaren ändrar inställning på en JScrollBar används metoden addadjustmentlistener för att koppla ihop lyssnarobjektet med det objekt där händelsen väntas, t.ex. så här: xxx.addadjustmentlistener(yyy); Vilket av alternativen nedan med påståenden om xxx och yyy är sant? A) yyy refererar till lyssnarobjektet som skall innehålla metoden adjustmentvaluechanged. xxx refererar till det objekt där händelse väntas. B) yyy refererar till lyssnarobjektet som skall innehålla metoden AdjustmentEvent. xxx refererar till det objekt där händelse väntas. C) xxxrefererartill lyssnarobjektetsomskallinnehålla metoden adjustmentvaluechanged. yyy refererar till det objekt där händelse väntas. D) xxx refererar till lyssnarobjektet som skall innehålla metoden AdjustmentEvent. yyy refererar till det objekt där händelse väntas. 5
15. Studera följande lilla program: class Uppgift15 { static void fixa (int p) { // En hemlig men korrekt metodkropp public static void main (String[] x) { int n = 5; fixa(n*n); System.out.println("n= " + n); //*** Vad skrivs ut av satsen som kommenteras med ***, dvs vilket värde har variabeln n direkt efter anropet av metoden fixa? A) n = 0 B) n = 5 C) n = 25 D) Det går inte att svara påfrågan utan att se hela definitionen av metoden fixa. 16. Studera följande två små (ofullständiga) klassdefinitioner som är tänkta att användas i ett spelprogram. Båda klasserna har parameterlösa konstruktorer. class Djur { void sätthastighet(double v) { // m/s // satser som sätter djurets hastighet class Fladdermus extends Djur { // en massa intressanta definitioner Ienannanklassän de ovan skapar man objekt av Fladdermus med Fladdermus fm = new Fladdermus(); Hur skriver man för att direkt därefter ge detta Fladdermus-objekt hastigheten 4.3 m/s? A) Fladdermus.sättHastighet(4.3); B) Djur.sättHastighet(fm, 4.3); C) sätthastighet(fm, 4.3); D) fm.sätthastighet(4.3); 6