Umeå Universitet Datavetenskap Marie Nordström 070502 DELPROV 1 I DATAVETENSKAP Uppgift (poäng) 1 () 2 () 3 () 4 () 5 () 6 () Summa (xx) Inlämnad Poäng Kurs : Datum : 070502 Namn (texta) : Personnummer : Objektorienterad programmering i Java för Ingenjörer, 5p. (TDBA62) Epost : @cs.umu.se Namnteckning UMEÅ UNIVERSITET 901 87 UMEÅ Tel.: 090-786 77 08 Fax: 090-786 61 26 e-mail: marie@cs.umu.se
DELPROV 1 DATAVETENSKAP OBJEKTORIENTERAD PROGRAMMERING I JAVA FÖR INGENJÖRER, 5P. (TDBA62) Datum : 070502 Tid : 9-12 Hjälpmedel Antal Uppgifter Poäng : Inga : xx : xx (delprovet får ej underskrida 30% av poängen för provet, halva poängtalet (DP1+DP2) 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! 2(11)
Uppgift 1 (6 poäng) I ett java-program kan följande metodhuvud förekomma: public static void main(string[] args) Förklara kortfattat de ingående storheterna: public : static : void : main : String[] : args : Uppgift 2 (2+1 = 3 poäng) a) Det finns två kategorier av datatyper i Java. Namnge dessa och ge två exempel i vardera kategorin. b) Vad menas med casting? 3(11)
Uppgift 3 (5 poäng) Antag att du har en metod max som returnerar det största värdet i en array av heltal. Skriv kod för denna, arrayen ges som parameter. Överlagra sedan denna metod så att den även kan användas för en array av double-värden. Vad menas med överlagring i det här sammanhamget och hur fungerar det? 4(11)
Uppgift 4 (5 poäng) Utgå från en array av flyttal: double[] res = new double[ ]; som ska innehålla resultaten från t.ex en skolidrottstävling i kulstötning. Hur resultaten kommer in i arrayen struntar vi i just nu! Anta att de finns där. För att skriva ut resultat behöver vi sortera dessa värden. Men om resultatet är kopplat till information om den tävlande, så måste vi undvika att flytta om resultaten. T.ex. kanske vi har namnen på de tävlande i en annan array: String[] namn = new String[ ]; Därför sorterar vi resultaten indirekt med hjälp av en indexvektor. Utgå från resultaten double[] res = {12.4, 11.3, 12.4, 12.0, 11.9, 5.0, 11.2, 11.1}; Sätt upp en tabell och spåra vad som händer när följande kod körs. Det ska klart framgå vad som händer, vad som testas, utfallet av testerna och vilka värden variablerna antar under sorteringen. Du ska även visa innehållet i arrayerna eftersom. int[] index = new int[res.length]; for(int i=0; i < res.length; i++) { index[i] = i; } for (int i = 0; i < res.length-1; i++) for (int j = i+1; j < res.length; j++) { if (res[index[i]] < res[index[j]]) { int temp = index[i]; index[i] = index[j]; index[j] = temp; } } Svara på nästa sida! 5(11)
Svara här! 6(11)
Uppgift 5 (6 poäng) I biblioteksexemplet modellerar vi böcker., där varje bok behöver känna till ett återlämningsdatum. Bok och datum modelleras så här: Javadoc-beskrivningen av Book: Javadoc-beskrivningen av Date på nästa sida. 7(11)
Utgå från klasserna ovan och avgör om följande metodanrop är syntaktiskt korrekta eller ej. Om det är ok, ange vilka värden som skickas/returneras, om inte motivera varför det inte fungerar och ange hur det borde se ut för att fungera. Anrop Ok Fel // i klassen Book s lendbook-metod Date td = new Date.today(); duedate = td.add(periodoftime); Motivering/värden : Anrop Ok Fel // Var som helst Date td = new Date(Date.today()); Motivering/värden: Uppgiften fortsätter på nästa sida! 8(11)
Anrop Ok Fel //klassen Date s add-metod public Date add(int numofdays) { Date newd = this; newd = newd + numofdays; return newd; }//add Motivering/värden : Anrop Ok Fel // i klassen Book s islate-metod return Date.today().passed(dueDate); Motivering/värden: 9(11)
Uppgift 6 (5 poäng) En av dina kompisar är händig och tillverkar smycken, magneter och andra prydnadsföremål av cernitlera. För att finansiera denna hobby vill din kompis starta ett litet postorderföretag. Eftersom du jobbar med design av programvara erbjuder du dig att hjälpa till med ett system för att administrera kunder, beställningar och artiklar. Postorderföretaget DenGladaGrisen ska sälja örhängen, halsband, broscher, kylskåpsmagneter och ljusmanschetter. Varje artikel har ett unikt artikelnummer och ett pris. Halsband kan beställas i valfri längd och kylskåpsmagneter i tre olika storlekar: 2 cm, 4 cm och 7 cm. Ljusmanschetterna kan beställas i valfri färg. Du ska alltså föreslå en design till detta system (inte implementera). OBS! Du ska inte utreda något som har med användargränssnittet att göra (GUI designen). Lämna in en UML-liknande beskrivning av designen som innehåller alla klasser och som visar hur de hänger ihop. Oavsett vilken notation du väljer (UML eller egen) måste du förklara vad ev. pilar och streck representerar. För varje klass ska viktiga attribut, metoder och parametrar finnas med. Svara här och på nästa sida! 10(11)
11(11)