/** * */ public Aktivitet(String navn, String krop, Objekt objekt, Model model) { if(funk.od) System.out.println(" - " + navn + " : " + krop);

Størrelse: px
Begynne med side:

Download "/** * */ public Aktivitet(String navn, String krop, Objekt objekt, Model model) { if(funk.od) System.out.println(" - " + navn + " : " + krop);"

Transkript

1 Serveren import java.util.*; /* * Created on rling public class Aktivitet implements Global Object[] boff; String[] buff; //ArrayList aktiviteter; //ArrayList egenskaber; Model model; String navn; Objekt objekt; Beskrivelse beskrivelse; * public Aktivitet(String navn, String krop, Objekt objekt, Model model) if(funk.od) System.out.println(" - " + navn + " : " + krop); this.model = model; this.navn = navn; this.objekt = objekt; String temp = krop; // Under aktiviteter int antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) if(objekt.aktiviteter == null) objekt.aktiviteter = new ArrayList();

2 for(int tal = 0; tal < antal; tal ++) String a = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; objekt.aktiviteter.add(new Aktivitet((buff = funk.tex(a, model.log10_max))[0], buff[1], objekt, model)); // Egenskaber antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) if(objekt.egenskaber == null) objekt.egenskaber = new ArrayList(); for(int tal = 0; tal < antal; tal ++) String e = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; objekt.egenskaber.add(new Egenskab((buff = funk.tex(e, model.log10_max))[0], (buff = funk.tex(buff[1], model.log10_max))[0], model)); // Beskrivelse temp = (buff = funk.tex(temp, model.log10_max))[0]; beskrivelse = new Beskrivelse((buff = funk.tex(temp, model.log10_max))[0], buff[1], objekt, model, 1); import java.util.*; /*

3 * Created on rling public class Beskrivelse implements Global Model model; ArrayList beskrivelser; String tilknytning, navn, type; Object[] boff; String[] buff; Objekt objekt; // TODO Kun til debug, skla fjernes igen!! int level; public Beskrivelse(String type, String krop, Objekt objekt, Model model, int level) this.model = model; this.type = type; this.objekt = objekt; this.level = level; String temp = krop; // navn navn = (buff = funk.tex(krop, model.log10_max))[0]; temp = buff[1]; System.out.println("type = " + type + ", navn = " + navn); // Tilknytning tilknytning = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; if(funk.od) System.out.println(" - " + level + ". "+ navn + " (" + tilknytning + ")"); // Under beskrivelser int antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0)

4 beskrivelser = new ArrayList(); for(int tal = 0; tal < antal; tal ++) String b = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; beskrivelser.add(new Beskrivelse((buff = funk.tex(b, model.log10_max))[0], buff[1], objekt, model, level + 1)); import java.net.*; import java.io.*; import java.util.*; import com.sun.tools.javac.*; /* * Created on rling public class Bruger extends Thread implements Global Socket stik = null; static int nummer = 1; int id = 0; String navn = "Anomym"; boolean logind = false; boolean afbyd = false; public PrintWriter ud; public BufferedReader ind; * public Bruger(Socket forbindelse)

5 super(); // TODO Auto-generated constructor stub stik = forbindelse; id = nummer++; /* (non-javadoc) java.lang.runnable#run() public void run() // TODO Auto-generated method stub try ud = new PrintWriter(stik.getOutputStream(), true); ind = new BufferedReader(new InputStreamReader(stik.getInputStream())); lytter(); catch(exception e) public void lytter() String besked = ""; while(!besked.equals("f")) try besked = ind.readline(); if(besked == null) break; funk.log(funk.log + "net.log", funk.hent_tid() + " : Modtog " + besked + " fra " + navn); char pro = besked.charat(0); if(!besked.equals("f")) besked = besked.substring(1); switch(pro) case 'O': // Opret forbindelse logind(besked); break; case 'S': // Modtager model fra klient // oversaet modellen til java og gem den! // HUSK at opdater

6 modellisten! model(besked); break; case 'K': // Koer modellen //oversaet javafilen til class-fil og koer start metoden kor(besked); break; //case 'B': navn = besked; default : // Fejl!!! //System.out.println("D: modtog '" + besked + "'"); catch(exception e)e.printstacktrace(); luk(); public void kor(string m) // Gem psi som java filer Model model = (Model)Start.model.get(m); ArrayList a = gemjava(model); if(a.isempty()) // Oversaet fra java til Class filer! ArrayList b = over(model); if(b.isempty()) // Start simuleringen! //System.out.println("D: Alt oversat ok! :-)"); run(model); else String til = "EJava objekterne : "; for(iterator i = b.iterator(); i.hasnext();) til += i.next(); if(i.hasnext()) til += ", "; send(til + " kunne ikke oversaettes til class filer :-("); return;

7 else String til = "EJava-programmet kunne ikke gemme objekterne : "; for(iterator i = a.iterator(); i.hasnext();) til += i.next(); if(i.hasnext()) til += ", "; send(til + " paa serveren :-("); return; public void run(model model) Grund g = new Grund(this, model); g.start(); // uden parametrer! /*public void kor_java_program(string filnavn, String metodenavn) if(debug) System.out.println("### ---> nu starter jeg korselen!"); k = new Kor(this, start); k.kor(filnavn, metodenavn); k = null; // public ArrayList over(model model) ArrayList b = new ArrayList(); for(iterator i = model.objektliste.iterator(); i.hasnext();) Objekt o = (Objekt)i.next(); if(!overobjekt(o)) b.add(o.navn); return b; public ArrayList gemjava(model model)

8 ArrayList a = new ArrayList(); for(iterator i = model.objektliste.iterator(); i.hasnext();) Objekt o = (Objekt)i.next(); if(!gemobjekt(o)) a.add(o.navn); return a; public boolean gemobjekt(objekt o) try funk.gem_data(funk.dir + P(o.navn, o.model) + ".java", o.java); catch(exception e)return false; return true; public boolean overobjekt(objekt o) if(main.compile(new String[]funk.dir + P(o.navn, o.model) + ".java")!= 0) return false; return true; public void luk() try //System.out.println("D: Forsoeger at lukke for " + navn); send("efarvel " + navn + "!"); send("f"); ud.close(); ind.close(); stik.close(); Start.bruger.remove(navn); funk.log(funk.log + "bruger.log", funk.hent_tid() + " : " + navn + " logget af uden problemer :-)"); catch(exception e) funk.log(funk.log + "bruger.log",

9 funk.hent_tid() + " : " + navn + " logget af med problemet : " + e); public void logind(string data) navn = data; if(start.bruger.containskey(navn)) send("eder er en anden bruger paa nettet lige nu, som bruger navnet " + navn); send("e" + navn + " fik IKKE forbindelse til serveren :-("); luk(); //send("f"); else Start.bruger.put(navn, this); logind = true; send("evelkommen til server version " + version); send("edu vil blive kaldt " + navn + "(" + id + ")"); send(funk.liste()); public void model(string data) Model temp = new Model(data, this); if(temp.krop == null) Model m = (Model)Start.model.get(temp.navn); if(!m.hvem.equals(navn)) send("e" + navn + " er ikke ejer af " + temp.navn + " (kun ejeren maa overskrive sin model)."); send("emodellen blev IKKE gemt!"); return; if(overset(temp)) Start.model.put(temp.navn, temp); send("e" + temp.navn + " gemt!"); send(funk.liste()); else send("e" + temp.navn + " kunne ikke oversaettes til java!");

10 public boolean overset(model model) if(model == null) send("eder er ingen model!"); return false; if(model.objektliste == null) send("emodellen er tom!"); return false; for(iterator i = model.objektliste.iterator(); i.hasnext();) overset(((objekt)i.next())); return true; public void overset(objekt objekt) String k = "public class " + P(objekt.navn, objekt.model) + "\n"; // Egenskaber k += "\n public static Grund grund;"; if(objekt.egenskaber!= null) for(iterator i = objekt.egenskaber.iterator(); i.hasnext();) k += egenskab((egenskab)i.next()); /* Den tome Konstruktoer!! k += "\n\n public " + P(objekt.navn, objekt.model) + "()\n "; k += "";// // Konstruktoer k += "\n\n public " + P(objekt.navn, objekt.model) + "(Grund grund)\n "; k += "\n this.grund = grund;\n "; // Aktiviteter

11 if(objekt.aktiviteter!= null) for(iterator i = objekt.aktiviteter.iterator(); i.hasnext();) k += aktivitet((aktivitet)i.next()); k += "\n\n"; System.out.println("D:\n" + k); objekt.java = k; public String egenskab(egenskab e) if(funk.kommatal(e.verdi)) return "\n public static double " + e.navn + " = Double.valueOf(\"" + e.verdi + "\").doublevalue();"; if(funk.heltal(e.verdi)) return "\n public static long " + e.navn + " = Long.valueOf(\"" + e.verdi + "\").longvalue();"; System.out.println("vaerdi = " + e.verdi); return "\n public static String " + e.navn + " = \"" + e.verdi + "\";"; public String aktivitet(aktivitet a) String retur = "\n\n public static void "; retur += /*P() + a.navn + "()\n \n"; retur += " " + beskrivelse(a.beskrivelse); retur += "\n "; public String beskrivelse(beskrivelse b) //String retur = "/n "; return overset_k(b); //retur += // public String overset_k(beskrivelse g) String retur = ""; System.out.println("D: type = " + g.type);

12 if(g.type.equals("a") g.type.equals("x")) g.navn = g.navn.substring(1); if(g.navn.equals("udskriv V")) retur += "grund.send("; retur += overset_v(g.beskrivelser.get(0)); retur += ");"; if(g.navn.equals("e bliver til V")) retur += overset_e(g.beskrivelser.get(0)); retur += " = " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e vokser med V")) retur += overset_e(g.beskrivelser.get(0)); retur += " += " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e aftager med V")) retur += overset_e(g.beskrivelser.get(0)); retur += " -= " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e bliver V gange st rre")) retur += overset_e(g.beskrivelser.get(0)); retur += " *= " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e bliver V gange mindre")) retur += overset_e(g.beskrivelser.get(0)); retur += " /= " + overset_v(g.beskrivelser.get(1)) + ";";

13 if(g.navn.equals("hvis B sâ A")) retur += "if(" + overset_b(g.beskrivelser.get(0)) + ")"; retur += "" + g_check() + overset_a(g.beskrivelser.get(1)) + ""; if(g.navn.equals("gentag A indtil B")) retur += "while(!(" + overset_b(g.beskrivelser.get(1)) + "))"; retur += "" + overset_a(g.beskrivelser.get(0)) + ""; if(g.navn.equals("udf r A")) retur += overset_a(g.beskrivelser.get(0)); if(g.navn.equals("a, samt X")) retur += overset_a(g.beskrivelser.get(0)) + "\n "; retur += overset_a(g.beskrivelser.get(1)); if(g.navn.equals("a")) retur += overset_a(g.beskrivelser.get(0)); //System.out.println("Type = " + type); // En aktivitet! if(g.tilknytning!= null) retur += g_check() + P(g.tilknytning, g.model) + "."; retur += g.navn + "();";

14 public String g_check() return "if(grund.check()) return; "; public String overset_a(object o) return beskrivelse((beskrivelse)o); // bare K /* String retur = ""; retur += "Navn = " + b.navn; if(b.beskrivelser!= null) retur += ", storrelse" + b.beskrivelser.size(); public String overset_b(object o) Beskrivelse b = (Beskrivelse)o; String retur = ""; String s = b.navn.substring(1); if(s.equals("e lig med V")) retur += overset_e(b.beskrivelser.get(0)); retur += " == " + overset_v(b.beskrivelser.get(1)); if(s.equals("e st rre end V")) retur += overset_e(b.beskrivelser.get(0)); retur += " > " + overset_v(b.beskrivelser.get(1)); if(s.equals("e mindre end V")) retur += overset_e(b.beskrivelser.get(0)); retur += " < " + overset_v(b.beskrivelser.get(1));

15 if(s.equals("b og B")) retur += "(" + overset_b(b.beskrivelser.get(0)); retur += " && " + overset_b(b.beskrivelser.get(1)) + ")"; if(s.equals("b eller B")) retur += "(" + overset_b(b.beskrivelser.get(0)); retur += " " + overset_b(b.beskrivelser.get(1)) +")"; if(s.equals("ikke B")) retur += "!(" + overset_b(b.beskrivelser.get(0)) + ")"; //??? public String overset_e(object o) Beskrivelse b = (Beskrivelse)o; String retur = ""; if(!b.tilknytning.equals("")) retur += P(b.tilknytning, b.model) + "."; retur += b.navn; public String overset_v(object o) Beskrivelse b = (Beskrivelse)o; String retur =""; if(b.tilknytning!= null)

16 if(!b.tilknytning.equals("")) retur += P(b.tilknytning, b.model) + "." + b.navn; else if(funk.kommatal(b.navn) funk.heltal(b.navn)) retur += b.navn; else retur += "\"" + b.navn + "\""; else if(funk.kommatal(b.navn) funk.heltal(b.navn)) retur += b.navn; else retur += "\"" + b.navn + "\""; public boolean find(arraylist liste, String navn) if(liste == null) return false; for(iterator i = liste.iterator(); i.hasnext();) Object o = i.next(); if(o instanceof Egenskab && ((Egenskab)o).navn.equals(navn)) return true; return false; // Tillaeg til navn, saa filerne bliver naemmere at finde, rette og slette. public String P(String navn, Model model) String r = model.navn.substring(0, 1).toUpperCase() + model.navn.substring(1); return r + "_" + navn; public String p(string navn, Model model) String r = model.navn.substring(0, 1).toLowerCase() + model.navn.substring(1); return r + "_" + navn; public void send(string tekst)

17 ud.println(tekst); funk.log(funk.log + "net.log", funk.hent_tid() + " : sende " + tekst + " til " + navn); import java.net.*; import java.io.*; import java.util.*; import com.sun.tools.javac.*; /* * Created on rling public class Bruger extends Thread implements Global Socket stik = null; static int nummer = 1; int id = 0; String navn = "Anomym"; boolean logind = false; boolean afbyd = false; public PrintWriter ud; public BufferedReader ind; * public Bruger(Socket forbindelse) super(); // TODO Auto-generated constructor stub stik = forbindelse; id = nummer++; /* (non-javadoc)

18 java.lang.runnable#run() public void run() // TODO Auto-generated method stub try ud = new PrintWriter(stik.getOutputStream(), true); ind = new BufferedReader(new InputStreamReader(stik.getInputStream())); lytter(); catch(exception e) public void lytter() String besked = ""; while(!besked.equals("f")) try besked = ind.readline(); if(besked == null) break; funk.log(funk.log + "net.log", funk.hent_tid() + " : Modtog " + besked + " fra " + navn); char pro = besked.charat(0); if(!besked.equals("f")) besked = besked.substring(1); switch(pro) case 'O': // Opret forbindelse logind(besked); break; case 'S': // Modtager model fra klient // oversaet modellen til java og gem den! // HUSK at opdater modellisten! model(besked); break; case 'K': // Koer modellen //oversaet javafilen til class-fil og koer start metoden kor(besked);

19 break; //case 'B': navn = besked; default : // Fejl!!! //System.out.println("D: modtog '" + besked + "'"); catch(exception e)e.printstacktrace(); luk(); public void kor(string m) // Gem psi som java filer Model model = (Model)Start.model.get(m); ArrayList a = gemjava(model); if(a.isempty()) // Oversaet fra java til Class filer! ArrayList b = over(model); if(b.isempty()) // Start simuleringen! //System.out.println("D: Alt oversat ok! :-)"); run(model); else String til = "EJava objekterne : "; for(iterator i = b.iterator(); i.hasnext();) til += i.next(); if(i.hasnext()) til += ", "; send(til + " kunne ikke oversaettes til class filer :-("); return; else String til = "EJava-programmet kunne ikke gemme objekterne : "; for(iterator i = a.iterator(); i.hasnext();)

20 til += i.next(); if(i.hasnext()) til += ", "; send(til + " paa serveren :-("); return; public void run(model model) Grund g = new Grund(this, model); g.start(); // uden parametrer! /*public void kor_java_program(string filnavn, String metodenavn) if(debug) System.out.println("### ---> nu starter jeg korselen!"); k = new Kor(this, start); k.kor(filnavn, metodenavn); k = null; // public ArrayList over(model model) ArrayList b = new ArrayList(); for(iterator i = model.objektliste.iterator(); i.hasnext();) Objekt o = (Objekt)i.next(); if(!overobjekt(o)) b.add(o.navn); return b; public ArrayList gemjava(model model) ArrayList a = new ArrayList(); for(iterator i = model.objektliste.iterator(); i.hasnext();) Objekt o = (Objekt)i.next(); if(!gemobjekt(o)) a.add(o.navn);

21 return a; public boolean gemobjekt(objekt o) try funk.gem_data(funk.dir + P(o.navn, o.model) + ".java", o.java); catch(exception e)return false; return true; public boolean overobjekt(objekt o) if(main.compile(new String[]funk.dir + P(o.navn, o.model) + ".java")!= 0) return false; return true; public void luk() try //System.out.println("D: Forsoeger at lukke for " + navn); send("efarvel " + navn + "!"); send("f"); ud.close(); ind.close(); stik.close(); Start.bruger.remove(navn); funk.log(funk.log + "bruger.log", funk.hent_tid() + " : " + navn + " logget af uden problemer :-)"); catch(exception e) funk.log(funk.log + "bruger.log", funk.hent_tid() + " : " + navn + " logget af med problemet : " + e); public void logind(string data)

22 navn = data; if(start.bruger.containskey(navn)) send("eder er en anden bruger paa nettet lige nu, som bruger navnet " + navn); send("e" + navn + " fik IKKE forbindelse til serveren :-("); luk(); //send("f"); else Start.bruger.put(navn, this); logind = true; send("evelkommen til server version " + version); send("edu vil blive kaldt " + navn + "(" + id + ")"); send(funk.liste()); public void model(string data) Model temp = new Model(data, this); if(temp.krop == null) Model m = (Model)Start.model.get(temp.navn); if(!m.hvem.equals(navn)) send("e" + navn + " er ikke ejer af " + temp.navn + " (kun ejeren maa overskrive sin model)."); send("emodellen blev IKKE gemt!"); return; if(overset(temp)) Start.model.put(temp.navn, temp); send("e" + temp.navn + " gemt!"); send(funk.liste()); else send("e" + temp.navn + " kunne ikke oversaettes til java!"); public boolean overset(model model) if(model == null) send("eder er ingen model!"); return false;

23 if(model.objektliste == null) send("emodellen er tom!"); return false; for(iterator i = model.objektliste.iterator(); i.hasnext();) overset(((objekt)i.next())); return true; public void overset(objekt objekt) String k = "public class " + P(objekt.navn, objekt.model) + "\n"; // Egenskaber k += "\n public static Grund grund;"; if(objekt.egenskaber!= null) for(iterator i = objekt.egenskaber.iterator(); i.hasnext();) k += egenskab((egenskab)i.next()); /* Den tome Konstruktoer!! k += "\n\n public " + P(objekt.navn, objekt.model) + "()\n "; k += "";// // Konstruktoer k += "\n\n public " + P(objekt.navn, objekt.model) + "(Grund grund)\n "; k += "\n this.grund = grund;\n "; // Aktiviteter if(objekt.aktiviteter!= null) for(iterator i = objekt.aktiviteter.iterator(); i.hasnext();) k += aktivitet((aktivitet)i.next());

24 k += "\n\n"; System.out.println("D:\n" + k); objekt.java = k; public String egenskab(egenskab e) if(funk.kommatal(e.verdi)) return "\n public static double " + e.navn + " = Double.valueOf(\"" + e.verdi + "\").doublevalue();"; if(funk.heltal(e.verdi)) return "\n public static long " + e.navn + " = Long.valueOf(\"" + e.verdi + "\").longvalue();"; System.out.println("vaerdi = " + e.verdi); return "\n public static String " + e.navn + " = \"" + e.verdi + "\";"; public String aktivitet(aktivitet a) String retur = "\n\n public static void "; retur += /*P() + a.navn + "()\n \n"; retur += " " + beskrivelse(a.beskrivelse); retur += "\n "; public String beskrivelse(beskrivelse b) //String retur = "/n "; return overset_k(b); //retur += // public String overset_k(beskrivelse g) String retur = ""; System.out.println("D: type = " + g.type); if(g.type.equals("a") g.type.equals("x")) g.navn = g.navn.substring(1); if(g.navn.equals("udskriv V")) retur += "grund.send("; retur += overset_v(g.beskrivelser.get(0)); retur += ");";

25 if(g.navn.equals("e bliver til V")) retur += overset_e(g.beskrivelser.get(0)); retur += " = " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e vokser med V")) retur += overset_e(g.beskrivelser.get(0)); retur += " += " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e aftager med V")) retur += overset_e(g.beskrivelser.get(0)); retur += " -= " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e bliver V gange st rre")) retur += overset_e(g.beskrivelser.get(0)); retur += " *= " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("e bliver V gange mindre")) retur += overset_e(g.beskrivelser.get(0)); retur += " /= " + overset_v(g.beskrivelser.get(1)) + ";"; if(g.navn.equals("hvis B sâ A")) retur += "if(" + overset_b(g.beskrivelser.get(0)) + ")";

26 retur += "" + g_check() + overset_a(g.beskrivelser.get(1)) + ""; if(g.navn.equals("gentag A indtil B")) retur += "while(!(" + overset_b(g.beskrivelser.get(1)) + "))"; retur += "" + overset_a(g.beskrivelser.get(0)) + ""; if(g.navn.equals("udf r A")) retur += overset_a(g.beskrivelser.get(0)); if(g.navn.equals("a, samt X")) retur += overset_a(g.beskrivelser.get(0)) + "\n "; retur += overset_a(g.beskrivelser.get(1)); if(g.navn.equals("a")) retur += overset_a(g.beskrivelser.get(0)); //System.out.println("Type = " + type); // En aktivitet! if(g.tilknytning!= null) retur += g_check() + P(g.tilknytning, g.model) + "."; retur += g.navn + "();"; public String g_check() return "if(grund.check()) return; ";

27 public String overset_a(object o) return beskrivelse((beskrivelse)o); // bare K /* String retur = ""; retur += "Navn = " + b.navn; if(b.beskrivelser!= null) retur += ", storrelse" + b.beskrivelser.size(); public String overset_b(object o) Beskrivelse b = (Beskrivelse)o; String retur = ""; String s = b.navn.substring(1); if(s.equals("e lig med V")) retur += overset_e(b.beskrivelser.get(0)); retur += " == " + overset_v(b.beskrivelser.get(1)); if(s.equals("e st rre end V")) retur += overset_e(b.beskrivelser.get(0)); retur += " > " + overset_v(b.beskrivelser.get(1)); if(s.equals("e mindre end V")) retur += overset_e(b.beskrivelser.get(0)); retur += " < " + overset_v(b.beskrivelser.get(1)); if(s.equals("b og B")) retur += "(" + overset_b(b.beskrivelser.get(0));

28 retur += " && " + overset_b(b.beskrivelser.get(1)) + ")"; if(s.equals("b eller B")) retur += "(" + overset_b(b.beskrivelser.get(0)); retur += " " + overset_b(b.beskrivelser.get(1)) +")"; if(s.equals("ikke B")) retur += "!(" + overset_b(b.beskrivelser.get(0)) + ")"; //??? public String overset_e(object o) Beskrivelse b = (Beskrivelse)o; String retur = ""; if(!b.tilknytning.equals("")) retur += P(b.tilknytning, b.model) + "."; retur += b.navn; public String overset_v(object o) Beskrivelse b = (Beskrivelse)o; String retur =""; if(b.tilknytning!= null) if(!b.tilknytning.equals("")) retur += P(b.tilknytning, b.model) + "." + b.navn; else if(funk.kommatal(b.navn) funk.heltal(b.navn)) retur += b.navn; else retur += "\"" + b.navn + "\"";

29 else if(funk.kommatal(b.navn) funk.heltal(b.navn)) retur += b.navn; else retur += "\"" + b.navn + "\""; public boolean find(arraylist liste, String navn) if(liste == null) return false; for(iterator i = liste.iterator(); i.hasnext();) Object o = i.next(); if(o instanceof Egenskab && ((Egenskab)o).navn.equals(navn)) return true; return false; // Tillaeg til navn, saa filerne bliver naemmere at finde, rette og slette. public String P(String navn, Model model) String r = model.navn.substring(0, 1).toUpperCase() + model.navn.substring(1); return r + "_" + navn; public String p(string navn, Model model) String r = model.navn.substring(0, 1).toLowerCase() + model.navn.substring(1); return r + "_" + navn; public void send(string tekst) ud.println(tekst); funk.log(funk.log + "net.log", funk.hent_tid() + " : sende " + tekst + " til " + navn);

30 /* * Created on rling public class Egenskab implements Global Model model; String navn; String verdi; public Egenskab(String navn, String verdi, Model model) if(funk.od) System.out.println(" - " + navn + " : " + verdi); this.model = model; this.navn = navn; this.verdi = verdi; import java.util.*; import java.io.*; import java.text.*; /* * Created on rling public class Funktion Start start; int log10_max = 4; String ser = "server/";

31 String dir = ""; //ser + "klasser/"; String log = ser + "logbog/"; boolean od = false; // Oversaettelses debuging! * public Funktion() super(); // TODO Auto-generated constructor stub * Oversaetter specielt formateret tekst til tekst! * F.eks. bliver "05Model" til "Model" tekst public String tex(string tekst) int tal = tal(tekst.substring(0, 2)); return tekst.substring(2, tal + 2); * Oversaetter formateret tekst til "normal" tekst og afkorter teksten, saa den passer igen! * F.eks. bliver "0006ObjektBlaBlaBla", 4 til "Objekt", "BlaBlaBla" tekst size public String[] tex(string tekst, int size) int tal = tal(tekst.substring(0, size)); String[] retur = tekst.substring(size, tal + size), tekst.substring(tal + size); * Oversaetter tekst til tal. * F.eks. bliver " " til 567 tal

32 public int tal(string tal) try return Integer.decode(nulfri(tal)).intValue(); catch(exception e)e.printstacktrace(); return -1; * Oversaetter tal... * F.eks. bliver "0008Objekt 1BlaBlaBla", 4 til 8, "Objekt 1BlaBlaBla" tal size public Object[] tal(string tal, int size) Object[] o = new Integer(tal(tal.substring(0, size))), tal.substring(size); return o; public int tal(object tal) return ((Integer)tal).intValue(); * Fjerner nuller fra tekster. * F.eks. bliver " " til "567" tekst public String nulfri(string tekst) while(tekst.startswith("0") && tekst.length() > 1) tekst = tekst.substring(1); return tekst;

33 * Klargoere model listen til at blive sendt til brugeren. public String liste() String temp = "L" + fyld(log10_max, 2) + fyld(start.model.size(), log10_max); for(iterator i = Start.model.keySet().iterator(); i.hasnext();) temp += format((string)i.next()); return temp; * Formater teksten. * F.eks. bliver "Objekt 1" til "0008Objekt 1" tekst public String format(string tekst) return fyld(tekst.length(), log10_max) + tekst; * Laver formaterede tal. * F.eks. bliver 567, 8 til " " tal size public String fyld(int tal, int size) String temp = tal + ""; while(temp.length() < size) temp = "0" + temp; return temp;

34 * Sender tekst til alle bruger tekst public void send_all(string tekst) for(iterator i = Start.bruger.keySet().iterator(); i.hasnext();) ((Bruger)i.next()).send(tekst); public boolean heltal(string tekst) try Long.valueOf(tekst); return true; catch(exception e)return false; public boolean kommatal(string tekst) try Double.valueOf(tekst); if(tekst.indexof(".") == -1) return false; return true; catch(exception e)return false; public void gem_data(string navn, String data) throws Exception FileWriter skriver = new FileWriter(navn); skriver.write(data); skriver.close(); public String hent_data(string navn) try String s, r = ""; BufferedReader leser = new

35 BufferedReader(new InputStreamReader(new FileInputStream(navn))); trywhile((s = leser.readline())!= null)r+="\n" + s; catch(eofexception e) leser.close(); return r; leser.close(); return r; catch(exception e) return "FEJL!"; public boolean log(string navn, String data) try String g = ""; String dir = ""; // Speciel mappe til logboeger if(new File(dir + navn).exists()) g = hent_data(navn); //if(debugt) System.out.println("Henter data! " +g); g += (data + "\n "); gem_data(navn, g); //if(debugt) System.out.println("gemte " + g); catch(exception e)return false; return true; public String hent_tid() DateFormat format = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.GERMAN); return format.format(new Date());

36 /* * Created on rling public interface Global Funktion funk = new Funktion(); String version = "0,003 Beta"; import java.lang.reflect.*; import java.io.*; import java.security.*; /* * Created on rling public class Grund extends Thread implements Global Bruger bruger; Model model; public Grund(Bruger bruger, Model model) this.bruger = bruger; this.model = model; // classload til at lave klasserne med :-) public void run() try funk.log(funk.log + "overset.log", "");

37 RlingsLoader hent = new RlingsLoader(); Class klasse = hent.load(funk.dir + bruger.p(model.starttil, model)); Class[] klasseparameter_1 = this.getclass(); Object[] objektparameter_1 = this; Constructor konstruktoer = klasse.getconstructor(klasseparameter_1); Object instans = konstruktoer.newinstance(objektparameter_1); Class[] klasseparameter_2 = ; Object[] objektparameter_2 = ; funk.log(funk.log + "overset.log", "\nklassen hedder " + instans.getclass().getname()); Method metode = klasse.getdeclaredmethod(model.startaktivitet, klasseparameter_2); funk.log(funk.log + "overset.log", "\nmetoden hedder " + metode); // Gogo metode.invoke(instans, objektparameter_2); catch(exception e)e.printstacktrace(); public void send(string tekst) bruger.send("e" + tekst); // Skallaves om til DB public void send(double tal) bruger.send("e" + tal); // Skallaves om til DB public void send(int tal) bruger.send("e" + tal); public boolean check()

38 return bruger.afbyd; import java.util.*; /* * Created on rling public class Model implements Global String navn, psi, krop, hvem, starttil; String startaktivitet = ""; int size; String[] buff; Object[] boff; ArrayList objektliste; Bruger ejer; int log10_max = 0; * public Model(String psi, Bruger ejer) // Simple data this.psi = psi; this.ejer = ejer; hvem = ejer.navn; log10_max = funk.tal(psi.substring(0, 2)); String temp = psi.substring(2); startaktivitet = (buff = funk.tex(temp, log10_max))[0]; temp = buff[1]; //* starttil = (buff = funk.tex(temp, log10_max))[0]; temp = buff[1];

39 // size = ((buff = funk.tex(temp, log10_max))[0]).length(); temp = temp.substring(log10_max); navn = (buff = funk.tex(temp, log10_max))[0]; // Findes iforvejen? if(start.model.containskey(navn)) if(!((model)start.model.get(navn)).ejer.navn.equals(hvem)) return; // Objekterne! krop = buff[1]; if(!krop.equals("0000") && krop.length() > 4) objektliste = new ArrayList(); int antal = funk.tal((boff = funk.tal(krop, log10_max))[0]); temp = (String)boff[1]; for(int tal = 0; tal < antal; tal ++) objektliste.add(new Objekt((buff = funk.tex(temp, log10_max))[0], this)); temp = buff[1]; import java.util.*; /* * Created on rling public class Objekt implements Global

40 String navn, temp, krop, java; String[] buff; Object[] boff; Model model; // ArrayList objekter; ArrayList aktiviteter; ArrayList egenskaber; * public Objekt(String krop, Model model) this.model = model; // De simple data navn = (buff = funk.tex(krop, model.log10_max))[0]; krop = (temp = buff[1]); if(funk.od) System.out.println(navn); // Under objekter int antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) for(int tal = 0; tal < antal; tal ++) model.objektliste.add(new Objekt((buff = funk.tex(temp, model.log10_max))[0], model)); temp = buff[1]; // Aktiviteter antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) aktiviteter = new ArrayList(); for(int tal = 0; tal < antal; tal ++) String a = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1];

41 aktiviteter.add(new Aktivitet((buff = funk.tex(a, model.log10_max))[0], buff[1], this, model)); // Egenskaber antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) egenskaber = new ArrayList(); for(int tal = 0; tal < antal; tal ++) String e = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; egenskaber.add(new Egenskab((buff = funk.tex(e, model.log10_max))[0], (buff = funk.tex(buff[1], model.log10_max))[0], model)); import java.util.*; /* * Created on rling public class Objekt implements Global String navn, temp, krop, java; String[] buff; Object[] boff; Model model; // ArrayList objekter; ArrayList aktiviteter;

42 ArrayList egenskaber; * public Objekt(String krop, Model model) this.model = model; // De simple data navn = (buff = funk.tex(krop, model.log10_max))[0]; krop = (temp = buff[1]); if(funk.od) System.out.println(navn); // Under objekter int antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) for(int tal = 0; tal < antal; tal ++) model.objektliste.add(new Objekt((buff = funk.tex(temp, model.log10_max))[0], model)); temp = buff[1]; // Aktiviteter antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) aktiviteter = new ArrayList(); for(int tal = 0; tal < antal; tal ++) String a = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; aktiviteter.add(new Aktivitet((buff = funk.tex(a, model.log10_max))[0], buff[1], this, model)); // Egenskaber

43 antal = funk.tal((boff = funk.tal(temp, model.log10_max))[0]); temp = (String)boff[1]; if(antal > 0) egenskaber = new ArrayList(); for(int tal = 0; tal < antal; tal ++) String e = (buff = funk.tex(temp, model.log10_max))[0]; temp = buff[1]; egenskaber.add(new Egenskab((buff = funk.tex(e, model.log10_max))[0], (buff = funk.tex(buff[1], model.log10_max))[0], model)); import java.io.*; /* * Created on rling public class RlingsLoader extends ClassLoader arg0 public RlingsLoader(ClassLoader arg0) super(arg0); // TODO Auto-generated constructor stub *

44 public RlingsLoader() super(); // TODO Auto-generated constructor stub public Class load(string navn) try byte[] buf = byteforclass(navn); return defineclass(navn, buf, 0, buf.length); catch(exception e)return null; public byte[] byteforclass(string name) throws IOException, ClassNotFoundException FileInputStream in = streamfor(name + ".class"); int length = in.available(); if(length == 0) throw new ClassNotFoundException(name); byte[] buf = new byte[length]; in.read(buf); return buf; public FileInputStream streamfor(string name) FileInputStream r = null; tryr = new FileInputStream(name); catch(exception e) return r; import java.net.*; import java.util.*; /* * Created on

45 rling public class Start implements Global static HashMap bruger = new HashMap(); static HashMap model = new HashMap(); * public Start() super(); // TODO Auto-generated constructor stub funk.start = this; public static void main(string[] args) // set args! if(!funk.log(funk.log + "server.log", funk.hent_tid() + " : Server startet")) System.err.println("Serveren kan ikke lave log fil!"); ServerSocket stik; try stik = new ServerSocket(4444); System.out.println("Lytter nu!"); while(true) Bruger b = new Bruger(stik.accept()); b.start(); bruger.put(b.navn, b); funk.log(funk.log + "server.log", funk.hent_tid() + " : Bruger " + b.navn + " har logget paa med id-nummer " + b.id + " fra " + b.stik.getinetaddress() + "(" + b.stik.getlocaladdress() + ")"); catch(exception e) funk.log(funk.log + "server.log", funk.hent_tid() + " : Server i udu :-("); e.printstacktrace();

46 \endverbartim

Socket og ServerSocket

Socket og ServerSocket Side 1 av 5, socket og klient-tjener, V. Holmstedt, HiO 2006 Dette dokumentet er revidert den 29.8.2006, kl:12:30. Det er foretatt rettelser i begge versjoner av klassen A_Server. Socket og ServerSocket

Detaljer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

INF1000 - Løsning på seminaropppgaver til uke 8

INF1000 - Løsning på seminaropppgaver til uke 8 INF1000 - Løsning på seminaropppgaver til uke 8 Oppgave 1 a) for(string nokkel : studenter.keyset){ System.out.println(nokkel); Studenten sitt navn blir skrevet ut. b) for(student dennestudenten : studenter.values()){

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 8 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Fredag 10. desember

Detaljer

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon Kapittel 9 Distribusjon Tjenermaskin Fjernbruker LAN Nærbruker WAN Figur 9-1: En enkel klient/tjener distribusjon 195 Tjenermaskin Fjernbruker LAN Replikert tjener Nærbruker WAN Figur 9-2: Klient/tjener-konfigurasjon

Detaljer

import java.io.*; import java.util.*; import javagently.text;

import java.io.*; import java.util.*; import javagently.text; //-------------------------------------------------------- // // Fil: Oppg1.java - // løser oppgave 1 i eksamensettet for in105 - v99 // //-------------------------------------------------------- import

Detaljer

INF1010 våren 2016. Arv og subklasser - del 2

INF1010 våren 2016. Arv og subklasser - del 2 INF1010 våren 2016 Onsdag 10. februar Arv og subklasser - del 2 pluss litt om feil og unntak hvis tid Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi

Detaljer

Repetisjon. INF1000 - gruppe 13

Repetisjon. INF1000 - gruppe 13 Repetisjon INF1000 - gruppe 13 Lese fra fil Scanner import java.util.*; void lesfrafil() { try { Scanner innfil = new Scanner(new File( fugleobservasjoner.txt )); while (innfil.hasnext()) { String linje

Detaljer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; } Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet

Detaljer

Løsningsforslag til eksamen i INF1000 våren 2006

Løsningsforslag til eksamen i INF1000 våren 2006 Løsningsforslag til eksamen i INF1000 våren 2006 Oppgave 1 a) -1 false 7 b) 30 c) Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7 d) Andre if-test er true Tredje if-test er true e) k = 4 k =

Detaljer

Litt om pakker og mest om data inn og ut

Litt om pakker og mest om data inn og ut Litt om pakker og mest om data inn og ut IN105-javainnogut-1 import java.io.*;. Data inn fra tastaturet lesemetode tastatur BufferedReader void lesemetode (String [ ] args) throws IOException {... /* sett

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 7 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

import java.util.arraylist;

import java.util.arraylist; import java.util.arraylist; * Klassen som generer TerminListe * @author young * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates

Detaljer

Eksamen Objektorientert Programmering 2012

Eksamen Objektorientert Programmering 2012 Eksamen Objektorientert Programmering 2012 Høgskolen i Østfold 2012-05-09 Emnekode Emne ITF10611 Dato 2012-05-09 Eksamenstid 09:00-13:00 Hjelpemidler Faglærer Objektorientert Programmering To A4-ark (fire

Detaljer

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først) INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:

Detaljer

OPPGAVE 5b og 8b Java Kode

OPPGAVE 5b og 8b Java Kode OPPGAVE 5b og 8b Java Kode public class Kant boolean behandlereturavbil() BehandleReturAvBil behandler = new BehandleReturAvBil(this); String regnr; int kmstand, tanknivaa; boolean erskadet; // 1: Få verdiene

Detaljer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

Detaljer

IN2030. Oppgave 1. Løsningsforslag. Uke (Disse filene finnes også i mappen ~inf2100/e/e2/.)

IN2030. Oppgave 1. Løsningsforslag. Uke (Disse filene finnes også i mappen ~inf2100/e/e2/.) IN00 Løsningsforslag Uke 0 019 Oppgave 1 (Disse filene finnes også i mappen ~inf0/e/e/.) 1 class E { public s t a t i c void main ( S t r i n g arg [ ] ) { Scanner s = new Scanner ( arg [ 0 ] ) ; Expression

Detaljer

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

Detaljer

Løsningsforslag, inf101, våren 2001

Løsningsforslag, inf101, våren 2001 Løsningsforslag, inf101, våren 2001 Anders Brunland Oppgave 1 (15%) a) Navn på søker trenger ikke være med i sak-objektet siden den kan hentes fra det første dokumentet i saken. Variabelen FRIST er strengt

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

Objektorientert Programmering Ekstraordinær eksamen 2014

Objektorientert Programmering Ekstraordinær eksamen 2014 Objektorientert Programmering Ekstraordinær eksamen 2014 Høgskolen i Østfold 2014-01-13 Emnekode Emne ITF10611 Dato 13.01.2014 Eksamenstid 09:00-13:00 Hjelpemidler Faglærer Objektorientert Programmering

Detaljer

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste Datafiler og serialisering Tekstfiler Scanner klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

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

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. 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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider.

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 11

INF 1010, vår 2005 Løsningsforslag uke 11 INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato

Detaljer

Løsningsforslag Test 2

Løsningsforslag Test 2 Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.

Detaljer

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2018 tirsdag 23. januar INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean

Detaljer

Å lese tall fra en fil, klassen Scanner

Å lese tall fra en fil, klassen Scanner Å lese tall fra en fil, klassen Scanner 1. Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2. Kan skanne teksten etter data av ulike typer. 3. Kan kun skanne framover i teksten. Vis

Detaljer

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden Øving 4 Thorstein Brekke Operativsystemer Oppgave 1 Kode for Murer: // Uke4oppgave1murer.cpp : main project file. #include "stdafx.h" using namespace System; using namespace Threading; using namespace

Detaljer

Avdeling for ingeniørutdanning Institutt for teknologi

Avdeling for ingeniørutdanning Institutt for teknologi Avdeling for ingeniørutdanning Institutt for teknologi Oppgavetittel: Lab Fag(nr./navn): DOPS2021 - Operativsystemer Gruppemedlemmer: T. Alexander Lystad Faglærer: Karoline Moholth Dato: 15. oktober 2009

Detaljer

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud

Detaljer

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

Detaljer

IN Notat om I/O i Java

IN Notat om I/O i Java IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,

Detaljer

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15. Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 15. januar 2016 Forkurs INF1010 - dag 3 Strenger 2 Forkurs INF1010 - dag

Detaljer

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet Eksamen i emnet INF101/INF101-F - Programmering 2 Fredag 10. juni 2011, kl. 09-14 Bokmål Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

INF Notat om I/O i Java

INF Notat om I/O i Java INF1000 - Notat om I/O i Java Tuva Kristine Thoresen, Ingrid Grønlie Guren tuvakt@ulrik.uio.no, ingridgg@ulrik.uio.no 22. oktober 2014 Dette notatet handler om I/O (input/output) i Java, og tar for seg

Detaljer

Leksjon 7. Filer og unntak

Leksjon 7. Filer og unntak 6108 Programmering i Java Leksjon 7 Filer og unntak Del1: 7.1 7.2 Roy M. Istad 2015 Fil permanent lagring Ønsker at program skal kunne ta vare på data over tid, fra en kjøring til den neste (kontra hurtigminnet

Detaljer

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) HashMap, innstikksortering, javadoc (kap. 9.1-9.11, m.m. i "Rett på Java" 3. utg.) NB! Legg merke til at disse er løsningsforslag. Løsningene

Detaljer

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 INF1000 Metoder Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere

Detaljer

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

Detaljer

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag KANDIDATNUMMER: EKSAMEN EMNENAVN: Programutvikling EMNENUMMER: IMT3281 EKSAMENSDATO:05/12-2007 KLASSE: 06HBINDA/06HBINDP TID: 09.00 13.00 EMNEANSVARLIG: Øivind Kolloen ANTALL SIDER UTLEVERT: 7 TILLATTE

Detaljer

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser INF1010, 21. januar 2016 Klasser med parametre = Parametriserte klasser = Generiske klasser Stein Gjessing Inst. for Informatikk Universitetet i Oslo Først litt repetisjon fra i går class LagBiler { public

Detaljer

INF2100. Oppgaver 26. september til 1. oktober 2007

INF2100. Oppgaver 26. september til 1. oktober 2007 INF2100 Oppgaver 26. september til 1. oktober 2007 1 Språket Denne uken skal vi implementere en utvidelse av språket fra forrige ukes oppgave. Syntaksen er vist i figur 1 på neste side og betydning er

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under

Detaljer

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Eivind Storm Aarnæs (eivinsaa@math.uio.no) Institutt for Informatikk, 14. januar 2015 Forkurs INF1010 - dag 3 Strenger Fil-I/O Unntakshåndtering

Detaljer

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Konstruktører. Bruk av konstruktører når vi opererer med enkle klasser er ganske ukomplisert. Når vi skriver. skjer følgende: Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i

Detaljer

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing.

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing. INF1010 våren 2009 Uke 5, 27. januar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser Generalisering -spesialisering Gjenbruk av klasser Ved sammensetning (komposisjon)

Detaljer

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal Del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud

Detaljer

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner Oversikt INF1000 Uke 3 Innlesing fra terminal, formatert utskrift og forgreininger Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner Innlesing Formatert utskrift Repetisjon

Detaljer

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

INF100 Institutt for informatikk Universitetet i Bergen Øving 5 INF100 Institutt for informatikk Universitetet i Bergen Øving 5 Høst 2013 Mål: Bruk av objekter. Innlevering: Adventure.java, Spiller.java og Rom.jav pakket i en zip fil. Innleveringsfrist: Torsdag 10.

Detaljer

Videregående programmering 6

Videregående programmering 6 Videregående programmering 6 1. Feilkontroll i klasser uten unntaksobjekter Klasser skal lages sikre. Argumentverdier skal kontrolleres, og eventuelle feil skal rapporteres til klienten. I praksis har

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 14.desember 2007 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasser: LO347D Web-applikasjoner med Java EE Nettstudenter

Detaljer

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:

Detaljer

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk Side 1 av 20 Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk Bokmål Eksamen i emnet INF100 Grunnkurs i programmering Torsdag 27. november 2014 Tid: 09:00 14:00

Detaljer

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister INF1010 våren 2010 Torsdag 4. februar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser (2 uker) Generalisering - spesialisering Gjenbruk av klasser Ved sammensetning

Detaljer

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder: Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL Delprøve Kandidatnr: Prøvedato: 2. mars 2005 Varighet: 3 timer (9:00 12:00) Fagnummer: LO196D Fagnavn: Videregående programmering med

Detaljer

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster 3 emner i dag! INF1000 Uke 5 Litt om objekter, pekere og null Filer og easyio Litt mer om tekster Litt om objekter, filer med easyio, tekst 1 2 Objekter og pekere Vi lager pekere og objekter når vi bruker

Detaljer

INF1000: noen avsluttende ord

INF1000: noen avsluttende ord Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

INF2100. Oppgaver 23. og 24. september 2010

INF2100. Oppgaver 23. og 24. september 2010 INF2100 Oppgaver 23. og 24. september 2010 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med + og ; grammatikken ser du i figur 1 på neste side. Tallkonstanter består av bare ett

Detaljer

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

INF2100. Oppgaver 9. oktober 2012 C 100 X 10 INF2100 Oppgaver 9. oktober 2012 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side. Tallkonstanter

Detaljer

Eksamen. Objektorientert Programmering IGR 1372

Eksamen. Objektorientert Programmering IGR 1372 + JVNROHQL1DUYLN $YGHOLQJIRU7HNQRORJL Eksamen i Objektorientert Programmering IGR 1372 7LG'HVHPEHU± 7LOODWWHKMHOSHPLGOHU 6NULYHVDNHU2UGE NHU -DYD6RIWZDUH6ROXWLRQV)RXQGDWLRQVRI3URJUDP 'HVLJQVNUHYHWDY/HZLV

Detaljer

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2

Detaljer

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10 INF2100 Oppgaver 6. og 11. oktober 2011 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side.

Detaljer

Løse reelle problemer

Løse reelle problemer Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:

Detaljer

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 4Hybelhus litt mer tips enn i oppgaven Oblig 4Hybelhus litt mer tips enn i oppgaven lørdag 19. okt 2013 Arne Maus Obligatorisk oppgave 4 Gulbrand Grås husleiesystem I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer,

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

Modul Specifikation Skrevet af. Gruppen. Version 1.0

Modul Specifikation Skrevet af. Gruppen. Version 1.0 Modul Specifikation Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...4 1.1. FORMÅL...4 1.2. REFERENCER...4 2. MODUL OVERSIGT...5 3. MODUL GUIDE...6 3.1. CGUARDLOGRECORDSET...6 3.1.1.

Detaljer

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen Inf 1000 høst 2005 Løsningsforslag ordinær eksamen Oppgave 1 (10 poeng) a) 11 x 3 = 33 b) 4 c) 4 d) 10 x 9 = 90 Oppgave 2 (16 poeng) Er disse programsetningene lovlige i Java? JA x NEI int i=1, j =i; x

Detaljer

INF2100. Oppgaver uke 40 og

INF2100. Oppgaver uke 40 og INF2100 Oppgaver uke 40 og 41 2014 For å få trening i å programmere en parser, skal vi aller først gjøre det for et veldig enkelt programmeringsspråk: E. Dette språket består av uttrykk med de fire vanligste

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

Kapittel 7: Mer om arv

Kapittel 7: Mer om arv Kapittel 7: Mer om arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,

Detaljer

Forelesningsquiz. Forelesning inf1000 - Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Forelesningsquiz. Forelesning inf1000 - Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min. Forelesning inf1000 - Java 5 Forelesningsquiz Tema: En liten quiz (se utdelt ark) Filbehandling Tekster Ole Christian Lingjærde, 19. september 2012 Sett dere to (eller tre) sammen og besvar de fire spørsmålene

Detaljer

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk INF1010 våren 2009 Uke 5, 27. januar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser Generalisering - spesialisering Gjenbruk av klasser Ved sammensetning (komposisjon)

Detaljer

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk INF2440 Prøveeksamen, løsningsforslag, 20 mai 2015 Arne Maus PSE, Inst. for informatikk 1 Prøveeksamen Er en modell av hva du får til eksamen: - like mange (+-1) oppgaver som eksamen og nesten samme type

Detaljer

INF1000-SIKT - Notat om I/O i Java

INF1000-SIKT - Notat om I/O i Java INF1000-SIKT - Notat om I/O i Java Tuva Kristine Thoresen tuvakt@ulrik.uio.no 30. oktober 2013 Innhold 1 Innlesning fra terminal 2 1.1 Innlesning av tekst........................ 2 1.2 Innlesning av tall.........................

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 4.mai 2011 Varighet: 0900-1300 Emnekode: Emnenavn: Klasse(r): LO191D / LC191D Campus: LC191D Videregående

Detaljer

Leksjon 7. Filer og unntak

Leksjon 7. Filer og unntak 6108 Programmering i Java Leksjon 7 Filer og unntak Del1: 7.1 7.2 Roy M. Istad 2015 Fil permanent lagring Ønsker at program skal kunne ta vare på data over tid, fra en kjøring til den neste (kontra hurtigminnet

Detaljer

JAVA Oppsummering for IS-102. Even Åby Larsen

JAVA Oppsummering for IS-102. Even Åby Larsen JAVA Oppsummering for IS-102 Even Åby Larsen even.larsen@hia.no 26. april 2010 Innhold 1 Innledning 3 2 Hva er et Java program 4 2.1 Kjøring av java programmer................. 4 3 Grammatikk for Java

Detaljer

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 26. februar 2014 1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Vi tar utgangspunkt i dette programmet for

Detaljer

INF2100. Oppgave 1. Oppgave 2 4. Løsningsforslag til oppgaver uke 40 og Se figur 1 på neste side.

INF2100. Oppgave 1. Oppgave 2 4. Løsningsforslag til oppgaver uke 40 og Se figur 1 på neste side. INF2100 Løsningsforslag til oppgaver uke 40 og 41 2014 Oppgave 1 Se figur 1 på neste side. Oppgave 2 4 Her er det mange mulige løsninger her er én: import java.io.*; import java.util.*; class E { public

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 105 Eksamensdag : Mandag 7. juni 1999 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 6 sider (inkludert vedlegg) Vedlegg

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

22.02.2009. Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

22.02.2009. Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java Spørsmål fra forrige forelesning INF1000 Forelesning 7 Operator-presedens i Java? Hvordan virker metodene inword()/inint()/etc. i In-klassen i easyio når vi skriver inn flere verdier på tastaturet? Litt

Detaljer

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold Java RMI Markus Foss Hans-Gunnar Vold Introduksjon Java Remote Method Invocation Tillater metodekall mellom Java virituelle maskiner Introdusert i Java 1.02 Javas svar på RPC, men er objekt orientert,

Detaljer

Oppgave 1 (Programtolkning) INF1000 Eksamen V06. Oppgave 1 (Programtolkning) Oppgave 1 (Programtolkning)

Oppgave 1 (Programtolkning) INF1000 Eksamen V06. Oppgave 1 (Programtolkning) Oppgave 1 (Programtolkning) INF1000 Eksamen V06 1a: Hva blir skrevet ut når programmet nedenfor kjøres? class stringhåndtering{ public static void main (String[] args){ String s = "Lykke til på eksamen"; String t = "Eksamen"; System.out.println(s.indexOf(t));

Detaljer

n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5.

n / ($$ n 0$$/ $  1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5. "# %% & ' ()*,"""). / " %% &%% / ( 0/ " 1 /(232.,..5. 6 7,.5.,. / : ; 5.. )// ).) 8 < ') < 6 6 8 < 8 8 7,.5.,.9 5. 5. 5. 5. 5.. 5..9 /.> DB(?/ ( / (.?/. /?(5@"""6(?( 5@""6 &. A8 6 (."B 3 8 6 ) ("?/& =

Detaljer

Kapittel 6: Arv. Redigert av: Khalid Azim Mughal (khalid@ii.uib.no)

Kapittel 6: Arv. Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kapittel 6: Arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,

Detaljer

Algoritmer og datastrukturer Vedlegg A.4 Filbehandling på char-nivå

Algoritmer og datastrukturer Vedlegg A.4 Filbehandling på char-nivå Vedlegg A.4 Filbehandling på char-nivå Side 1 av 9 Algoritmer og datastrukturer Vedlegg A.4 Filbehandling på char-nivå A.4 Filbehandling på char-nivå A.4.1 Reader-klassene Reader er en abstrakt basisklasse

Detaljer

Dagens tema: Mer av det dere trenger til del 1

Dagens tema: Mer av det dere trenger til del 1 Dagens tema Dagens tema: Mer av det dere trenger til del 1 Hvilke klasser trenger vi? Uttrykk Typer Testutskrifter 12 gode råd Dagens tema Prosjektet Utifra dette AlboC-programmet: int pot2 (int x) { int

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

INF april 2017

INF april 2017 INF1010-20. april 2017 Programmeringsmønstre Patterns Eksempel på bruk av interface Stein Gjessing Universitetet i Oslo 1 1 Problem Spesifikasjon Program 2 Programvare-arkitektur Hvordan programmet er

Detaljer

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det? Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3hus litt mer tips enn i oppgaven I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje

Detaljer

Inf1000 (Uke 10) HashMap og ArrayList

Inf1000 (Uke 10) HashMap og ArrayList Inf1000 (Uke 10) HashMap og ArrayList Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Bibliotekpakker i Java Det er laget mange

Detaljer