Signalgrensesnitt for Trafikanten Pluss

Like dokumenter
Fra uryddig verden til strukturert stoppestedsdatabase

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

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

Modellenes to formål. Datamodellering med UML (forts.) Fra naturlig språk til datamodell. Figur 5-2. Ogdens trekant

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Den grunnleggende konstruksjonen det elementære utsagnet

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

Datamodellering med UML (forts.)

Datamodellering med UML

The Unified Modeling Language - UML

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Individer i interesseområdet

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

Den redundansfri datamodellen

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

Datamodellering med ORM

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

Hva vi i alle fall bør huske fra INF1050

Videregående programmering 6

UNIVERSITETET I OSLO

Java Database Connectivity (JDBC) Norvald H. Ryeng

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

Normalisering. Hva er normalisering?

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

Datamodellering. Diskusjonspunkter. Figur 1-1. Informasjonssystemet gjenspeiler «virkeligheten» Figur 1-2. Data krever tolkning

Eksamen i Internetteknologi Fagkode: ITE1526

Normalisering. Hva er normalisering?

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

INF1300 Introduksjon til databaser

Normalisering. Hva er normalisering?

INF1300 Introduksjon til databaser

INF1010 våren januar. Objektorientering i Java

INF2100. Oppgaver 26. september til 1. oktober 2007

INF1300 Introduksjon til databaser

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

Tilstandsmaskiner med UML og Java

IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

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

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

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

Trafikanten Pluss, delleveranse 2. Gruppe 8 Eivind Hasle Amundsen [eivinha] og Eigil Moe [eigilmo]

IN1010 våren januar. Objektorientering i Java

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

INF1300 Det meste av resten av

INF Løsning på seminaropppgaver til uke 8

Løsningsforslag Test 2

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

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

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

INF2100. Oppgaver 23. og 24. september 2010

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1300 Introduksjon til databaser

INF1000: Forelesning 7

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

Sikkerhet og tilgangskontroll i RDBMS-er

INF1010 våren 2018 tirsdag 23. januar

Tilkobling og Triggere

Utvikling fra kjernen og ut

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF1000: Forelesning 6. Klasser og objekter del 1

Intermesso. Visjonen... samling av trådene. Veivalget. Et bedre bilde av visjonen?

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

INF1300 Introduksjon til databaser

Gerhard Skagestein: Systemutvikling fra kjernen og ut, fra skallet og inn.

INF1000: Forelesning 7. Konstruktører Static

Forelesning inf Java 4

TDT4100 Objektorientert programmering

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

TOD063 Datastrukturer og algoritmer

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Løse reelle problemer

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Klasser, objekter, pekere og UML. INF gruppe 13

OPPGAVE 5b og 8b Java Kode

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

Dagsorden. Hovedtemaene i INF102. Fra kjernen og ut. Produksjon av informasjonssystemer. Produksjon av informasjonssystemer

INF Obligatorisk innlevering 5

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Objektorientert Programmering Ekstraordinær eksamen 2014

UNIVERSITETET I OSLO

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Løsningsforslag til eksamen i INF1000 våren 2006

Forelesning inf Java 5

Forelesning inf Java 5

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

INF 1000 høsten 2011 Uke september

INF Uke 10. Ukesoppgaver oktober 2012

Ukeoppgaver 2: sep (INF Høst 2010)

UNIVERSITETET I OSLO

Utvikling fra kjernen og ut

Transkript:

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 SMSin (2) :GSMSystem () :TrafficPlusControl SMSout sm2: SM_dyn XML http: dynamic:tbase PATS-laben Trafikanten 2-Apr-05 INF220 Prosjekt i modellering 2

PATS-laben: vi bruker kun SMS som snitt Beskrivelsesmessig er det hensiktsmessig å forstå kommunikasjonen i 2 plan Logisk kommunikasjon SMS kommunikasjon SMS kommunikasjonen implementerer den logiske kommunikasjonen dette gjøres ved at SMS-ens tekst gis en spesiell syntaks på output (fra programmet) for å identifisere den som sender på input må teksten parseres for å tolke innholdet SMS kommunikasjonen gjøres vha Én meldingstype: SMSmessage To spesiallagde porttyper (JavaFrame mediatorer) for inn/ut 2-Apr-05 INF220 Prosjekt i modellering 3

