INF2120 V2005. Trafikanten+ Innlevering

Størrelse: px
Begynne med side:

Download "INF2120 V2005. Trafikanten+ Innlevering"

Transkript

1 INF2120 V2005 Gruppe 2 Christian Clasén (christrc) Ingunn Rønningen (ieronnin) Kjetil M. Kristiansen (kjetimk) Noushin Mousavi (noushinm) Sjur O. Sundin (sjuros) Trafikanten+ Innlevering

2 Innhold INNHOLD... 2 INNLEDNING... 3 INTENSJON... 3 SYSTEMDEFINISJON... 3 FORUTSETNINGER... 3 REVIDERT SPESIFIKASJON... 4 BRUKSMØNSTERDIAGRAM... 4 KLASSEDIAGRAM... 4 COLLABORATION DIAGRAM... 5 COMPOSITE STRUCTURE... 6 CSTRAFIKANTEN CSSMS... 7 CSSESJON... 8 TILSTANDSMASKINER... 9 SMSMS... 9 SMSESJON IMPLEMENTASJON JAVA DATABASE APPENDIKS A MAIN.JAVA G2MESSAGE.JAVA G2SIMPLEROUTERMEDIATOR.JAVA G2COMPOSITE.JAVA SMSCOMPOSITESTATE.JAVA SMSSTATEMACHINE.JAVA NYSESJONCOMPOSITESTATE.JAVA NYSESJONSTATEMACHINE.JAVA APPENDIKS B APPENDIKS C DATABASEIMPLEMENTASJON CREATE INSERT

3 Innledning Intensjon Vårt trafikkinfosystem, Trafikanten+ (heretter kalt Systemet) skal være et system for brukerne av rutetrafikk, ved at disse skal få informasjon om avganger på en rute, inkludert informasjon om evt. forsinkelser. Bruker skal kunne få informasjon om nærmeste stoppested i hht. sin posisjon (gitt vha PATS), og hvilket tidspunkt neste eller evt ønsket kommunikasjonsmiddel går, evt hvorvidt det er forsinkelser. Systemdefinisjon Systemet er basert på å motta forespørsler fra bruker via et SMSsystem (heretter kalt PATS). Systemet beregner brukers (mobiltelefonens) posisjon, henter så inn data fra en intern database med holdeplassene, etterfulgt av datafangst av dynamiske rutedata fra Trafikanten via Internett. Avslutningsvis returnerer Systemet en melding med avgangsinfo til bruker via PATS. En bruker skal kunne sende SMS med ønsket destinasjon, og få oppgitt informasjon om nærmeste beregnede avreisested og tidspunkt i hht bruksmønsterdiagrammet. Forutsetninger Det forutsettes et SMS-rammeverk (PATS) som skal kunne formidle brukers meldinger til Systemet, samt generere og sende med en id ut ifra brukers telefonnummer. PATS skal også kunne finne brukers posisjon på kommando fra Systemet. Det forutsettes at det finnes en tilgjengelig dynamisk database (Trafikanten) som oppgir sanntidsinformasjon om aktuelle aktive kommunikasjonsmidlers avgangstider, medregnet eventuelle forsinkelser. Det forutsettes at bruker kjenner betingelsene i fht. å sende SMS til Systemet, det være seg kjennskap til korrekt holdeplassnavn og korrekt syntaks i meldingene. 3

4 Revidert spesifikasjon I den originale spesifikasjonen var det definert 4 tjenester. Dette er redusert til en tjeneste. Vi har valgt å kun ta tak i den basistjenesten, som de andre tjenestene kan fungere som supplement til, nemlig at bruker etterspør destinasjon og automatisk får tilsendt nærmeste stoppested og første avgang derfra mot destinasjonen. Bruksmønsterdiagram Systemet baseres på følgende tjeneste: finntrafikkinfoavposisjon() Bruker sender melding(sms) til Systemet som inneholder destinasjon. Systemet returnerer anbefalt avreisested (basert på brukers posisjon), samt neste avreisetidspunkt for gitt rute. Klassediagram Klassediagrammet viser objekter som utfører de ulike operasjoner i Systemet. Som nedenforstående diagrammer vil vise opprettes sesjonsobjekt som instanser av klassen TrafikkInfo. Klassediagrammet ville naturligvis med fordel kunne utvides i tilfelle det var snakk om å utvide tjenestene og/eller Systemet som sådan. 4

5 Collaboration diagram Collaboration-diagrammet viser interaksjonen mellom Systemets aktører: objekt av klassen SMS sesjonsobjekt/instans av klassen TrafikkInfo (Sesjon) holdeplassdatabase og de eksterne aktørene: bruker(mobiltelefon) PATS (SMS-system) Trafikanten (ekstern dynamisk database over avgangstider) 5

6 Composite structure cstrafikanten+ Composite Structure diagrammet viser hvordan aktørene kommuniserer med hverandre. - Brukeren kommuniserer med Systemet via PATS. - PATS er knyttet til objektet SMS og sesjonsobjektene som instansieres av klassen TrafikkInfo. - Systemet kan ha flere sesjoner samtidig som opererer selvstendig ut ifra unike ID er. - Hver sesjon henter ut posisjonen til bruker vha PATS, finner holdeplass i egen database for å til slutt hente ut avgangstider fra Trafikantens dynamiske database. - Avslutningsvis returneres avgangsinfo og holdeplass(avreisested) til bruker via PATS, og tjenesten er utført. 6

7 cssms Diagrammet viser hvordan objektet av klassen SMS kommuniserer med PATS og oppretter sesjonsobjektet som instans av klassen TrafikkInfo. 7

8 cssesjon Diagrammet viser hvordan sesjonsobjektet som instans av klassen TrafikkInfo kommuniserer med hhv PATS, lokal database og Trafikantens dynamiske database. 8

9 Tilstandsmaskiner smsms Diagrammet :smsms viser hvordan SMS venter på melding fra bruker og oppretter en sesjon i det øyeblikket dette skjer. 9

10 smsesjon Diagrammet :smsesjon viser hvordan sesjonen etter å ha blitt opprettet sjekker syntaks. Ved feil syntaks avsluttes sesjonen ved at en feilmelding sendes i retur. Dersom syntaks er korrekt etterspørres brukers posisjon via PATS. Når posisjonen er funnet etterspørres hhv destinasjonsholdeplass samt nærmeste holdeplass i fht brukers posisjon fra Systemets egne database. Når holdeplasser er funnet etterspørres avgangstider via Trafikanten før returmelding avslutningsvis sendes tilbake til bruker via PATS. 10

