Umeå Universitet Datavetenskap Marie Nordström Thomas Johansson Jürgen Börstler 030124 TENTAMEN I DATAVETENSKAP PROGRAMMERINGSMETODIK OCH PROGRAMMERING I JAVA, 5P. (TDBA63) Datum : 030124 Tid : 9-15 Hjälpmedel : Inga Antal Uppgifter : 6 Totalpoäng : 40 (halva poängtalet krävs normalt för godkänt) Kryssa för de uppgifter du lämnar in Lösningarna skall vara snyggt och prydligt nedskrivna. Tankegången skall vara lätt att följa. Alla antaganden som inte är uppenbara skall redovisas. Tips! Försök på alla uppgifter! Om du inte kan lösa en av flera deluppgifter, gör lämpliga antaganden och gå vidare till efterföljande deluppgifter. Uppgifter kan vara felformulerade, fråga om du är osäker eller tycker att något verkar konstigt. Det är ditt ansvar att övertyga om att du besitter den kunskap som efterfrågas. Det är viktigt att du löser den givna uppgiften! Lycka till! 1(5)
Uppgift 1 (3 poäng) Evaluera följande boolska uttryck. För varje uttryck utgå från att x=10, y=20, z=30 och ok=false. Visa hur du får fram det aktuella värdet. 1. x < 20 x > 20 2. x > y && y > z 3. ok && x < y && y < z 4.!(!ok && x < y) y < z 5. z - y == x && Math.abs(y - z) == x 6.!( x < y + z)!(x + 10 <= 20) Uppgift 2 (6 poäng) OBS! I denna designuppgift ska du inte implementera koden. Du ska inte heller designa användargränssnittet på systemet. Du ska design ett system som underlättar arbetet på ett fastighetsmäklarbyrå. Systemet ska underlätta hanteringen av kundregistret och de olika typer av fastigheter (t ex villor, tomter, bostadsrätter, industrifastigheter mm) som är till salu. För varje fastighet ska lämpliga uppgifter sparas som t ex läge, pris, taxeringsvärde, boyta, tomtstorlek, eventuella hyresintäkter mm. Dessutom ska för varje fastighet finnas en lista med spekulanterna. Spekulanterna ska kunna boka visningar med en mäklare för en fastighet. Uppgifterna för visningarna ska också sparas. Varje kund ska kunna lägga in en sökprofil, så att kunden kan meddelas när lämpliga fastigheter är till salu. Uppgift 3 (1+5 = 6 poäng) a) Program med grafiska användargränssnitt (GUI) sägs vara händelsebaserade. Vad menas med det? (1 p) b) Vilka programdelar behövs för att sätta ihop ett GUI i Java? (5 p) 2(5)
Uppgift 4 (8 poäng) a) Vad kännetecknar en abstrakt klass? b) Vad kan man ha en abstrakt klass till? c) Förklara skillnaderna och likheterna mellan en abstrakt klass och ett interface. d) Man brukar säga att ett objekt kännetecknas av tre saker, vilka? e) Vad är det för skillnad mellan ett objekt och en klass? f) Vad betyder syntax resp semantik? g) Det finns tre relationer mellan klasser, vilka? h) Nämn en enkel regel för varje relation som man kan använda för att avgöra om just denna relation passar. Uppgift 5 (2+2+3 = 7 poäng) Antag att du har en abstrakt basklass Figur med en abstrakt metod double getarea(). a) Skriv kod för två klasser Kvadrat och Cirkel som båda ärver från Figur, och som omdefinerar getarea på lämpligt sätt. Skriv lämpliga konstruktorer som initierar de attribut som behövs. b) Skriv också en metod summaarea som tar ett fält med Figurer som parameter och som returnerar den sammanlagda arean för dem. c) Skriv till slut en metod areatest() som skapar ett fält med tre Cirklar och två Kvadrater (valfria parametrar till konstruktorerna) och som anropar summaarea med detta fält. 3(5)
Uppgift 6 (10 poäng) Följande klasser är stommen till en generell lista där värdena i listan kan vara godtyckliga objekt. public class ListNode private Object myvalue; private ListNode next; public ListNode(Object o) myvalue = o; next = null; }// ListNode-constructor public ListNode(Object o, ListNode nlist) myvalue = o; next = nlist; }// ListNode-constructor public ListNode getnext() return next; }// getnext public void setnext(listnode newnext) next = newnext; }// setnext public Object getvalue() return myvalue; }// getvalue }// class ListNode public class List private ListNode head; // First node private ListNode tail; // Last node public List() head = null; tail = null; }// List-constructor //här följer ett antal metoder }// class List a) Hur skapar man en lista? Visa gärna med ett exempel hur det ser ut i kod (1p.) 4(5)
För att göra List till en användbar generell liststruktur behöver man en uppsättning metoder. Implementera följande metoder. Observera att du inte får modifiera den givna koden. b) first() returnerar det första värdet i listan. (1p.) c) last() returnerar det sista värdet i listan. (1p.) d) isempty() kontrollerar om listan är tom eller ej. (1p.) e) getlength() returnerar antalet element i listan. (2p.) f) appendel(object el) lägger till ett värde sist i listan. (2p.) g) public Object[] toarray() som går igenom listan och returnerar ett fält av Object med motsvarande innehåll. (2p.) 5(5)