Logisk kommunikasjonsprotokoll sd NextVehicle users[øystein]: Mobile nextvehicle(line3sognsvann, øtlfnr) :GSMsystem :TrafficPlusControl øid er en identifikasjon generert av GSMsystemet nextvehicle(line3sognsvann, øid) Line3Sognsvann er info brukeren Øystein gir getpos(øid) givepos(øid, øpos) logiske signalnavn velger dere ref FindNextVehicle(øpos, Line3Sognsvann, øid) sendsms( Line3Sognsvann is 3 minutes away, øid) sms( Line3Sognsvann is 3 minutes away ) 2-Apr-05 INF220 Prosjekt i modellering 4

PATS-sine tjenester Motta SMS fra mobiltelefon; videresendes til program SMS melding sendes til 2034 på et format som inneholder info om hvilken kø denne meldingen skal inn på Programmet vil ta inn melding fra køen over inn-porten Sende SMS til mobiletelefon, originert fra program SMS meldingen sendes fra programmet med et tilsvarende format Spørre om posisjon til en mobiltelefon mobiltelefonen er gitt ved en generert ID som har framkommet når personen sendte en tidligere SMS PATS sender info om posisjon til en mobiltelefon igjen som en SMS i et dertil egnet format 2-Apr-05 INF220 Prosjekt i modellering 5

Statisk database: Oracle på Ifi Implementasjonen av dette går Ragnar og Gerhard igjennom 3.4.2005 Databasen skal tenkes som en tilstandsmaskin denne tilstandsmaskinen skal hente data fra databasen vha JDBC Logisk grensesnitt mot statisk database, dvs. mot tilstandsmaskinen som bestyrer databasen Velg selv signalnavnene, men her er noen forslag: getposition(string holdeplass, Boolean retning) fra programmet pos(string holdeplass, Boolean retning, Real xcoord, Real ycoord) til programmet fra databasen getbusstop(real xcoord, Real ycoord) busstop(real xcoord, Real ycoord, String stoppnavn) 2-Apr-05 INF220 Prosjekt i modellering 6

Utdrag av tabellen 37.txt HPLNR ST NAVN XK YK ---------- -- ---------------------------------------- ---------- ---------- 30442 2 Helsfyr (i Etterstadsletta) 600670 6642999 30447 2 Maskinistskolen 6004 6642753 300643 2 Etterstadgata 60035 6642724 300642 2 Vålerenga 599930 6642603 30064 2 Galgeberg (i Strømsveien) 599657 664249 2-Apr-05 INF220 Prosjekt i modellering 7

http://ngis2.statkart.no/norgesglasset/default.html 2-Apr-05 INF220 Prosjekt i modellering 8

Dynamiske data: direkte fra Trafikanten Vi sender en forespørsel på http: mot Trafikanten/SIS den inneholder navnet på en holdeplass Logisk signal: framkomstmidler(string holdeplass) og vi får tilbake en XML-fil som inneholder en masse informasjon om de framkomstmidler som er i nærheten av nevnte holdeplass denne XML-fila må parseres og tolkes av programmet Logisk signal: dynamiskinfo(string holdeplass, String info) 2-Apr-05 INF220 Prosjekt i modellering 9

Deler av en slik info over XML 2-Apr-05 INF220 Prosjekt i modellering 0

Fra uryddig verden til strukturert database Ragnar Normann og Gerhard Skagestein 3. april 2005 2-Apr-05 INF220 Prosjekt i modellering

Vi ser bare rapportene... Rapport Rapport3 Rapport2 Informasjonssystem Hvordan finne fram til en korrekt relasjonsdatabasestruktur ut fra rapportene? 2-Apr-05 INF220 Prosjekt i modellering 2

