Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-04-28, kl 09.00-13.00 Hjälpmedel: Endast bifogat kompendium Återlämningstillfälle: fredag den 18/5 kl 12.00 i S200. Max: 64 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 sanna? (3p) I. Java är ett objektorienterat språk. II. Namn på variabler och objekt får innehålla bokstäverna å, ä och ö. III. I Java kan man använda variabler, objekt, referenser och pekare. IV. En medlemsvariabel som är deklarerad som "static" har ett värde som kan ändras. V. I en klassmetod så kan instansvariabler förekomma. b) Följande klass är ofullständig (3p) class Rektangel Rektangel(double hojd, double langd) double yta() Med hjälp av klassen så ska det vara möjligt att skapa ett objekt som beskriver en rektangel med höjd och längd. Metoden "yta" ska beräkna och returnera rektangelns yta med hjälp objektets höjd och längd. Skriv om klassen Rektangel så att den fungerar. c) Skriv ett program som skapar ett objekt av den klass Rektangel som förekommer i uppg b. (2p) Objektets höjd ska vara 4 och dess längd ska vara 5. Programmet ska skriva ut rektangelns yta. Ytan ska beräknas med hjälp av objektet. Förutsätt att klassen Rektangel är riktigt skriven, och förekommer i samma katalog som programmet. d) Förklara skillnaden mellan privat, publik och paket åtkomst. (2p)
2. Java: Fält och Strängar. Arv och gränssnitt. (7p) a) Vilket av följande två program kompilerar utan fel? (1p) 1. import java.awt.*; package MyPackage; class Myclass 2. package MyPackage; import java.awt.*; class MyClass b) Vilka av följande påståenden är sanna? (4p) 1. Alla klasser i Java utom java.lang.object är utvidgningar av klassen java.lang.object. 2. Ett fält (array) av strängar är själv en sträng. 3. Ett fält (array) av objekt är själv ett objekt. 4. Längden hos ett fält (array) kan ändras under exekveringen av ett program. 5. Det sista elementet i ett fält (array) av längden n har index n-1. 6. Alla klasser som innehåller en metod som deklareras som final måste själva deklareras som final. 7. Alla klasser som innehåller en metod som deklareras som abstract måste själva deklareras som abstract. 8. Alla klasser som innehåller en metod som deklareras som private måste själva deklareras som private. c) Ange de viktiska skillnaderna mellan en klass (class) och ett gränssnitt (interface) i Java? (2p) 2
3. Java: Användargränssnitt, Händelsehantering, Grafik och Applets (7p) a. Antag ett en applet innehåller ett textfält kallat tf_num som innehåller en text som representerar ett heltal. Skriv ett kodsegment som ändrar innehållet i textfältet så att det representerar ett heltal som är tre gånger större än det ursprungliga talet. (3p) Ex: om textfältet visar värdet 16 ska det efter ditt kodsegment visa vädet 48. Tips: Metoden parseint() i klassen Integer omvandlar en sträng till ett heltal. Metoden valueof() i klassen String omvandlar ett heltal till en sträng. b. Varför har man infört adapters, t.ex. MouseAdapter, som stöd vid implementering av lyssnarmetoder i Javas händelsehantering? (2p) c. Vilka av följande metoder är definierade i klassen Graphics? (2p) 1. drawline(int, int, int, int) 2. drawstring(string, int, int) 3. add(component) 4. setvisible(boolean) 5. setlayout(object) 4. Dataströmmar (10p) Skriv ett program läser de två första talen som förekommer i textfilen "tal.txt" och skriver ut summan av de båda talen till en binär fil med namnet "summa.bin". Förutsätt att textfilen förekommer i samma katalog som programmet. På varje rad i textfilen "tal.txt" förekommer endast ett tal, se följande utskrift C:\utveckling> type tal.txt -23.45 45.978 0.2 45.7-19.987 C:\utveckling> 5. SQL (10p) a) Förklara skillnaden mellan en typ 1 "JDBC-ODBC" drivrutin och en typ 4 "Native-protocol/all-Java" drivrutin (3p) Fråga b och c. I databasen "media" förekommer en tabell "books". Tabellen består av poster med två fält. Det första fältets namn är "author". Det andra fältets namn är "title". Båda fälten är av typen "VARCHAR". Här följer en klass med tre metoder. 3
import java.sql.*; public class Uppg5 private Connection anslutning; public void registrerabok(string titel, String författare) throws Exception Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); anslutning = DriverManager.getConnection("jdbc:odbc:media","",""); // Här saknas kod anslutning.close(); public void listaböcker() throws Exception Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); anslutning = DriverManager.getConnection("jdbc:odbc:media","",""); //Här saknas kod anslutning.close(); public static void main(string[] arg) throws Exception Uppg5 db = new Uppg5(); db.registrerabok("deitel & Deitel", "Java How to program"); db.listaböcker(); Metoden "registrera bok" ska lägga in en författare och boktitel i tabellen. Metoden "listaböcker" ska lista upp tabellens samtliga författare och böcker. b) Skriv den kod som saknas i metoden "listaböcker". (4p) Författare och böcker ska listas på bildskärmen enligt följande exempel, Y. Daniel Liang Introduction to Java programming Hans-Erik Eriksson Programutveckling med Java Jan Skansholm Java direkt Här följer ett exempel på en SQL-sats som väljer alla posters samtliga fält. SELECT * FROM books c) Skriv den kod som saknas i metoden "registrerabok". (3p) Här följer ett exempel på en SQL-sats som lägger in en ny post med författare och boktitel INSERT INTO books VALUES ('Herbert Schildt', 'Born to Code in C') 4
6. Klient - server (10p) a) Förklara hur ett TCP/IP-nätverk transporterar data mellan en klient och server (5p) Uppgift b och c. Uppgift c bygger på uppgift b. Med följande html-sida ska en användare kunna omvandla en temperatur i Fahrenheit till motsvarande värde i Celsius. <html> <head> <title>från Fahrenheit till Celsius</title> </head> <body> <form action="temperatur.jsp" method="post"> Temperatur i Fahrenheit: <input type="text" name="fahrenheit"> <input type="submit" value="omvandla till Celsius"> </form> </body> </html> b) Skriv den JSP-sida som ovanstående html-sida anropar. JSP-sidan ska använda en Java-böna för att omvandla Fahrenheit till Celsius-grader. JSP-sidan ska förmedla resultatet till användaren i form av en ny sida. I den här uppgiften behöver du inte skriva Java-bönan. (3p) c) Skriv den Java-böna som JSP-sidan i uppgift b ska använda. Sambandet mellan Fahrenheit och Celsius är följande, celsius = (5/9)*(fahrenheit-32) (2p) 7. Objektorienterat (10p) Här följer en klass med en main-metod i ett objektorienterat program. public class Uppg7 public static void main(string[] arg) Register registret = new Register(10); //Register med 10 platser registret.add(new Bil("GHJ768", "Kalle Johansson")); registret.add(new Traktor("CDR432", 467)); registret.skrivinfo(); registret = new Register(100); //Register med 100 platser registret.add(new Traktor("CFG856", 1023)); registret.add(new Bil("ZXW576", "Fredrik Svensson")); registret.add(new Bil("HJK778", "Lisa Asp")); registret.skrivinfo(); Följande utskrift ska genereras när programmet körs. Bil, regnr: GHJ768, agare: Kalle Johansson Traktor, regnr: CDR432, driftstid: 467 timmar Traktor, regnr: CFG856, driftstid: 1023 timmar Bil, regnr: ZXW576, agare: Fredrik Svensson Bil, regnr: HJK778, agare: Lisa Asp Skriv de klasser som saknas för att programmet ska fungera enligt ovanstående beskrivning. 5