UMEÅ UNIVERSITET Datavetenskap 001209 TENTAMEN PROGRAMMERINGSMETODIK JAVA, 4P Datum Tid Hjälpmedel Antal uppgifter Totalpoäng • • • • : : : : : 001209 9 - 15 Inga 8 40 (halva poängtalet krävs normalt för godkänt) Börja varje uppgift på nytt papper. Skriv ditt namn och uppgiftens nummer på varje papper. Skriv bara på ena sidan av papperet. Sortera dina papper efter uppgiftsnummer. • 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. • Javakod krävs där implementation uttryckligen anges. Tips! • Försök på alla uppgifter! Observera att uppgifterna inte nödvändigtvis är ordnade efter svårighetsgrad. • Uppgifter kan vara felformulerade, fråga om du är osäker eller tycker att något verkar konstigt. • Redovisa dina resonemang så är det lättare att bortse från skrivfel. • Om du inte kommer ihåg den exakta syntaxen, så gör ett antagande och redovisa detta. • Det är viktigt att du löser den givna uppgiften! Lycka till! UMEÅ UNIVERSITET 901 87 UMEÅ Tel.: 070-2378695 e-mail: [email protected] TENTAMEN I PROGRAMMERINGSMETODIK JAVA 001209 Uppgift 1(5 poäng) Hitta de fel som finns i nedanstående klass. Beskriv för varje fel vad som är fel samt ge ett förslag på vad man skulle kunna göra för att åtgärda det. Radnummren är bara till för att ni skall ha något att hänvisa till och räknas ej som ett fel. Observera också att antal poäng inte har något (direkt iallafall) med antal fel att göra. 1. public class mångaFel extends Object 2. { 3. final int enIdentifierare=0; 4. int hej=1; 5. void enMetod() 6. { 7. hej=2; 8. } 9. 10. int enMetod() 11. { 12. private int enLokalVariabel=1; 13. enIdentifierare++; 14. return enLokalVariabel/2; 15. } 16. 17. public Object enAnnanMetod(int värden[]) throw IOException 18. { 19. float hej=1.0; 20. if (hej/2==0.5) 21. throws(new IOException("Ooops")); 22. return värden; 23. } 24. 25. public void enTredjeMetod(int värden[]) 26. { 27. int enLokalVariabel =0; 28. for (int i=0;i<värden.length;i++) 29. enLokalVariabel +=värden[i]; 30. return enLokalVariabel; 31. } 32. } Uppgift 2(4 poäng) Skriv en metod boolean[] isPrim(int[] list) som kontrollerar om talen i list är primtal (endast delbara med sig själv och 1) om så är fallet skall motsvarande position i det fält som returneras sättas till true; annars false. Uppgift 3 (2+2=4 poäng) a) Java-program skall gå att köra på olika datorer och under olika operativsystem utan att behöva kompileras om. Hur åstadkoms detta ? 2(4) TENTAMEN I PROGRAMMERINGSMETODIK JAVA 001209 b) Java har ej multipelt arv. Hur har man valt att lösa detta istället i Java. Uppgift 4(3 poäng) Vad är en applet och en applikation? Ange skillnader och likheter. Uppgift 5 (3 poäng) Ge exempel på minst två stycken olika Layout managers och förklara hur de placerar ut komponenterna. Uppgift 6 (6 poäng) Förklara följande begrepp: a) Arv b) Interface c) Klass d) Undantag (Exception) e) Abstrakt klass f) Paket (I Java) Uppgift 7(4 poäng) Vad skrivs ut då man kör klassen Child nedan? Förklara också varför just detta skrivs ut. public class Parent { private String attrib; public Parent(String arg) { attrib=arg; } void printMessage() { System.out.println("Den här tentan är för lätt för " +attrib); } } public class Child extends Parent { public Child(String arg) { super(arg); } 3(4) TENTAMEN I PROGRAMMERINGSMETODIK JAVA 001209 public static void main(String args[]) { Parent hej=new Child("hej"); Parent dej=new Parent("dej"); hej.printMessage(); dej.printMessage(); } void printMessage() { super.printMessage(); System.out.println("! Hur går det"); } } Uppgift 8 (12 poäng) I denna uppgift så ska du implementera en klass som skall reprecentera en börs. Denna skall kunna innehålla pengar, så vi måste också implementera klasser för att hantera dessa. Krav på börsen: Skall kunna innehålla max 20 st sedlar och max 20 st mynt. Man skall kunna lägga till och ta bort pengar ur den. Krav på pengarna: Det skall finnas fyra stycken valörer 100,20,5,1kr. 100 och 20 kronors pengarna skall vara sedlar och 5 och 1 kronors pengarna skall vara mynt. Fundera ut en lämplig klasshierarki för att representera pengarna och börsen (vilka klasser behövs och vilka metoder kan tänkas behövas i dessa). Implementera sedan din lösning. För full poäng så krävs att ni har gjort en vettig klassuppdelning utifrån de principer som vi gått igenom på kursen. Samt att ni konstruerat era klasser (metoder osv.) på ett sådant sätt så att de blir lätta att använda (om man skulle vilja använda denna virtuella börs med tillhörande virtuella metoder till något). Ni skall också skriva ett litet testprogram som skapar en börs och lite pengar och använder metoderna som ni skrivit. Dokumentera er lösning noggrant. 4(4)