Noen rapporter Prosjekt: Alfa Ansatt Avdeling Prosjekttimer 20 Salg 200 0 Salg 75 08 Prod 50 Prosjekt: Beta Budsjett og lønn Avdeling Budsjett Sum lønn Salg 200000 250000 Prod 50000 240000 Øko 00000 300000 Avdeling: Salg Ansatt Skattekommune Priv.tlf 0 024 Ås 64298765 20 Salg 22334466 Avdeling: Prod <kommuneliste> <kommune> <kommunenr>024</kommunenr> <kommunenavn>ås</kommunenavn> </kommune.. </kommuneliste> 2-Apr-05 INF220 Prosjekt i modellering 3

Ulike veier til optimal normalform Virkeligheten (interesseområdet) analyse intuisjon gruppering normalisering elementære utsagn optimal normalform universalrelasjonen 2-Apr-05 INF220 Prosjekt i modellering 4

Veien om universalrelasjonen Rapport Rapport2 Normalisering Konseptualisering? Rapport3 2-Apr-05 INF220 Prosjekt i modellering 5

En unormalisert tabell repeterende gruppe ansatt skatte kommune priv.tlf lønn prosjekt avdeling avd. kommune avd.tlf avd. budsj prosjekt prosj. timer prosj. timer 20 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 Alfa 200 Beta 250 0 024 Ås 64298765 Salg 030 Oslo 22876543 200000 Alfa 75 08 220 025 Frogn 0227 Fet 6323456 240000 300000 Prod Øko 025 Frogn 025 Frogn 64878855 64878855 50000 00000 Alfa Beta 50 00 2-Apr-05 INF220 Prosjekt i modellering 6

Første normalform ansatt prosj. timer skatte kommune priv.tlf lønn prosjekt avdeling avd. kommune avd.tlf avd. budsj 20 Alfa 200 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 20 Beta 250 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 0 08 220 Alfa Alfa Beta 75 50 00 024 Ås 025 Frogn 0227 Fet 64298765 6323456 240000 300000 Salg Prod Øko 030 Oslo 025 Frogn 025 Frogn 22876543 64878855 64878855 200000 50000 00000 2-Apr-05 INF220 Prosjekt i modellering 7

Finne funksjonelle avhengigheter ansatt prosj. timer skatte kommune priv.tlf lønn prosjekt avdeling avd. kommune avd.tlf avd. budsj 20 Alfa 200 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 20 0 Beta Alfa 250 75 030 Oslo 024 Ås 22334466 64298765 250000 Salg Salg 030 Oslo 030 Oslo 22876543 22876543 200000 200000 08 Alfa 50 025 Frogn 240000 Prod 025 Frogn 64878855 50000 220 Beta 00 0227 Fet 6323456 300000 Øko 025 Frogn 64878855 00000 2-Apr-05 INF220 Prosjekt i modellering 8

Boyce-Codd normalform (BCNF): Alle determinanter (venstresider i funksjonelle avhengigheter) skal være gjenstand for entydighetsskranke 2-Apr-05 INF220 Prosjekt i modellering 9

Normalisering til BCNF ansatt 20 0 08 220 Salg Prod Øko skatte kommune 030 Oslo 024 Ås 025 Frogn 0227 Fet avd. kommune 030 Oslo 025 Frogn 025 Frogn priv.tlf 22334466 64298765 6323456 avd.tlf 22876543 64878855 64878855 lønn 250000 240000 300000 avd. budsj 200000 50000 00000 Salg Salg Prod Øko Noen sammenheng mellom ansatt(nr) og avdeling? Dele opp kommuneverdien? Noen skjulte attributter? ansatt 20 20 0 08 220 avdeling avdeling prosjekt Alfa Beta Alfa Alfa Beta prosj. timer 200 250 75 50 00 2-Apr-05 INF220 Prosjekt i modellering 20