11 Implementasjon Java Systemet er implementert i Java og benytter rammeverket JavaFrame. Vi tar utgangspunkt i at bruker ikke vet sin nærmeste holdeplass, og kun sender ønsket ankomststed til systemet. F.eks. sender bruker kun «Helsfyr» til tjenesten. Tjenesten foretar deretter en beregning av brukers posisjon i henhold til databasen med oversikt over holdeplasser og finner den holdeplassen som er nærmest bruker. Deretter gjøres en forespørsel til trafikanten med forespørsel om de neste avganger til brukers ønskede destinasjon ifra den holdeplassen som bruker er nærmest. Bruker får deretter en returmelding med informasjon om hva som er nærmeste holdeplass og når neste avgang til ønsket destinasjon er ifra den holdeplassen. Dersom det ikke er logisk mulig å reise til ønsket destinasjon, returnerer systemet en melding om dette. Database Vi valgte å ha to tabeller i databasen, en for Posisjon, og en for Holdeplasser. Dette fordi det vil spare dobbeltlagring om systemet skal utvides til å støtte flere enn en linje. I begge tabellene valgte vi ha med et retningsattributt for å gjøre det enklere å identifisere hvilken retning bussen kjører. I tabellen Holdeplasser valgte vi også å ha med et løpenummer for holdeplassene for å lettere regne ut hvilken retning vår bruker ville kjøre. Dette fordi holdeplassnumrene var like i begge retninger for samme holdeplassnavn. Skranken i begge tabellene er holdeplassnummer, retning, og linje-id som utgjør primærnøkkelen, og alltid vil være en unik tuppell. 11

12 Appendiks A Main.java package g2_ensesjon; /** kjetimk */ import se.ericsson.eto.norarc.javaframe.*; // the JavaFrame framework import src.smsinputmediator; import src.smsoutputmediator; import no.uio.ifi.inf2120.trafikanten.*; public class Main { public static String username = "sjurs"; // user your own user name private static String password = "sjurs"; // user the same as your user name private static String path = " private static String inpath = " Composite G2Composite; // our example system Mediator G2DynIn; // the example system has one input mediator Mediator G2DynOut;// the example system has one output mediator Mediator G2SmsIn; Mediator G2SmsOut; %

