DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson Lösningar till TENTAMEN I IXC003 SYSTEMUTVECKLING MED INTERNET/INTRANET, del 1 (5p) för IT3 och INTERNETPROGRAMMERING MED JAVA FÖR SY2 1999-03-17, kl 14.00-18.00 1. Introduktion till Java a) klasser b) this c) signatur, el. metoddeklaration d) instans e) skräpsamlare eller garbage collector f) final g) null h) gränssnitt eller interface, metod, el. medlemsfunktion i) super(xxx), this(xxx) j) dynamisk bindning eller polymorfi 2. Klasser och objekt. Typer och operatorer. Arv och gränssnitt. a. //Person lisa = new Person("Lisa Karlsson", 11111, 10); Det går inte att skapa ett objekt av klassen Person på grund av att klassen är abstrakt. //System.out.println("Namn: " + erik.getnamn()); Metoden getnamn är inte definierad. //System.out.println("Ålder: " + erik.ålder); Instansvariabeln ålder är endast åtkomlig i klassen Person.
b. 30 27 12345 99999 c. public class Arbetare extends Person implements Info //... public String getinfo() return namn + " har telefonnummer " + hemnr + " hem och " + jobbnr + " till arbetet."; 3. Användargränssnitt och händelsehantering a. Klassen Container är en subklass till klassen Component. En Container är en komponent som kan innehålla andra komponenter (inklusive andra containers). komponenter är oftast färdiga komponenter e. ex. knappar b. Component är en abstrakt klass och kan därför inte instantieras som ett objekt c. Andra anropet refererar till själva appletend. Första raden ändras till: Registrering av lyssnare ändras till: ok.addactionlistener(new Lyssnare()); Definition av inre lyssnareklass i klassen Test: private class Lyssnare implements ActionListener public void actionperformed(actionevent event) resultat.settext("ok"); 4. Applets och grafik a. En applet har ingen main-metod eftersom appleten anropas från webbläsaren eller appletviewern där main-metoden eller dess motsvarighet finns. b. repaint-metoden anropar paint via update-metoden c. import java.applet.*; import java.awt.*; import java.awt.event.*; public class Kvadrat extends Applet implements ActionListener private TextField thesize; private Button drawit; private int size; public void init() thesize = new TextField(4); thesize.settext("20"); add(thesize); drawit = new Button("Draw It"); add(drawit); 2
drawit.addactionlistener(this); size = 20; public void paint(graphics g) g.fillrect(30,30,size,size); public void actionperformed(actionevent event) size = Integer.parseInt(theSize.getText()); repaint(); 5. Trådar, exceptionella händelser och JDBC a. MyThread t = new MyThread(); t.start(); b. Nej, endast de metoder som samtidigt kan ha tillgång till samma data behöver vara synkroniserade. c. alt 1 Fånga exceptionhändelsen public void clockdelay() while (clockthread!= null) repaint(); try clockthread.sleep(1000); catch (InterruptedException e) alt. 2 Passa vidare exceptionhändelsen till den anropande metoden public void clockdelay() throws InterruptedException while (clockthread!= null) repaint (); clockthread.sleep(1000); d. - JDBC Net Driver (ren-java driver) - Översätter JDBC anrop till ett DBMS-oberoende nätprotokoll vilket senare översätts till ett specifikt DBMS-protokoll av en server. - JDBC-ODBC brygga (blandning av Java and binärkod, skrivs i C) - JDBC to Native-API (delvis-java driver, skrivs delvis i C) För att kunna laddas ner över Internet måste drivern vara skriven helt i Java 3
Kursen Internetprogrammering med Java: 6. Skrivning och läsning till fil (10p) a) public class Skrivare public static void main(string[] arg) throws IOException BufferedReader tangenterna = new BufferedReader( new InputStreamReader(System.in)); PrintWriter filen = new PrintWriter( new BufferedWriter(new FileWriter("rader.txt"))); String rad = tangenterna.readline(); while (rad!= null) filen.println(rad); rad = tangenterna.readline(); filen.close(); b) public class Lasare public static void main(string[] arg) throws IOException BufferedReader filen = new BufferedReader( new FileReader("rader.txt")); String rad = filen.readline(); while (rad!= null) System.out.println(rad); rad = filen.readline(); filen.close(); 4
7. Nätverkskommunikation (10p) Svara med maximalt tre till fyra rader per delfråga "a" t o m "c". a) TCP är ett protokoll för transportlagret och IP är ett protokoll för nätverkslagret i ett datornätverk. b) Appleten kan endast koppla upp förbindelser mot sin egen webserver c) En viktig skillnad mellan "CORBA" och "RMI" är att med hjälp av CORBA så kan delarna i ett distribuerat system vara utvecklade i olika programmeringsspråk. Om RMI används måste alla delar i systemet vara utvecklat i Java. d) import java.net.*; public class Klient public static void main(string[] arg) throws Exception Socket anslutning = new Socket("sun-hem.du.se", 4321); DataInputStream input = new DataInputStream( new BufferedInputStream(anslutning.getInputStream())); DataOutputStream output = new DataOutputStream( new BufferedOutputStream(anslutning.getOutputStream())); int tala = 23; int talb = -31; output.writeint(tala); output.writeint(talb); output.flush(); long summan = input.readlong(); anslutning.close(); System.out.println(summan); 5