Normalisering i tre trinn Til. normalform: Skill ut repeterende grupper A B C D E C D E C D E F G A B F G A C D E Til 2. normalform: Skill ut attributter som er funksjonelt avhengige av en del av identifikatoren sammen med en kopi av denne Til 3. normalform: Skill ut attributter som er funksjonelt avhengige av andre (ikke-nøkkel) attributter sammen med en kopi av disse A C D E A C D C E A B F G A B F B G 2-Apr-05 INF220 Prosjekt i modellering 2

Gå via en datamodell! Rapport Rapport2 Gruppering Konseptualisering Rapport3 2-Apr-05 INF220 Prosjekt i modellering 22

Ogdens trekant Vi ser representasjonene, ikke alltid begrepene Thoughts of Reference Begreper Symbol Lingvistiske elementer representasjoner Referent Fenomener i interesseområdet 2-Apr-05 INF220 Prosjekt i modellering 23

Sammenheng representasjon - begrep Enkel representasjon (ikke informasjonsbærende) Sammensatt representasjon (ikke informasjonsbærende) Informasjonsbærende representasjon Husk: Vi ønsker uforanderlige representasjoner! Let etter begreper i tabelloverskrifter, ledetekster og XML-markeringer Eksempler 2-Apr-05 INF220 Prosjekt i modellering 24

Hva ser vi Ansatte Avdelinger Skattekommuner Privattelefoner, avdelingstelefoner Avdelingsbudsjetter Lønninger Prosjekttimer Begreper? Representasjoner? Roller? 2-Apr-05 INF220 Prosjekt i modellering 25

Hvilke assosiasjoner? eller jakten på de elementære utsagn mange-til-mange-assosiasjoner med assosiasjonsklasse en-til-mange-assosiasjoner funksjonelle avhengigheter Sjekk ved å tolke assosiasjonene som tabeller og fylle inn forekomster! Gir tabellene mening? Stemmer de med rapportene? 2-Apr-05 INF220 Prosjekt i modellering 26

Usynlige begreper Husk at forekomstene i en relasjon er en mengde Foreligger det noe sorteringsbehov? I så fall trenger vi noe å sortere! 2-Apr-05 INF220 Prosjekt i modellering 27

Avdelingsnavn avdelingsnavn {id} 0.. «identifying» Kommune kommunenr2s {id} avd kommune skattekommune Fylke fylkenr {id} Avdeling avdelingsnr {id} Ansatt ansattnr {id} 0.. 0.. avd budsjett avd tlf Penger #beløp {id} Telefon tlf.nr {id} lønn priv tlf Prosjekt prosjektnavn{id} Modellen Prosjektdeltakelse prosj timer Varighet #timer {id} 2-Apr-05 INF220 Prosjekt i modellering 28

Skranker? Er det noen relevante skranker som bør legges inn i modellen? 2-Apr-05 INF220 Prosjekt i modellering 29

Og så grupperer vi! 2-Apr-05 INF220 Prosjekt i modellering 30

Avdelingsnavn avdelingsnavn {id} 0.. Avdeling avdelingsnr {id} avdelingsnavn {fk} fylkenr {fk} avdkommune{fk} avdbudsjett{fk} Ansatt ansattnr {id} avdeling{fk} fylkenr {fk} skattekommune{fk} lønn {fk} 0.. 0.. Gruppert modell Kommune «identi- fying» fylkenr {id}{fk} kommunenr2s {id} avd kommune avd budsjett avd tlf Penger #beløp {id} Telefon tlf.nr {id} avdtlf{fk} privtlf{fk} 2-Apr-05 INF220 Prosjekt i modellering 3 lønn priv tlf skattekommune Prosjektdeltakelse ansattnr{id}{fk} prosjektnavn {id}{fk} prosjtimer {fk} prosj timer Fylke fylkenr {id} Prosjekt prosjektnavn{id} Varighet #timer {id}

