TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för Sy 2 2002-03-15, kl 09.00 13.00 Hjälpmedel: Endast bifogat kompendium Max: 66 poäng, för godkänt krävs 50%. Skriv tydliga och kortfattade svar 1. Grunderna i Java, 10p a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p) i. Java är ett objektorienterat programmeringsspråk ii. En variabel kan tilldelas ett nytt värde iii. En variabel som är deklarerad i en for-loop kan användas i satser utanför for-loopen. iv. Det är möjligt att i samma klass deklarera flera metoder vars namn och parameterlista är lika v. En defaultkonstruktor saknar parametrar vi. En klassmetod kan använda klassens instansvariabler vii. En lokal variabels namn kan vara lika som någon av instansvariablernas namn. viii. En konstruktor returnerar ett värde ix. En konstant måste deklareras med det reserverade ordet static. x. Ett namn på en variabel kan börja med en bokstav, siffra eller tecknet _ b. Här följer en skiss till ett program. (2p) minst(tala, talb) returnera det minsta värdet av tala och talb main() Undersök med hjälp av metoden minst vilket av talen 2.5 och 0.1 som är minst. Skriv ut det minsta talets värde till bildskärmen. Skriv ett fungerande program i java-kod utifrån ovanstående skiss.
c. Återge utskriften från följande programsekvens (2p) int summa = 0, i = 1; while (i < 10) if (i % 2 == 0) summa += i; i++; System.out.println(summa); d. Betrakta följande kod (2p) class Trams int x = 3; int y = 5; void skriv() int x = 7; int kvot = x / y; System.out.println("x/y = " + kvot); Återge exakt den utskrift som metoden skriv genererar.
2. Fält och Strängar. Arv och gränssnitt. (9p) a. Klasserna nedan ingår i ett program som administrerar studenter på Campus Borlänge. class UtbProgram private String programnamn; private int antalstudenter; public UtbProgram(String namn, int antalstudenter) // initierar instansvariablerna // kod som inte visas här public int getantalstudenter() // returnerar antalet studenter i detta program return antalstudenter; public String getprogramnamn() // returnerar namnet på detta utbildningsprogram return programnamn; // slut på klassen UtbProgram class CampusBlge private UtbProgram[] program; private int antalutbprogram; public CampusBlge () // initierar instansvariablerna // kod som inte visas här public int totalsumma() // summerar antalet studenter i utbildningsprogramen int summa = 0; UtbProgram temp; for (int i=0; i < antalutbprogram; i++) temp = program[i]; // Uppgift 2 a) return summa; public void skrivutbprogrammedmångastud() // skriver ut namnen på alla utbildningsprogram med minst // 50 studenter // Uppgift 2 b) // andra metoder // slut på klassen CampusBlge Skriv koden som saknas i metoden totalsumma() i klassen CampusBlge. (2p)
b. Skriv koden för metoden skrivutbprogrammedmångastud() i klassen CampusBlge. (3p) c. Sant eller falskt? (4p) I. Följande satser är bara två olika skrivsätt för exakt samma sak: int tal; och Integer tal; II. Nyckelordet extends används för att skapa objekt av en superklass. III. En klass kan samtidigt vara superklass och subklass. IV. En klass som deklarerats som final kan inte vara basklass i en klasshierarki, d.v.s den kan inte ärvas. 3. Användargränssnitt, Händelsehantering, Grafik och Applets (7p) a. (2p) class Uppgift3 extends JFrame Uppgift3() xxx.add(new JButton("Knapp 1")); public static void main(string[]args) Uppgift3 frame = new Uppgift3(); frame.setsize(200, 100); frame.setvisible(true); Vad kan xxx bytas ut mot för att knappen ska visas i exemplet ovan? b. Föreslå hur du med hjälp av olika layout managers kan åstadkomma det utseende som följande fönstrer har. Du behöver inte skriva någon kod, utan endast ange vilka layout managers du använder och hur du använder dem. (2p) c. Vilken klass ärver i stort sett alla komponentklasser i Swing av? Vilken klass ärver denna klass av? (2p) d. Vilken gränssnitt används i Swing för att utföra något när användaren flyttar musen? (1p)
4. Strömmar 10p Skriv ett program som läser in och beräknar summan och medelvärdet av de decimaltal som förekommer i binärfilen tal.bin. Programmet ska därefter skriva ut summan och medelvärdet till en textfil med namnet resultat.txt. I binärfilen tal.bin kommer först ett heltal av typen int vars värde beskriver hur många decimaltal som följer. Därefter förekommer det endast decimaltal av typen double i resten av filen. 5. Trådar 10p Förklara kortfattat följande begrepp a. start() (2p) b. notify() (2p) c. Runnable (2p) d. monitor (2p) e. synchronized (2p) 6. Nätverk 10p a. Förklara kortfattat begreppet tre-skikts arkitektur 2p b. Förklara kortfattat skillnaden mellan en typ 1 JDBC-ODBC drivrutin och en typ 4 native-protocol/all-java drivrutin. 2p c. Är Java Beans och Enterprise Java Beans två olika benämningar på samma sak? Motivera ditt svar. 1p d. Vad är rmic? 1p e. Med hjälp av följande html-sida ska en användare kunna omvandla svenska kronor till euro. (4p) <html> <head> <title>omvandlar svenska kronor till euro</title> </head> <body> <form action="kr_euro.jsp" method="post"> Svenska kronor: <input type="text" name="kronor"> <input type="submit" value="till Euro"> </form> </body> </html> Skriv den JSP-sida som ovanstående html-sida anropar. JSP-sidan ska omvandla kronor till euro och förmedla resultatet i till användaren i form av en ny sida. Använd kursen 9.0725 kr för 1 euro. Samtlig kod ska redovisas.
7. Objektorienterat 10p Följande program saknar ett antal klasser. Skriv koden för dessa klasser. import java.util.*; class Order private Kund beställare; private List beställningslista = new ArrayList(); public Order(Kund enkund) beställare = enkund; public void addpost(vara envara) beställningslista.add(envara); public void visabeställning() System.out.println("\n- ORDER -----------------"); System.out.println(beställare); Iterator post = beställningslista.iterator(); while (post.hasnext()) System.out.println(post.next()); public class Kund private String namn; Kund(String ettnamn) namn = ettnamn; public String tostring() return "Kund: " + namn; public class Test public static void main(string[] arg) Order ordern = new Order(new Kund("Kalle Karlsson")); ordern.addpost(new Kaffe(3)); //3 kg kaffe ordern.addpost(new Kopp(1)); //1 stycken kopp ordern.visabeställning(); ordern = new Order(new Kund("Lisa Svensson")); ordern.addpost(new Kaffe(2)); //2 kg kaffe ordern.addpost(new Kopp(6)); //6 stycken koppar ordern.visabeställning(); //Uppgiften fortsätter på nästa sida
Programmet ska generera följande utskrift. - ORDER ----------------- Kund: Kalle Karlsson Kaffe, 3 kg Kopp, 1 st - ORDER ----------------- Kund: Lisa Svensson Kaffe, 2 kg Kopp, 6 st