Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR, TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2, 2001-04-28, kl 09.00-13.00 1. Grunderna i Java (10p) a) Vilka av följande påståenden är sanna? (3p) I. Java är ett objektorienterat språk. SANT II. Namn på variabler och objekt får innehålla bokstäverna å, ä och ö. SANT III. I Java kan man använda variabler, objekt, referenser och pekare. FALSKT IV. En medlemsvariabel som är deklarerad som "static" har ett värde som kan ändras. SANT V. I en klassmetod så kan instansvariabler förekomma. FALSKT class Rektangel private double höjden; private double längden; Rektangel(double hojd, double langd) höjden = hojd; längden = langd; double yta() return höjden * längden; class Test public static void main(string[] arg) Rektangel enrektangel = new Rektangel(4, 5); System.out.println("Rektangelns yta: " + enrektangel.yta());
d) Privata medlemsvariabler och metoder är endast synliga i den egna klassen Publika medlemsvariabler och metoders synlighet är inte begränsad Medlemsvariabler och metoders vars åtkomlighet inte är deklarerad är av typen paketåtkomst. Det innebär att synligheten är begränsad till det egna paketet. 2. Java: Fält och Strängar. Arv och gränssnitt. (7p) a. Program 2 kompilerar utan fel. Package-satsen ska vara först i programmet. b. Påståendena 1, 3, 5, 7 är sanna. c. Ett gränssnitt liknar en klass men har bara abstrakta metoder (endast deklarationer utan implementation) Data i klassen kan bara vara konstanter ej variabler. 3. Java: Användargränssnitt. Händelsehantering. Grafik och Applets. (7p) a. int result = 3 * Integer.parseInt(tf_num.getText()); tf_num.settext(string.valueof(result)); b. Adapterklasser ger en default implementering av alla lyssnarmetoder i ett lyssnargränssnitt så att man endast behöver implementera den lyssnarmetod som man själv använder i den aktuella tillämpningen. c. Metoderna 1 och 2är definierade i klassen Graphics 4. Dataströmmar (10p) import java.io.*; public class Summerare public static void main(string[] arg) throws IOException BufferedReader in = new BufferedReader(new FileReader("tal.txt")); String rad = in.readline(); double tal1 = Double.parseDouble(rad); rad = in.readline(); double tal2 = Double.parseDouble(rad); in.close(); double summa = tal1 + tal2; DataOutputStream ut = new DataOutputStream( new FileOutputStream("summa.bin")); ut.writedouble(summa); ut.close(); 2
5. SQL (10p) a) Typ 1, "JDBC-ODBC" drivrutin, översätter JDBC-anrop till motsvarande ODBC-anrop. ODBCdrivrutinen anropar därefter databasens server Typ 4, "Native-protocol/all-Java driver" kommunicerar direkt med databasservern public void listaböcker() throws Exception Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); anslutning = DriverManager.getConnection("jdbc:odbc:media","",""); Statement dbstmt = anslutning.createstatement(); ResultSet resultat = dbstmt.executequery("select * FROM books"); while (resultat.next()) System.out.println("---------------------------"); System.out.println(resultat.getString("author")); System.out.println(resultat.getString("title")); dbstmt.close(); anslutning.close(); public void registrerabok(string titel, String författare) throws Exception Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); anslutning = DriverManager.getConnection("jdbc:odbc:media","",""); String sql = "INSERT INTO books VALUES ('" + författare + "', '" + titel +"')"; Statement dbstmt = anslutning.createstatement(); dbstmt.executeupdate(sql); dbstmt.close(); anslutning.close(); 3
6. Klient - server (10p) a) Den ström av data som ska överföras via ett TCP/IP-nätverk delas upp av nätverket i paket. TCP/IP-nätverken består av ett antal lager. De lager som förekommer är, applikationslager, transportlager, nätverkslager och datalänklager. Varje lager har sin speciella uppgift. Lagrets beteende bestäms av dess protokoll. Transportlagrets protokoll TCP, delar upp strömmen av data i paket, och håller ordning på dessa paket när data tas i mot. Transportlagrets protokoll IP, beskriver hur adresseringen av data ska hanteras. Varje lager lägger till sin information till de paket av data som ska sändas via nätverket och på motsvarande sätt så avlägsnas motsvarande information av respektive lager då data läses från nätverket. <html> <head> <title>från Fahrenheit till Celsius</title> </head> <body> <jsp:usebean id="omvandlare" scope="request" class="fysik.temp"/> <jsp:setproperty name="omvandlare" property = "*" /> Temperatur i Celsius: <%=omvandlare.incelsius()%> </body> </html> package fysik; public class Temp private double fahrenheit; public Temp() public void setfahrenheit(double grader)fahrenheit = grader; public double incelsius()return 5.0/9.0 * (fahrenheit-32.0); 4
7. Objektorienterat (10p) public class Register private Fordon[] fordonsref; private int antal = 0; public Register(int storlek)fordonsref = new Fordon[storlek]; public void add(fordon ref)fordonsref[antal++] = ref; public void skrivinfo() for (int i=0; i<antal; i++) System.out.println(fordonsRef[i].info()); public abstract class Fordon private String regnr; public Fordon(String nr)regnr = nr; public String getnr()return regnr; public abstract String info(); public class Bil extends Fordon private String ägare; public Bil(String nr, String namn) super(nr); ägare = namn; public String info() return "Bil, regnr: " + getnr() + ", ägare: " + ägare; public class Traktor extends Fordon private int driftstid; public Traktor(String nr, int tid) super(nr); driftstid = tid; public String info() return "Traktor, regnr: "+getnr()+", driftstid: "+driftstid+" timmar"; 5