Avdelingsnavn avdelingsnavn {id} 0.. Avdeling avdelingsnr {id} avdelingsnavn {fk} fylkenr {fk} avdkommune {fk} avdbudsjett {fk} Ansatt ansattnr {id} avdeling{fk} fylkenr {fk} skattekommune{fk} lønn {fk} Forenkling 0.. 0.. Kommune «identi- fying» fylkenr {id}{fk} kommunenr2s {id} avd kommune avd budsjett avd tlf Penger #beløp {id} Telefon tlf.nr {id} avdtlf{fk} privtlf{fk} 2-Apr-05 INF220 Prosjekt i modellering 32 lønn priv tlf skattekommune Prosjektdeltakelse ansattnr{id}{fk} prosjektnavn {id}{fk} prosjtimer {fk} prosj timer Fylke fylkenr {id} Noen overraskelser? Prosjekt prosjektnavn{id} Varighet #timer {id}

Hvordan sette opp en databasestruktur med SQL CREATE osv 2-Apr-05 INF220 Prosjekt i modellering 33

Hvordan populere en database med SQL INSERT osv 2-Apr-05 INF220 Prosjekt i modellering 34

Hvordan få tak i en relasjonsdatabase fra Java JBDC-grensesnittet 2-Apr-05 INF220 Prosjekt i modellering 35

SQL i et Java-program Oppkobling mot databasen import java.sql.; import oracle.sql.; import javax.swing.; import oracle.jdbc.driver.; //må lastes ned, classes2.zip class OracleInf050 { public static void main(string args[ ]) throws SQLException { // Last ned Oracle JDBC driveren DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver( )); // Be bruker om brukernavn og passord String brukernavn = JOptionPane.showInputDialog("Brukernavn: "); String passord = JOptionPane.showInputDialog("Passord: "); // Oppkobling mot databasen Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@delphinium.ifi.uio.no:52:ifiora",brukernavn, passord); 2-Apr-05 INF220 Prosjekt i modellering 36

SQL i et Java-program Spørring og utskrift // Lag et SQL-setningsobjekt Statement stmt = conn.createstatement(); // Utfør en spørring ResultSet rset = stmt.executequery("select from Husholdningsavfall"); // Iterer gjennom resultatet og skriv ut noen av attributtene while ( rset.next( ) ) { System.out.print (rset.getstring()); // attributt nr System.out.print (" " + rset.getstring("kommunenavn")); System.out.println (" " + rset.getstring("avfallsmengde")); } System.exit(0); // fordi JOptionPain brukes uten foreldrevindu } } //OracleInf050 2-Apr-05 INF220 Prosjekt i modellering 37

Avdelingsnavn avdelingsnavn {id} 0.. Modellen avd kommune skattekommune Fylke fylkenr {id} Avdeling avdelingsnr {id} Ansatt ansattnr {id} 0.. 0.. avd budsjett avd tlf «identifying» «identifying» Penger #beløp {id} Telefon tlf.nr {id} 2-Apr-05 INF220 Prosjekt i modellering 38 lønn priv tlf Prosjektdeltakelse «identifying» Kommune kommunenr2s {id} prosj timer Prosjekt prosjektnavn{id} Varighet #timer {id}

Objektorientert realisering I Avdeling avdelingsnr avdelingsnavn avdbudsjett <set>:telefon Kommune fylkenr kommunenr2s Ansatt ansattnr <set>:telefon <set>: (prosjektnavn, varighet) skatter_til Denne implementasjonen setter den ansatte i sentrum. I tillegg har vi valgt å beholde Avdeling og Kommune som egne klasser, 2-Apr-05 INF220 Prosjekt i modellering 39

Avdeling avdelingsnr avdelingsnavn avdbudsjett <set>:telefon fylkenr kommunenr2s Objektorientert realisering II Denne realiseringen er velegnet hvis fokus er på prosjektene og hvem som arbeider på dem. Merk at kommunene ikke lenger er egne objekter, dvs. at DBMSet ikke kan kontrollere om kommunenumrene er lovlige Ansatt Ansattnr <set>:telefon skatt_fylkenr skatt_kommunenr2s Prosjektdeltakelse varighet Prosjekt prosjektnavn 2-Apr-05 INF220 Prosjekt i modellering 40

SLUTT 2-Apr-05 INF220 Prosjekt i modellering 4