NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

Størrelse: px
Begynne med side:

Download "NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.."

Transkript

1 Løsningsforslag Eksamen V2007 Oppgave 1 NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Oppgave 1.1 Klasse som pakke rinne n primitiv datatype, slik at vi kan benytte verdien som et objekt. Auto-boxing/unboxing er at Java selv gjør denne innpakkingen/utpakkingen når vi benyter en primitiv datatype på plassen til et objekt. Oppgave 1.2 Et interface definerer hvilke metoder en klasse som implementerer interfacet skal ha. En abstrakt klasse gjør det samme, men kan også fortelle hvilket innhold enkelte av metodene skal ha. Man kan arve fra en klasse, men implementere hvor mange som helst. Oppgave 1.3 Kompilering: Oversetter fra kilekode til maskinkode en gang for alle Interpretering: Oversetter til maskinkode "on-th-fly" ( altså mens programmet kjører) Byteccode: Java-koden kompileres til bytekode ( maskinnær kode), og interpreteres videre til maskinkode hver gang vi kjører applikasjonen Oppgave 1.4 Overloading: Mange metoder har samme navn i en klasse 8men ulik signatur) Overriding: Vi lager en ny versjon av en metode vi ellers ville ha arvet. Oppgave 1.5 Polymorfisme: Alle objekter i et arvehierarki kan utgi seg for å være av en type "lenger oppe" i hierarkiet. Derfor kan vi behandle mange ulike objekter på en generell måte (JFR: Figur-eksempelet) Oppgave 1.6 Grunnprinsipper: Modularitet Abstraksjon Innkapsling

2 Utformes Dokumentasjon Get/Set (inputkontroll) Enkelt/selvforklarende brukergrensesniett Tolerant for feil Exceptions Metoder skal kunne kjøres i alle rekkefølger Flere versjoner av metoder, slik at alle "finner en de liker" Oppgave 2 Oppgave 2.1 public static ArrayList<Kunde> lesfragammelfil(string filnavn) ArrayList<Kunde> al = new ArrayList<Kunde>(); File f = new File(filnavn); FileReader fw = new FileReader(f); BufferedReader br = new BufferedReader(fw); String linje = null; while((linje=br.readline())!= null) String[] felter = linje.split(";"); Kunde k = new Kunde(Integer.parseInt(felter[0]),felter[1],felter[2],felter[3]); al.add(k); br.close(); catch(ioexception ioe) System.err.println("Uff da... noe gikk skikkelig dritt..."+ioe.getmessage()); return al;

3 Oppgave 2.2 a) public class Kunde implements Comparable<Kunde> public int compareto(kunde k2) return bilnummer.compareto(k2.bilnummer); public static void sorterkunder(arraylist<kunde> kunder) Collections.sort(kunder); Oppgave 2.3 a) public static boolean gyldigbilnummer(string bilnummer) Pattern p = Pattern.compile("[A-Z]2\\-[0-9]5"); Matcher m = p.matcher(bilnummer.trim()); boolean b = m.matches(); return b; public static void sjekkugyldige(arraylist<kunde> kunder) System.out.println("Ugyldige:"); for(kunde k:kunder) if( Kunde.gyldigBilnummer(k.getBilnummer())==false) System.out.println(k); Oppgave 2.4 public static void skrivtilnyfil(arraylist<kunde> kunder,string filnavn) FileOutputStream fos = new FileOutputStream(filnavn); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeobject(kunder); oos.close(); catch(notserializableexception nse)

4 System.err.println("Klassen er ikke serialiserbar..."); catch(ioexception ioe) System.err.println("Feilskrivingsfeil...: "+ioe.getmessage()); catch(exception e) System.err.println("Uff da..."); I klassen kunde må vi implementere Serializeable: public class Kunde implements Comparable<Kunde>,Serializable Oppgave 3 Oppgave 3.1 public void actionperformed(actionevent ae) if(ae.getsource()==btnlogin) bot.login(); if(ae.getsource()==btnlogout) bot.logout(); if(ae.getsource()==btnsend) bot.sendmessage(((contact)cmbcontact.getselecteditem()). ,tfmessage.get Text());

5 Oppgave 3.2 a) 1. Må lage interfacet 2. Må lage en ArrayList 3. Må lage metoden addmsnmeddagelistener public class MSNGUI extends JFrame implements ActionListener, MSNSystemMessageListener, MSNMessageListener ///// public void messagesent(string ,string message) talogg.append("jeg sa: "+message+"\n"); public void messagereceived(string ,string message) talogg.append( +" sa:"+message+"\n"); ////// bot.addmsnmessagelistener(this); Oppgave 3.3 a) import java.sql.*; public class DBLogger implements MSNMessageListener Connection c = DBConnect.connect(); public void messagesent(string ,string message) Stamement s = c.createstamement(); s.executeupdate("insert INTO MSNMelding VALUES(NOW(),'thnatt@hotmail.com','"+ +"','"+message+"'"); catch(sqlexception sql) sql.printstacktrace();

6 public void messagereceived(string ,string message) Stamement s = c.createstamement(); s.executeupdate("insert INTO MSNMelding VALUES(NOW(),'"+ +"','thnatt@hotmail.com','"+message+"'"); catch(sqlexception sql) sql.printstacktrace(); bot.addmsnmessagelistener(new DBLogger()); Oppgave 3.4 a) import java.util.date; import java.text.*; public class Time implements AutoReplay public boolean canhandlemessage(string message) return message.equals("hvor mye er klokka?"); public String generatereplay(string message) DateFormat shorttime = DateFormat.getTimeInstance(DateFormat.SHORT); return shorttime.format(new Date());

7 public class Greetings implements AutoReplay public boolean canhandlemessage(string message) return message.equals("hei") message.equals("hallo") message.equals("tjenare"); public String generatereplay(string message) return "hei på deg:-)";