13 public Main() { Trace trc = null; Scheduler scheduler; if (trc!= null) scheduler = new Scheduler(trc); // with socket connected Trace object else scheduler = new Scheduler(); // with default Trace object Thread t1 = new Thread(scheduler); // associating the Scheduler with a Thread // Required: create the edge mediators // Example: //fracompositen = new Mediator(); //tilcompositen = new PtnSimpleRouterMediator(); G2SmsOut = new SmsOutputMediator(path, username, password); G2SmsIn = new SmsInputMediator(inpath, username, password, 2000); G2DynIn = new Mediator(); G2DynOut = new DynOutMediator(G2DynIn); //G2Composite g2composite = new G2Composite(scheduler, fracompositen, tilcompositen, smsinput, smsoutput); G2Composite g2composite = new G2Composite(scheduler, G2SmsIn, G2SmsOut, G2DynIn, G2DynOut); // Required: start the JavaFrame machinery when the whole system is initialized t1.start(); System.out.println("*********** JavaFrame starting ***************"); public static void main (String[]args){ Main main = new Main(); 13

14 G2Message.java package g2_ensesjon; import se.ericsson.eto.norarc.javaframe.*; /** Purpose: define a class for a new message type. * Example class PtnMessage: */ public class G2Message extends Message { //Optional: Definition of parameters of your message type //public int i; // Example: PtnMessage has a int parameter i public String x; // Example: PtnMessage has a String parameter x /** Required: Message type constructor. Parameters are optional. */ public G2Message(String x) { super(); //i = j; // Example: the message parameter i is initialized this.x = x; // Example: the message parameter x is initialized /** Optional: Overriding messagecontent() to describe the parameters of the message (for trace purposes).*/ public String messagecontent() { return "(x)"; // Example: the values of i and x are given /** Optional: The rest of this pattern is an alternative way to generate and * destroy messages (may reduce overhead). * <br> In stead of "new PtnMessage(..)" use "PtnMessage.New(..)". * <br> In stead of letting the garbage colletor deallocate a message % 14

15 * use an explicit "PtnMessage.del()". * <br> If this option is used, the following shall be included as it is except: * <br> - "PtnMessage" replaced by your message type name. * <br> - The parameters to "New" depend on your message type. * <br> - If the variable names "freelist" or "next" are already in use (eg as * message parameter), they must be replaced below with something else. */ private static G2Message freelist; // top of the freelist stack private G2Message next; // the list pointer /** Create a message.*/ synchronized final public static G2Message New(int par1, String par2) { G2Message returnmessage; if (freelist!= null) {// take a message from the freelist returnmessage = freelist; freelist = freelist.next; // Optional: initialize the message // returnmessage.i = par1; returnmessage.x = par2; else // freelist empty, new message must be generated returnmessage = new G2Message(par2); returnmessage.next = returnmessage; /* designating live object*/ return returnmessage; % 15

16 /** Return the message to the freelist (synchronized with static New). */ synchronized final private static void delmsg(g2message sig) { if (sig.next==sig) { // check that it is live sig.next = freelist; freelist = sig; else { System.err.println("**PtnMessage.del: Object not live"); /** Delete the message ie return it to the freelist. */ final public void del() { delmsg(this); 16

17 G2SimpleRouterMediator.java package g2_ensesjon; import java.util.hashmap; import se.ericsson.eto.norarc.javaframe.*; /* Purpose: define a class for a new SimpleRouterMediator. Example class PtnSimpleRouterMediator:*/ public class G2SimpleRouterMediator extends SimpleRouterMediator { HashMap sesjoner; Mediator tilsesjon; /** Required: The constructor.*/ public G2SimpleRouterMediator(Mediator tilsesjon) { super(); this.tilsesjon = tilsesjon; sesjoner = new HashMap(); /** Required: Override forward to describe the routing logic. * The received Message is forwarded to one of the mediators in the mediatorlist of this SimpleRouterMediator. * Example: based on the integer parameter i of PtnMessage the message is sent to the first or the last mediator in the * mediatorlist. */ public void forward(message sig) { /* * Trenger her å lete i HashMapen sesjoner for å finne ut hvilken sesjon man skal * rute meldingen til */ 17

18 G2Composite.java package g2_ensesjon; /** kjetimk */ import java.util.hashmap; import se.ericsson.eto.norarc.javaframe.*; public class G2Composite extends Composite { Scheduler sched; /** Required: Setup the composite architecture. * Invariant: all of the outside Mediators exist already, none of the inner ones * <br> The parameters are: * <br> 1. Scheduler for the inner ActiveObjects (not mandatory, but normal) * <br> 2. the outside Mediators on the periphery of the Composite * <br> 3. input values for local variables that normally act as "write once, read several times" (none in this example) */ /* * trenger å lagre sesjonene for å kunne sende sms til riktig sesjon */ HashMap sesjoner; protected Mediator SmsSmsIn; // the example system has one input mediator protected Mediator SmsSmsOut;// the example system has one output mediator protected Mediator SesjonSmsIn; protected Mediator SesjonSmsOut; protected Mediator SesjonDynIn; % 18

19 protected Mediator SesjonDynOut; protected Mediator G2DynIn; protected Mediator G2DynOut; protected Mediator G2SmsIn; protected Mediator G2SmsOut; protected Mediator SesjonDbIn; protected Mediator SesjonDbOut; public G2Composite(Scheduler sched, Mediator G2SmsIn, Mediator G2SmsOut, Mediator G2DynIn, Mediator G2DynOut) { super(); // Required: call super-class constructor this.sched = sched; // Initialize local variables // (nothing in this example) // Create inner ActiveObjects by doing the following for each one: // a) create the Mediators around that ActiveObject //Mediator minput=new Mediator(); // an input mediator //Mediator moutput=new Mediator(); // an output mediator // b) create the ActiveObject itself // c) include the ActiveObject in the list of this Composite SmsSmsIn = new Mediator(); SmsSmsOut = new Mediator(); this.g2dynin = G2DynIn; this.g2dynout = G2DynOut; this.g2smsin = G2SmsIn; this.g2smsout = G2SmsOut; // Connect the outer mediators with the inner ones G2SmsIn.addAddress(SmsSmsIn); % 19

20 SesjonSmsIn = new Mediator(); SesjonSmsOut = new Mediator(); SesjonDynIn = new Mediator(); SesjonDynOut = new Mediator(); SesjonDbIn = new Mediator(); SesjonDbOut = new Mediator(); SesjonDbOut.addAddress(SesjonDbIn); SmsSmsOut.addAddress(SesjonSmsIn); SesjonSmsOut.addAddress(G2SmsOut); SesjonDynOut.addAddress(G2DynOut); G2DynIn.addAddress(SesjonDynIn); addactiveobject(new SmsStateMachine(sched, SmsSmsIn, SmsSmsOut, this)); addactiveobject(new NySesjonStateMachine(sched, SesjonSmsIn, SesjonSmsOut, SesjonDynIn, SesjonDynOut, SesjonDbIn, SesjonDbOut )); System.out.println("siste linje i G2Composite konstuktøren"); 20

21 SMSCompositeState.java /** kjetimk */ package g2_ensesjon; import se.ericsson.eto.norarc.javaframe.*; public class SmsCompositeState extends CompositeState { // Vi har bare en state static State ventpåsms = new State("vent på sms"); G2Composite g2; // test.. public void setg2composite(g2composite g2) { this.g2 = g2; // Konstruktøren public SmsCompositeState(String sn) { super(sn); ventpåsms.enclosingstate = this; public void enterstate(statemachine curfsm) { SmsStateMachine csm = (SmsStateMachine)curfsm; entry(curfsm); % 21

22 ventpåsms.enterstate(csm); System.out.println("er i etter enterstate SmsCompositeState"); protected boolean exectrans(message sig, State st, StateMachine curfsm) { Message tempsms = sig; System.out.println("første linje i smscompositestate exectrans"); SmsStateMachine csm = (SmsStateMachine)curfsm; String report = "SM" + csm.mylocalvariable + " in state " + st.statename(); if(st == ventpåsms) { System.out.println("er i tilstanden ventpåsms"); System.out.println("Her skal vi gå til sesjonsm"); G2Message hei = new G2Message("hei"); output(tempsms, csm.smssmsout, curfsm); // denne sender smsen vidre.. System.out.println("sender signal til sesjon..."); samestate(curfsm); return true; System.out.println("dette kommer ikke?"); return false; 22

23 SMSStateMachine.java /** kjetimk */ package g2_ensesjon; import se.ericsson.eto.norarc.javaframe.*; public class SmsStateMachine extends StateMachine { static SmsCompositeState states = new SmsCompositeState("SmsCompositeState"); protected G2Composite g2; protected Mediator SmsSmsIn; //Mediator tilsesjon; protected Mediator SmsSmsOut; // Optional: Declare local variables and timers // Example: public int mylocalvariable; public TimerMsg ptntimermsg = new TimerMsg(10000, this); protected void execstarttransition() { // Optional: StartTransition code // Required: System.out.println("er i SmsStateMachine exectrans"); states.enterstate(this); % 23

24 public SmsStateMachine(Scheduler sched, Mediator SmsSmsIn, Mediator SmsSmsOut, G2Composite g2) { super(sched); // Required: calling the StateMachine constructor // Example: initialize the local variables //this.mylocalvariable = mylocalvariable; // Example: set up connection from in-mediators to this State Machine //smsstates.setg2composite(g2); //SmsSmsOut.addAddress(g2.SesjonSmsIn); // rutermadiator //Smyinmediator.addAddress(this); //myoutmediator.addaddress(this); // Example: set up out-mediator references //this.tilsesjon = tilsesjon; this.g2 = g2; this.smssmsout = SmsSmsOut; SmsSmsIn.addAddress(this); System.out.println("siste linje i smsstatemachine konstruktøren"); 24

25 NySesjonCompositeState.java /** kjetimk */ package g2_ensesjon; import se.ericsson.eto.norarc.javaframe.*; import src.*; import no.uio.ifi.inf2120.trafikanten.messages.*; import no.uio.ifi.inf2120.trafikanten.*; public class NySesjonCompositeState extends CompositeState { static State sjekksyntaks = new State("Sjekk syntaks"); static State ventpåpats = new State("vent på Pats"); static State ventpådb = new State("vent på DB"); static State ventpåtrafikanten = new State("vent på Trafikanten"); // Konstruktøren public NySesjonCompositeState(String sn) { super(sn); sjekksyntaks.enclosingstate = this; ventpåpats.enclosingstate = this; ventpådb.enclosingstate = this; ventpåtrafikanten.enclosingstate = this; public void enterstate(statemachine curfsm) { System.out.println("første linje i NySesjonCompositeState enterstate"); NySesjonStateMachine csm = (NySesjonStateMachine)curfsm; 25

26 entry(curfsm); sjekksyntaks.enterstate(csm); System.out.println("er i enterstate NySesjonCompositeState"); protected boolean exectrans(message sig, State st, StateMachine curfsm) { System.out.println("første linje i NySesjonCompositeState exectrans"); NySesjonStateMachine csm = (NySesjonStateMachine)curfsm; boolean syntaks = true; if(st == sjekksyntaks) { System.out.println("er i tilstanden sjekksyntaks"); /** * trenger en metode for å sjekke syntaks - hvis ok sett variabelen syntaks til true */ if(syntaks) { Sms smsobj=(sms)sig; csm.smsuserid = smsobj.getfrom(); csm.smstext = smsobj.getmessage(); csm.brukerholdeplass = csm.smstext.substring(18); System.out.println(csm.smstext); output(new Sms(csm.smsuserID), csm.sesjonsmsout, csm); ventpåpats.enterstate(csm); % 26

27 else if (!syntaks) { //send melding til bruker, feil bruk samestate(curfsm); return true; if(st == ventpåpats) { System.out.println("er i tilstanden ventpåpats"); // få posisjon fra pats Sms smsobj=(sms)sig; csm.smstext = smsobj.getmessage(); int ix = csm.smstext.indexof("<breddegrad>"); csm.lengdegrad = csm.smstext.substring(ix+12,ix+19); ix = csm.smstext.indexof("<lengdegrad>"); csm.breddegrad = csm.smstext.substring(ix+12,ix+20); // se på infoen vi får fra pats System.out.println("Lengdegrad : " + csm.lengdegrad);//grunnet feil info i filer System.out.println("Breddedegrad : " + csm.breddegrad); // her kommer kallet til db csm.fåfradb(csm.lengdegrad, csm.breddegrad); output(sig, csm.sesjondbout, curfsm); ventpådb.enterstate(curfsm); return true; if(st == ventpådb) { System.out.println("er i tilstanden ventpådb"); // få holdeplass fra db System.out.println("Holdeplass: " + csm.holdeplass); % 27

28 // Trafikanten kallet kommer her output(new DynRequest("SN$"+csm.holdeplassnr), csm.sesjondynout, csm); ventpåtrafikanten.enterstate(curfsm); return true; if(st == ventpåtrafikanten) { System.out.println("er i tilstanden ventpåtrafikanten"); // få dyninfo fra trafikanten String formatertavgang="999999"; DynInfo dd = (DynInfo) sig; System.out.println(dd.getStatus()); DynRoute[] routes = dd.getdynroutes(); int atemp=999999; int btemp=atemp; int i = 0; while(i < routes.length){ if(routes[i].getdestinationstop().equalsignorecase(csm.endestopp)){ System.out.println(routes[i].getDestinationStop()); String avgang = routes[i].getexpecteddepaturetime(); avgang = avgang.substring(11,19); String oppsattavgang = routes[i].getscheduleddepaturetime(); System.out.println("oppsatt : "+ oppsattavgang); String ssoppsatt = oppsattavgang.substring(11, 13) + oppsattavgang.substring(14, 16); System.out.println("subOppsatt : "+ ssoppsatt); String ss = avgang.substring(0,2)+avgang.substring(3,5); int oppsatt = Integer.parseInt(ssOppsatt); int avgangstid = Integer.parseInt(ss); if(oppsatt < btemp) btemp = oppsatt; if (avgangstid < atemp) atemp = avgangstid; System.out.println(oppsatt); % 28

29 System.out.println(avgangstid); i++; System.out.println("\nminste: "+atemp); formatertavgang = String.valueOf(atemp); String formatertbtemp = String.valueOf(btemp); formatertbtemp = formatertbtemp.substring(0, 2)+ ":"+formatertbtemp.substring(2,4); formatertavgang = formatertavgang.substring(0,2)+":"+formatertavgang.substring(2,4); // send sms til bruker String nysvar = csm.svar + csm.holdeplass + ". Neste avgang derfra til "+csm.brukerholdeplass + " er oppsatt til kl "+ formatertbtemp + " og er forventet å gå kl " + formatertavgang; String feilrute = csm.svar + csm.holdeplass + ". Det er ikke mulig å reise derfra til "+csm.brukerholdeplass; if(csm.endestopp.equals("foo")) { output(new Sms(feilrute, csm.smsuserid, "2034" ), csm.sesjonsmsout, csm); else //gyldig rute{ output(new Sms(nysvar, csm.smsuserid, "2034" ), csm.sesjonsmsout, csm); sjekksyntaks.enterstate(csm); return true; return false; 29

30 NySesjonStateMachine.java /** kjetimk */ package g2_ensesjon; import oracle.jdbc.driver.*; import java.sql.*; import java.util.*; import se.ericsson.eto.norarc.javaframe.*; public class NySesjonStateMachine extends StateMachine { static NySesjonCompositeState states = new NySesjonCompositeState("NySesjonCompositeState"); protected Mediator SesjonSmsIn; protected Mediator SesjonSmsOut; protected Mediator SesjonDynIn; protected Mediator SesjonDynOut; protected Mediator SesjonDbIn; protected Mediator SesjonDbOut; // Optional: Declare local variables and timers // Example: //public int mylocalvariable; //public TimerMsg ptntimermsg = new TimerMsg(10000, this); public String smsuserid; // the identification (telephone number or ID) of the SMS user public String smstext; // the sms message text % 30

31 public String breddegrad; // positioning info latitude public String lengdegrad; // positioning info longitude public String holdeplass; // holdeplassen vi får fra db public String holdeplassnr; public String endestopp; public String svar = "Din nærmeste holdeplass for rute 37 er "; public String brukerholdeplass; public int holdeplassløpenr; public int holdeplassløpenr2; public String kjøreretning="0"; public int temphnr; public int hnr1 = 0; public int hnr2 = 0; protected void execstarttransition() { // Optional: StartTransition code // Required: System.out.println("er i NysesjonStateMachine exectrans"); states.enterstate(this); System.out.println("er i etter enterstate NySesjonStateMachine"); /******************oracle **************/ public static void registreroracle(){ try{ DriverManager.registerDriver( new oracle.jdbc.driver.oracledriver() ); catch (Exception e ) { System.out.println("registrer feiler"); % 31

32 public static Statement getstatement() throws Exception { Properties props = new Properties(); props.put("user", "ieronnin"); props.put("password", "kaffe"); String url = "jdbc.:oracle:thin:@delphinium.ifi.uio.no:1521:ifiora"; Connection con = DriverManager.getConnection( url, props); return con.createstatement(); public String fåfradb(string lengde, String bredde) { String nærmeste="foo"; String tempnærmeste, templende, tempbredde, r2temp="", retning="0"; double avstand=9999.0, tempavstand; try { registreroracle(); Statement s = getstatement(); String spørring = "select DISTINCT h.navn, h.nr, h.retning, bredde, lengde, h.hplnr from posisjon p, holdeplasser h where h.hplnr = p.hplnr"; String spørring2 = "select DISTINCT h.navn, h.nr, h.retning, bredde, lengde, h.hplnr from posisjon p, holdeplasser h where h.hplnr = p.hplnr"; ResultSet r = s.executequery(spørring); while (r.next()) { int temphplasslnr; tempavstand = beregnholdeplass(lengde, bredde, r.getstring("lengde"), r.getstring("bredde")); if (tempavstand < avstand) { avstand = tempavstand; nærmeste = r.getstring("navn"); % 32

33 nærmeste = nærmeste.trim(); //databasen legger på masse whitespace holdeplassnr = r.getstring("hplnr"); retning = r.getstring("retning"); holdeplassløpenr = Integer.parseInt(r.getString("nr")); System.out.println("Holdeplassløpenr: "+holdeplassløpenr); temphnr = Integer.parseInt(holdeplassnr); String spørring3 = "select nr from holdeplasser where hplnr = "+temphnr; System.out.println("Hnr før r3: "+temphnr); ResultSet r3 = s.executequery(spørring3); while(r3.next()){ if(hnr1 == 0) hnr1 = Integer.parseInt(r.getString("nr")); if(hnr1!= 0) hnr2 = Integer.parseInt(r.getString("nr")); holdeplass = nærmeste; boolean fortsett = true; ResultSet r2 = s.executequery(spørring2); while (r2.next() && fortsett) { retning = "0"; int stemp; String jalla = r2.getstring("navn").substring(0,brukerholdeplass.length()); if(brukerholdeplass.equalsignorecase(jalla)) { System.out.println("Holdeplass: "+holdeplass+" løpenr: "+holdeplassløpenr); stemp = Integer.parseInt(r2.getString("nr")); System.out.println(r2.getString("navn").trim()+" løpenr: "+stemp); brukerholdeplass = r2.getstring("navn").trim(); % 33

34 if (hnr1 <= 30) { if(stemp > hnr1 & stemp <= 30) { retning = "1"; kjøreretning = retning; fortsett = false; if (hnr1 > 30){ if(stemp > hnr1 & stemp > 30) { retning = "2"; kjøreretning = retning; fortsett = false; if (hnr2 <= 30 & hnr2 > 0) { if(stemp > hnr2 & stemp <= 30) { retning = "1"; kjøreretning = retning; fortsett = false; if (hnr2 > 30){ if(stemp > hnr2 & stemp > 30) { retning = "2"; kjøreretning = retning; fortsett = false; % 34

35 retning = kjøreretning; if (retning.equals("0")) endestopp = "foo"; if (retning.equals("1")) endestopp = "Nydalen T"; if (retning.equals("2")) endestopp = "Helsfyr T"; catch( Exception e ) { System.out.println("feil "+e); System.out.println("Din nærmeste holdeplass er "+holdeplass); return lengde; /******************slutt Oracle***********************/ public NySesjonStateMachine(Scheduler sched, Mediator SesjonSmsIn, Mediator SesjonSmsOut, Mediator SesjonDynIn, Mediator SesjonDynOut, Mediator SesjonDbIn, Mediator SesjonDbOut){ super(sched); // Required: calling the StateMachine constructor // Example: initialize the local variables //this.mylocalvariable = mylocalvariable; // Example: set up connection from in-mediators to this State Machine //this.frasms = frasms; //frasms.addaddress(this); this.sesjonsmsout = SesjonSmsOut; this.sesjondynout = SesjonDynOut; this.sesjondbout = SesjonDbOut; SesjonSmsIn.addAddress(this); SesjonDynIn.addAddress(this); SesjonDbIn.addAddress(this); //smsoutmediator.addaddress(this); //DynOutputmediator.addAddress(this); //DynInputmediator.addAddress(this); % 35

36 // Example: set up out-mediator references //this.myoutmediator = myoutmediator; System.out.println("siste linje i NySesjonStateMachine konstruktøren"); private double beregnholdeplass(string brukerlengde, String brukerbredde, String hplasslengde, String hplassbredde){ boolean blindern = true; boolean stuertskolen = false; boolean maskinistskolen = false; if (!blindern){ String blengde = brukerlengde.substring(1); String bbredde = brukerbredde.substring(2); int b2lengde = Integer.parseInt(bLengde) - 33; int b2bredde = Integer.parseInt(bBredde) + 134; brukerlengde = "N"+String.valueOf(b2Lengde); brukerbredde = "E0"+String.valueOf(b2Bredde); if(stuertskolen){ brukerlengde = "N595435"; brukerbredde = "E "; if(maskinistskolen){ brukerlengde = "N595438"; brukerbredde = "E "; double avstand=0.0; double alath = Double.parseDouble(brukerLengde.substring(1,3)); % 36

37 double alatm = Double.parseDouble(brukerLengde.substring(3,5)); double alats = Double.parseDouble(brukerLengde.substring(5)); double alongh = Double.parseDouble(brukerBredde.substring(2,4)); double alongm = Double.parseDouble(brukerBredde.substring(4,6)); double alongs = Double.parseDouble(brukerBredde.substring(6)); double blath = Double.parseDouble(hplassLengde.substring(1,3)); double blatm = Double.parseDouble(hplassLengde.substring(3,5)); double blats = Double.parseDouble(hplassLengde.substring(5)); double blongh = Double.parseDouble(hplassBredde.substring(2,4)); double blongm = Double.parseDouble(hplassBredde.substring(4,6)); double blongs = Double.parseDouble(hplassBredde.substring(6)); avstand = CalcDistance(alath, alatm, alats, alongh, alongm, alongs, blath, blatm, blats, blongh, blongm, blongs); return avstand; /*Beregner nærmeste holdeplass vha Great Circle Distance. Utgangspunktet for koden er skrevet * av Kenneth Lee, */ private double CalcDistance(double ALatHours, double ALatMinutes, double ALatSeconds, double ALongHours, double ALongMinutes, double ALongSeconds, double BLatHours, double BLatMinutes, double BLatSeconds, double BLongHours, double BLongMinutes, double BLongSeconds) { double l1 = 0.0D; double n1 = 0.0D; double l2 = 0.0D; double n2 = 0.0D; double c = 0.0D; double a = 0.0D; double d = 0.0D; double r = D; //jordklodens radius l1 = ALatHours + ALatMinutes/ ALatSeconds/3600.0; n1 = ALongHours + ALongMinutes/ ALongSeconds/3600.0; % 37

38 l2 = BLatHours + BLatMinutes/ BLatSeconds/3600.0; n2 = BLongHours + BLongMinutes/ BLongSeconds/3600.0; // Convert to radians l1 = l1*math.pi/180; n1 = n1*math.pi/180; l2 = l2*math.pi/180; n2 = n2*math.pi/180; c = ((Math.sin(l1))*(Math.sin(l2))) + ((Math.cos(l1))*(Math.cos(l2))*(Math.cos(n2 - n1))); a = Math.acos(c); // in radians d = a * r; return d; Appendiks B Kjørbar kode er vedlagt sammen med denne forsendelsen. Filnavn: Trafikanten+INF2120V2005Gruppe2.zip 38

39 Appendiks C Databaseimplementasjon Databasen ble implementert med følgende CREATE og INSERT statements: CREATE CREATE TABLE holdeplasser ( nr int, hplnr int NOT NULL, navn char(50), linjeid int NOT NULL, retning int NOT NULL, PRIMARY KEY (hplnr, retning, linjeid) ); CREATE TABLE posisjon ( hplnr int NOT NULL, retning int NOT NULL, linjeid int NOT NULL, xk int NOT NULL, yk int NOT NULL, bredde char(10) NOT NULL, lengde char(10) NOT NULL, PRIMARY KEY (hplnr, retning, linjeid) ); 39

40 INSERT /*holdeplasser - vestlig retning*/ INSERT INTO holdeplasser values(1, , 'Helsfyr (i Etterstadsletta)', 37, 1); INSERT INTO holdeplasser values(2, , 'Maskinistskolen', 37, 1); INSERT INTO holdeplasser values(3, , 'Etterstadgata', 37, 1); INSERT INTO holdeplasser values(4, , 'Vålerenga', 37, 1); INSERT INTO holdeplasser values(5, , 'Galgeberg (i Strømsveien)', 37, 1); INSERT INTO holdeplasser values(6, , 'Harald Hårdrådes plass', 37, 1); INSERT INTO holdeplasser values(7, , 'Oslo Gate', 37, 1); INSERT INTO holdeplasser values(8, , 'Politihuset', 37, 1); INSERT INTO holdeplasser values(9, , 'Tøyengata', 37, 1); INSERT INTO holdeplasser values(10, , 'Grønlands torg (i Tøyenbekken)', 37, 1); INSERT INTO holdeplasser values(11, , 'Jernbanetorget T (Biskop Gunn.gt)', 37, 1); INSERT INTO holdeplasser values(12, , 'Stortorvet (ved Glasmagasinet)', 37, 1); INSERT INTO holdeplasser values(13, , 'Apotekergata', 37, 1); INSERT INTO holdeplasser values(14, , 'Nordahl Bruns gate (i Oslo)', 37, 1); INSERT INTO holdeplasser values(15, , 'Bjerregaards gate', 37, 1); INSERT INTO holdeplasser values(16, , 'St. Hanshaugen (v/markus krk)', 37, 1); INSERT INTO holdeplasser values(17, , 'Colletts gate', 37, 1); INSERT INTO holdeplasser values(18, , 'Lovisenberg', 37, 1); INSERT INTO holdeplasser values(19, , 'Tannlegehøyskolen', 37, 1); INSERT INTO holdeplasser values(20, , 'Lindern', 37, 1); INSERT INTO holdeplasser values(21, , 'Nordre gravlund', 37, 1); INSERT INTO holdeplasser values(22, , 'Sagene kirke (i Arendalsgt)', 37, 1); INSERT INTO holdeplasser values(23, , 'Advokat Dehlis plass', 37, 1); INSERT INTO holdeplasser values(24, , 'Sarpsborggata', 37, 1); INSERT INTO holdeplasser values(25, , 'Bjølsen (i Bergensgata)', 37, 1); INSERT INTO holdeplasser values(26, , 'Badebakken', 37, 1); INSERT INTO holdeplasser values(27, , 'Kristoffer Aamots bro', 37, 1); INSERT INTO holdeplasser values(28, , 'Kristoffer Aamots gate', 37, 1); INSERT INTO holdeplasser values(29, , 'Gullhaugveien', 37, 1); INSERT INTO holdeplasser values(30, , 'Nydalen T [buss]', 37, 1); /*holdeplasser - østlig retning*/ INSERT INTO holdeplasser values(31, , 'Nydalen T [buss]', 37, 2); INSERT INTO holdeplasser values(32, , 'Badebakken', 37, 2); INSERT INTO holdeplasser values(33, , 'Bjølsen (i Bergensgata)', 37, 2); INSERT INTO holdeplasser values(34, , 'Advokat Dehlis plass', 37, 2); INSERT INTO holdeplasser values(35, , 'Bentsebrua', 37, 2); INSERT INTO holdeplasser values(36, , 'Sagene (i Kierschowsgt)', 37, 2); INSERT INTO holdeplasser values(37, , 'Lindern', 37, 2); INSERT INTO holdeplasser values(38, , 'Tannlegehøyskolen', 37, 2); INSERT INTO holdeplasser values(39, , 'Lovisenberg', 37, 2); INSERT INTO holdeplasser values(40, , 'Colletts gate', 37, 2); INSERT INTO holdeplasser values(41, , 'St. Hanshaugen (v/markus krk)', 37, 2); INSERT INTO holdeplasser values(42, , 'Stensberggata', 37, 2); INSERT INTO holdeplasser values(43, , 'Nordahl Bruns gate (i Oslo)', 37, 2); INSERT INTO holdeplasser values(44, , 'Apotekergata', 37, 2); INSERT INTO holdeplasser values(45, , 'Stortorvet (ved Glasmagasinet)', 37, 2); INSERT INTO holdeplasser values(46, , 'Jernbanetorget T (Biskop Gunn.gt)', 37, 2); INSERT INTO holdeplasser values(47, , 'Bussterm. Grønland (Tollboden)', 37, 2); INSERT INTO holdeplasser values(48, , 'Grønlands torg (i Tøyenbekken)', 37, 2); INSERT INTO holdeplasser values(49, , 'Tøyengata', 37, 2); INSERT INTO holdeplasser values(50, , 'Politihuset', 37, 2); INSERT INTO holdeplasser values(51, , 'Oslo Gate', 37, 2); INSERT INTO holdeplasser values(52, , 'Harald Hårdrådes plass', 37, 2); INSERT INTO holdeplasser values(53, , 'Galgeberg (i Strømsveien)', 37, 2); INSERT INTO holdeplasser values(54, , 'Vålerenga', 37, 2); INSERT INTO holdeplasser values(55, , 'Etterstadgata', 37, 2); INSERT INTO holdeplasser values(56, , 'Stuertskolen', 37, 2); INSERT INTO holdeplasser values(57, , 'Etterstad vest', 37, 2); INSERT INTO holdeplasser values(58, , 'Etterstad sør', 37, 2); INSERT INTO holdeplasser values(59, , 'Etterstadkroken', 37, 2); INSERT INTO holdeplasser values(60, , 'Helsfyr (i Etterstadsletta)', 37, 2); 40

41 /*posisjoner vestlig retning*/ INSERT INTO posisjon values( , 1, 37, , , 'N595438', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595437', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595433', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595430', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595429', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595432', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595438', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595446', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595443', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595446', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595449', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595458', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595512', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595523', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595530', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595538', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595553', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595559', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595605', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595615', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595618', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595621', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595631', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595639', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595647', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595650', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595651', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595658', 'E '); INSERT INTO posisjon values( , 1, 37, , , 'N595659', 'E '); /*posisjoner østlig retning*/ INSERT INTO posisjon values( , 2, 37, , , 'N595659', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595646', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595636', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595624', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595617', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595617', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595606', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595601', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595552', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595539', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595528', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595521', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595509', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595456', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595448', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595445', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595442', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595443', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595446', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595439', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595432', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595429', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595430', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595438', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595435', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595427', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595429', 'E '); INSERT INTO posisjon values( , 2, 37, , , 'N595437', 'E '); 41

INF2120 V2005. Gruppe 2 christrc ieronnin kjetimk noushinm sjuros. Trafikanten+ Innlevering

INF2120 V2005. Gruppe 2 christrc ieronnin kjetimk noushinm sjuros. Trafikanten+ Innlevering INF2120 V2005 Gruppe 2 christrc ieronnin kjetimk noushinm sjuros Trafikanten+ Innlevering 2 29.04.2005 Intensjon Vårt trafikkoppfølgingssystem skal være et system for brukerne av rutetrafikk, ved at disse

Detaljer

Tilstandsmaskiner med UML og Java

Tilstandsmaskiner med UML og Java Tilstandsmaskiner med UML og Java DAT2160 DAT2160 Høst Høst 2002 2002 Tilstandsmaskiner Tilstandsmaskiner med med UML UML og og Java Java Hva er en (endelig) tilstandsmaskin? En tilstandsmaskin kan sees

Detaljer

Fra uryddig verden til strukturert stoppestedsdatabase

Fra uryddig verden til strukturert stoppestedsdatabase Fra uryddig verden til strukturert stoppestedsdatabase Gerhard Skagestein 6. juni 2005 INF 220 7-Jun-05 INF220 Prosjekt i modellering Vi ser bare rapportene... Rapport Rapport3 Rapport2 INF 220 Informasjonssystem

Detaljer

Vårt system kan kjøres ved å skrive. STUD1 konto fredo 37 (holdeplass)

Vårt system kan kjøres ved å skrive. STUD1 konto fredo 37 (holdeplass) 1 Vårt system kan kjøres ved å skrive STUD1 konto fredo 37 (holdeplass) Holdeplass er frivillig. Dersom man kun sender linjenr finner systemet den nærmeste holdeplassen. Systemet returnerer de 3 neste

Detaljer

INF 2120 drop 3. Trafikanten plus. Group 4. danielmw, ronnieo, naimaa, arep, andeba

INF 2120 drop 3. Trafikanten plus. Group 4. danielmw, ronnieo, naimaa, arep, andeba INF 2120 drop 3 Trafikanten plus Group 4 danielmw, ronnieo, naimaa, arep, andeba Index INF 2120 drop 3... 1 Index... 2 Introduksjon med forutsetninger... 3 Endringer i designmodeller fra drop 2:... 3 Composite

Detaljer

Innholdsfortegnelse INNHOLDSFORTEGNELSE... 2 REVISJONSOVERSIKT...4 INTRODUKSJON MED FORUTSETNINGER... 5

Innholdsfortegnelse INNHOLDSFORTEGNELSE... 2 REVISJONSOVERSIKT...4 INTRODUKSJON MED FORUTSETNINGER... 5 1 Innholdsfortegnelse INNHOLDSFORTEGNELSE... 2 REVISJONSOVERSIKT...4 INTRODUKSJON MED FORUTSETNINGER... 5 FRA LEVERANSE 1 (GRUPPE 2)...5 TILLEGG I FORUTSETNINGER... 5 REVIDERT UTGAVE AV SPESIFIKASJON FRA

Detaljer

INF 2120 PROSJEKT: <DROP 3 GRUPPE 7> ATLE WANDSVIK DAMIR NEDIC SOHAIL AHMED CHAUDRY LARS ANTHONY MAPOY FOZIA SAEED

INF 2120 PROSJEKT: <DROP 3 GRUPPE 7> ATLE WANDSVIK DAMIR NEDIC SOHAIL AHMED CHAUDRY LARS ANTHONY MAPOY FOZIA SAEED INF 2120 PROSJEKT: ATLE WANDSVIK DAMIR NEDIC SOHAIL AHMED CHAUDRY LARS ANTHONY MAPOY FOZIA SAEED 1. INTRODUKSJON Traffikanten pluss systemet er et system som gir brukere mulighet til

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

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

Del - leveranse Del 2. Inf 2120 fredag Gruppe 1 Knut Johannes Dahle

Del - leveranse Del 2. Inf 2120 fredag Gruppe 1 Knut Johannes Dahle Del - leveranse Del 2 Inf 2120 fredag 29.4 Gruppe 1 Knut Johannes Dahle AV Catrine Myhre (catrinem@ifi.uio.no) Mehdi Zare (mehdiz@ifi.uio.no) Odd Christer Brovig (oddcb@ifi.uio.no) Christer Aas (chrisva@ifi.uio.no)

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

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

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

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007. Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører

Detaljer

Trafikanten + Innlevering oblig 1 INF2120 Våren Versjon 1

Trafikanten + Innlevering oblig 1 INF2120 Våren Versjon 1 Trafikanten + Innlevering oblig 1 INF2120 Våren 2005 Versjon 1 Gruppe 2: Ingunn Elisabeth Sundal Rønningen , Kjetil Magnus Kristiansen , Sjur

Detaljer

JDBC. Java Data Base Connec.vity

JDBC. Java Data Base Connec.vity JDBC Java Data Base Connec.vity Package java.sql Package java.sql Array Blob CallableStatement Clob Connec.on DatabaseMetaData Driver NClob ParameterMetaData PreparedStatement Ref ResultSet ResultSetMetaData

Detaljer

Rutetabeller 21 Aker brygge - Helsfyr 31 Snarøya - Fornebu - Tonsenhagen - Grorud 37 Nydalen - Helsfyr 54 Aker brygge - Kjelsås 63 Grorud T - Romsås ring 102 Lørenskog sentrum - 103 Bjørndal - Helsfyr

Detaljer

Jentetreff INF1000 Debugging i Java

Jentetreff INF1000 Debugging i Java Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver

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

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

Eksamen i Internetteknologi Fagkode: ITE1526

Eksamen i Internetteknologi Fagkode: ITE1526 Datateknikk Side 1 av 8 Eksamen i Internetteknologi Fagkode: ITE1526 Tid: Mandag, 23.05.05, 9:00-12:00 Tillatte hjelpemidler: Alle trykte og skrevne hjelpemidler tillatt. Eksamen består av 3 oppgaver og

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

Tilkobling og Triggere

Tilkobling og Triggere Tilkobling og Triggere Lars Vidar Magnusson October 12, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 12, 2011 1 / 25 Tilkobling med PHP PHP bruker databasespesifike moduler til å koble

Detaljer

Universitetet i Oslo Institutt for informatikk. Leveranse 2 - inf2120. Gruppe 9. Mads Andre Bergdal Neeru Bhardwaj Saqib Riaz Trond Arne Sørby

Universitetet i Oslo Institutt for informatikk. Leveranse 2 - inf2120. Gruppe 9. Mads Andre Bergdal Neeru Bhardwaj Saqib Riaz Trond Arne Sørby Universitetet i Oslo Institutt for informatikk Leveranse 2 - inf2120 Gruppe 9 Mads Andre Bergdal Neeru Bhardwaj Saqib Riaz Trond Arne Sørby 29. april 2005 2 1 Innledning Vi har nå designet et system kalt

Detaljer

IN2010: Algoritmer og Datastrukturer Series 2

IN2010: Algoritmer og Datastrukturer Series 2 Universitetet i Oslo Institutt for Informatikk S.M. Storleer, S. Kittilsen IN2010: Algoritmer og Datastrukturer Series 2 Tema: Grafteori 1 Publisert: 02. 09. 2019 Utvalgte løsningsforslag Oppgave 1 (Fra

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

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19 Prosedyrer Lars Vidar Magnusson October 26, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 26, 2011 1 / 19 Repetisjon om triggere og prosedyrer Triggere og prosedyrer ligner på hverandre

Detaljer

(MVC - Model, View, Control)

(MVC - Model, View, Control) INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

Signalgrensesnitt for Trafikanten Pluss

Signalgrensesnitt for Trafikanten Pluss Signalgrensesnitt for Trafikanten Pluss Version 05042 2-Apr-05 INF220 Prosjekt i modellering Trafikanten Plus: Skisse til arkitektur cs TrafficContext Oracle på Ifi users:mobile sm: SM_stat JDBC static:lbase

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

Oppgave 1 (Opprett en database og en tabell)

Oppgave 1 (Opprett en database og en tabell) Oppgave 1 (Opprett en database og en tabell) 1) I «Object Explorer» (i «SQL Server Management Studio»), høyreklikk over Databases : 1 2 2) Skriv så databasenavnet og klikk OK: 3) Plasser så kursoren på

Detaljer

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Stein Gjessing Institutt for Informatikk Universitetet i Oslo 1 Oppgave 10 Tegning av datastrukturen (vekt 5% av del B) Tegn datastrukturen til

Detaljer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

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

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

JDBC. Java DataBase Connectivity SQL i Java Læreboken: 8.5, s Forelesning i TDT4145, 9. mars 2004 Av Gisle Grimen

JDBC. Java DataBase Connectivity SQL i Java Læreboken: 8.5, s Forelesning i TDT4145, 9. mars 2004 Av Gisle Grimen JDBC Java DataBase Connectivity SQL i Java Læreboken: 8.5, s. 393-397 Forelesning i TDT4145, 9. mars 2004 Av Gisle Grimen JDBCs treenighet Databaseoppkobling java.sql.connection Utføre SQL java.sql.statement

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

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

Fra krav til objektdesign

Fra krav til objektdesign Fra krav til objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer INF1050-ansvar-1 Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Hva skal systemet gjøre? UML: Bruksmønstermodeller

Detaljer

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

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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

Detaljer

Gjennomgang av eksamen H99

Gjennomgang av eksamen H99 Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

UNIVERSITETET I OSLO

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

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF 3230 Formell modellering og analyse av kommuniserende systemer Eksamensdag: 4. april 2008 Tid for eksamen: 9.00 12.00 Oppgavesettet

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

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

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Fra krav til objektdesign Hva skal systemet gjøre? UML: Bruksmønstermodeller o Objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Detaljer

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon INF1000 Forelesning 9 Hashmap Eksempel: Flyreservasjon HashMap Ofte har vi flere, mange objekter av en bestemt klasse - eks. : elever på en skole biler som har passert bomringen i Oslo telefonsamtaler

Detaljer

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel HashMap INF1000 Forelesning 9 Hashmap Eksempel: Flyreservasjon Ofte har vi flere, mange objekter av en bestemt klasse - eks. : elever på en skole biler som har passert bomringen i Oslo telefonsamtaler

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

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

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

DELLEVERANSE 2 INF2120 GRUPPE 12. Jon G. Berentsen Geir A. Nilsen Lailuma Arezo

DELLEVERANSE 2 INF2120 GRUPPE 12. Jon G. Berentsen Geir A. Nilsen Lailuma Arezo DELLEVERANSE 2 INF2120 GRUPPE 12 Av Jon G. Berentsen Geir A. Nilsen Lailuma Arezo Innledning: Hensikten med vår oppgave er å lage et overvåkningssystem basert på posisjonering av mobiltelefon. Overvåkningssystemet

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

Detaljer

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF 3230 Formell modellering og analyse av kommuniserende systemer Eksamensdag: 4. juni 2010 Tid for eksamen: 9.00 12.00 Oppgavesettet

Detaljer

INF1000: Forelesning 7

INF1000: Forelesning 7 INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB? 1 2 Java Database Connectivity (JDBC) Norvald H. Ryeng ryeng@idi.ntnu.no 3 4 Denne forelesningen Hva er Derby og Java DB? Hva er Derby og Java DB? Hva er JDBC? Slik fungerer det Slik gjør dere det (kokebok)

Detaljer

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

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

DELLEVERANSE 3 INF2120 GRUPPE 12. Jon G. Berentsen Geir A. Nilsen Lailuma Arezo

DELLEVERANSE 3 INF2120 GRUPPE 12. Jon G. Berentsen Geir A. Nilsen Lailuma Arezo DELLEVERANSE 3 INF2120 GRUPPE 12 Av Jon G. Berentsen Geir A. Nilsen Lailuma Arezo Innledning: Hensikten med vår oppgave er, fremdeles, å lage et overvåkningssystem basert på posisjonering av mobiltelefon.

Detaljer

Dagens tema: Sjekking

Dagens tema: Sjekking Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig) Hele prosjektet Strukturen til kompilatoren vår f.pas

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

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

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

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

Dagens tema: 12 gode råd for en kompilatorskriver

Dagens tema: 12 gode råd for en kompilatorskriver Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

Detaljer

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet. TDT445 Øving 4 Oppgave a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet. Nøkkel: Supernøkkel: Funksjonell avhengighet: Data i en database som kan unikt identifisere (et sett

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

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI Oppgave 1 INF1000 Uke 13 Gjennomgang av prøveeksamen fra høsten 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new double[1];

Detaljer

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7. Konstruktører Static INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter

Detaljer

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo INF1010 Våren 2015 Feilsituasjoner og unntak i Java (Engelsk: Exception) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Jeg prøvde å bestille billett med Air France:

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: AITeL Eksamensdato: 2.desember 2009 Varighet: 0900-1300 Emnekode: Emnenavn: Klasse(r): LO191D / LC191D LO191D Videregående programmering

Detaljer

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor. 6-13 July 2013 Brisbane, Australia Norwegian 1.0 Brisbane har blitt tatt over av store, muterte wombater, og du må lede folket i sikkerhet. Veiene i Brisbane danner et stort rutenett. Det finnes R horisontale

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

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3 Relational Algebra 1 Unit 3.3 Unit 3.3 - Relational Algebra 1 1 Relational Algebra Relational Algebra is : the formal description of how a relational database operates the mathematics which underpin SQL

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

Elektronisk innlevering/electronic solution for submission:

Elektronisk innlevering/electronic solution for submission: VIKINGTIDSMUSEET Plan- og designkonkurranse/design competition Elektronisk innlevering/electronic solution for submission: Det benyttes en egen elektronisk løsning for innlevering (Byggeweb Anbud). Dette

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 10. juni 2009 Tid for eksamen: 9.00 12.00 Oppgavesettet

Detaljer

DELLEVERANSE 1 INF2120 V06

DELLEVERANSE 1 INF2120 V06 DELLEVERANSE 1 INF2120 V06 GRUPPE 22 VERSION: FINAL 22 FEBRUARY, 2006 MORTEN FOLLESTAD RAYNER VINTERVOLL ANISH RAJA IVA N. IVANOVA BJØRN BRÆNDSHØI Page 1 REVISJONSOVERSIKT Revisjonsoversikt Versjon Forfattere

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

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

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

Datamodellering og databaser http://www.aitel.hist.no/fag/_dmdb/ SQL, del 2

Datamodellering og databaser http://www.aitel.hist.no/fag/_dmdb/ SQL, del 2 http://www.aitel.hist.no/fag/_dmdb/ SQL, del 2 Eksempelbase side 2 Virtuelle tabeller (views) side 3-6 NULL-verdier side 7-14 UPDATE-setningen side 15-16 INSERT-setningen side 17 DELETE-setningen side

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

INF1010 Tråder II 6. april 2016

INF1010 Tråder II 6. april 2016 INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end

Detaljer