Indhold. 3 Language Pattern Motivation Problem Løsning... 14

Størrelse: px
Starte visningen fra side:

Download "Indhold. 3 Language Pattern 14 3.1 Motivation... 14 3.2 Problem... 14 3.3 Løsning... 14"

Transkript

1 Indhold 1 Brugsmønster #07 Køb af rejser Analyse af brugsmønster billetkøb Design af billetautomat Distribueret model Software arkitektur Dataopdatering Design af brugsmønster #08 Almindeligt køb af billet Remote Observer Pattern (RMI) Klassifikation Mål Også kendt som Motivation Løsning Netværkskommunikation Struktur Deltagere Samarbejde Server Klient Anvendelighed Begrænsninger Begrænsning 1: Åbning af porte for datakommunikation Begrænsning 2: Mere trafik med RMI end sockets Begrænsning 3: Stor netværksbelastning ved update Begrænsning 4: Ingen sikkerhed Begrænsning 5: Stadig afhængigheder Konsekvenser Implementation Eksempelkode Alternativer Sockets Kontinuerlige anmodninger til server SSL (udvidelse) Kendt brug Beslægtede mønstre og værker Language Pattern Motivation Problem Løsning

2 3.4 Interaktion Klassestruktur Databasestruktur Konsekvenser Implementation Anvendelse Referencer Analyseklassediagram 22 5 Designklassediagram 23 2

3 Kapitel 1 Brugsmønster #07 Køb af rejser 1.1 Analyse af brugsmønster billetkøb Analysen af brugsmønster #07 Køb af rejser omhandler brugsmønsterbeskrivelse for et generelt køb af en billet, uanset om det foregår via en billetautomat, internet-browser eller en mobil enhed. Brugsmønster #08 Almindeligt køb af billet beskriver hvordan et almindeligt billetkøb generelt forløber og #09 Kvik-køb af billet beskriver hvordan et kvik-køb forløber på en billetautomat. Der er anvendt navne- og udsagnsordsmetoden 1 for at finde egnede klasser, attributter(se tabel 1.1) og metoder(se tabel 1.2). På analyseklassediagrammet er kun medtaget de klasser, attributter og metoder, som er nødvendige jf. projektafgrænsningen?? på side??. Klassen CustomerSession repræsenterer funktionaliteten i brugsmønster #07 Køb af rejser. Den indeholder derfor metoder til at sammensætte en billet ud fra de valg kunden kan foretage(såsom stationer og antal). Klassen Purchase holder styr på de enkelte billetkøb, samt om der foretages et kvik-køb eller almindeligt køb. Når købet er afsluttet bliver CustomerSession nulstillet. Navneord: Klasse/attribut Navn i diagram Salgsterminal/Billetautomat Pakke TicketMachine Køb Klasse Purchase Delkøb Klasse SubPurchase Købstyper Attribut typeofpurchase Kunde Klasse CustomerSession System - - Produkt - - Salgstransaktion Klasse SaleTransaction Kvik-køb Klasse QuickPurchase Almindeligt køb Klasse OrdinaryPurchase Forudbestilte varer Klasse BookedPurchase Pladsbestilling Klasse SeatReservation Stationer Klasse Station Afrejsestation Attribut departurestation Destination Attribut destinationstation Antal(generel attribut for fx billet og plads) Attribut numberof- Rejse(se delkøb) - - Betaling Klasse Payment Fortsættes... 1 Lit.[?], kap 8.4, side 163 3

4 Navneord: Klasse/attribut Navn i diagram Gyldighed(periode) Attribut validity Tid(dato og klokkeslet) Attribut datetime Pris Attribut ticketprice Tabel 1.1: Navneord for brugsmønster #07 Køb af rejser. Navneord: Metode Navn i diagram Køb af rejse Metode buytrip Godkend rejse/køb Metode acceptpurchase Betal Metode paytrip Udlevering af produkt Metode deliverproduct Registrer transaktion Metode recordtransaction Præsentation af købsmuligheder Metode showpurchasemethod Vælg købsmulighed Metode choosepurchasemethod Præsentation af stationer Metode showstation Vælg afrejsestation Metode choosedeparturestation Vælg destination(se vælg afrejsestation) Metode choosedestinationstation Vælg billettype/pladsbestilling Metode choosetickettype Vælg antal Metode choosequantity Godkend betaling Metode acceptpayment Annuller køb Metode cancelpurchase Nulstilling af valg Metode resetchoices Vis hovedmenu Metode showmainmenu Udregn pris Metode calculateprice Tabel 1.2: Udsagnsord for brugsmønster #07 køb af rejser. 1.2 Design af billetautomat Der skal fremstilles et design, som tilgodeser et robust software skelet, af det bærende brugsmønster #07 Køb af rejser, som udvides af brugsmønstrene #08 Almindeligt køb af billet og #09 Kvik-køb af billet. Et vigtigt aspekt på dette område er data-persistens, hvor der skal foretages design af de nødvendige database aktiviteter ud fra de funde relationer i designarbejdet, se figur 5 på side Distribueret model Der er valgt en 2-tier model hvor distributionstypen er Remote Database. Dette stemmer dog ikke helt overens med kundens ønske om at have en automat der kan fungere offline, se krav R1 Drift ved systemnedbrud og lignende. Remote Database er valgt, for at opfylde kravet omkring distribution, yderligere er denne valgt da en distribueret database-løsning blev fundet for tidskrævende Software arkitektur Billetautomaten designes med en PCMEF+ arkitektur, hvor vægten er lagt på at kunne foretage alm. køb (brugsmønster #08 Almindeligt køb af billet ) og kvik-køb (brugsmønster #09 Kvik-køb af billet ), ud fra et mindre udvalg af stationer. Der er foretaget en analyse af, hvordan de enkelte klasser bedst implementeres, for at opnå 4

5 en klar ansvarsfordeling, samtidig med høj indbyrdes samhørighed og minimal afhængighedskobling. Dette vil styrke softwarens robusthed, forståelighed, vedligeholdelsesvenlighed og optimere fremadrettede ønskede forventninger i softwarens levetid. Der er sat fokus på de klasser, som der kan forventes dynamiske ændringer i, fx kan systemet selv håndtere hvis man tilføjer en kundekategori i databasen, uden at kildekoden skal ændres. En kundekategori kunne være ung og voksen. En billets egenskaber er forsøgt fordelt ud i mindre klasser, således at det er nemmere at tilføje, fjerne eller ændre funktionalitet på billetten. Softwaren tilstræbes designet som en streng og lukket arkitektur 2, hvor undtagelser bekræftes gennem interfaces, for at opnå et vedligeholdelsesvenligt softwaresystem Dataopdatering Da der benyttes Remote Database, skal data hentes fra serveren, hvilket betyder klienten skal have en mekanisme til at holde data opdateret. Denne opdateringsmekanisme er opbygget omkring et Remote Observer mønster, læs mere i kapitel?? på side??. Dette foregår ved at klienterne kan tilmelde sig en liste på serveren, over klienter der skal opdateres med nye data, når der sker ændringer på serveren. 1.3 Design af brugsmønster #08 Almindeligt køb af billet I dette afsnit beskrives kort omkring de forskellige klasser, samt omkring funktionaliteterne bag køb af rejser. Billetkøb Fuktionaliteten Billetkøb er moduleret brugsvenligt med henblik på hurtig betjenning, således at et billetkøb kan foretages ud fra maximum to valg inden betaling. Det er iøvrigt ved billetkøb, efter valgt destination, muligt at tilvælge / fravælge billetter vha. henholdsvis aktivering af + eller - funktionalitet, se figur 1.1, hvor beløbet opsummeres løbende. Figur 1.1: Funktionaliteten til at tilvælge og fravælge billetter. 2 Lit.[?], s.[11-13] 5

6 Stationer Det er valgt at repræsentere stationer som objekter, fremfor en mere primitiv type såsom String. Dette er gjort da det anses at være mere fremtidsorienteret, f.eks. hvis en station skal have et zonenummer eller anden information, så er de samlet ét sted(indkapslet), og de andre klasser er sat op til at håndtere Station -objekter, så en sådan ændring af indhold i en Station -klasse ikke berører disse klasser. StationHandler Bruges til at holde styr på de forskellige Station -objekter. Det er muligt at hente en liste ud med stationsnavne, som strenge, da dette tænkes brugbart i præsentationslaget. Dette er gjort fremfor at præsentationslaget skal håndtere Station - objekter, da dette kræver kendskab til opbygningen af Station -objekterne, eller et interface til at kunne få fat i stationsnavne. Det er valgt at oprette alle stationerne på én gang, og ikke løbende som de bliver brugt. Dette valg er gjort for at få en funktionel prototype. Ulempen er at at der vil blive oprettet en mængde Station -objekter, som ikke bliver brugt, idet at det kun er afgangsog destinationsstation, som skal tilgås(for at hente takstzone). Det tænkes at det senere kan laves om således at de Station -objekter der rent faktisk skal bruges, bliver oprettet når det er nødvendigt. Desuden kan det også senere gøres muligt at kontrollere om Station -objekterne skal opdateres, når et køb afsluttes og sessionen startes på ny. Fremfor blot at nedlægge alle Station -objekter og oprette de samme på ny. CustomerCategory Til hver billet er tilknyttet de forskellige CustomerCategory -typer der findes i databasen. Hver CustomerCategory indeholder informationer om, antal og pris for den pågældende kategori. Ved instantiering af et Ticket -objekt, hentes en liste fra databasen, med alle definerede kundekategorier. Der oprettes et CustomerCategory -objekt for hver kundekategori. Designet er lavet således, at det er muligt at tilføje flere kundekategorier i databasen, hvorefter at disse kan benyttes i systemet uden at der skal ændres i koden. Hvert objekt indeholder en prisfaktor, men kan senere udvides til at indeholde anden information. Det er valgt at oprette alle typer af CustomerCategory -objekter ved billetoprettelse, hvilket forsimpler den nødvendige logik for at afspejle billetkøbets tilstand omkring antallet valgt på de pågældende kundekategorier. Ved at have alle CustomerCategory - objekter oprettet og tilknyttet en billet, er det muligt for præsentationslaget at tilgå alle informationer der skal bruges i forbindelse med et køb, uden at skulle tilgå databasen. En alternativ løsning kunne være at lave et 2-dimensionelt array, indholdende kundekategorier, pris og antal, som illustreret: Kategori 1 Kategori 2... Kategori N pris 1 pris 2... pris N antal antal... antal Denne løsning er ikke valgt, da der stræbes efter en mere objektorienteret løsning. Billettyper Softwareprototypen er kun tiltænkt håndtering af togbilletter, så derfor oprettes der ikke nogen generel billettype, som kan nedarves til tog-, bus-, færgebilletter m.fl. På nuværende tidspunkt undlades dette, da det vil skabe mere forviring end gavn. Hvis det bliver nødvendigt vil det forholdsvist nemt kunne implementeres (antaget at billettyperne benytter samme interface), da de andre klasser er sat op til at operere med, og på, et Ticket -interface. Ticket -interface Dette interface er blevet designet for at undgå at Purchase bliver en facadeklasse til Ticket. Interfacet giver samtidig en skarp grænseflade til hvad man kan med et Ticket -objekt. 6

7 Prisberegning Der vil ikke blive opkrævet betaling ved køb af billetter, men der bliver beregnet en billetpris ud fra rejselængde, antal personer og kundekategori. Prisen for rejselængden findes ud fra differensen mellem to takstzoner, fremfor at lave database med priser i mellem alle mulige stationskombinationer(høj kompleksitet med mange-tilmange relationer). 7

8 Kapitel 2 Remote Observer Pattern (RMI) 2.1 Klassifikation Adfærdsmønster (behavioural). 2.2 Mål At gøre det muligt at notificere og opdatere klienter automatisk, hvis der sker hændelser eller ændringer på en fælles server som disse klienter er tilknyttet, samt at undgå stærke afhængigheder mellem klienter og servere. 2.3 Også kendt som Distributed Observer, Remote Publish-Subscriber og Distributed Publish-Subscriber. 2.4 Motivation Kommunikation mellem klienter og servere, fungerer normalt ved at en klient sender en forespørgsel til en server, som så udfører denne forespørgsel og evt. returnerer relevant information til klienten. Til tider kan det være ønsket at overdrage initiativet til serveren, og lade denne informere klienten hvis der sker bestemte hændelser eller ændringer på serveren. Hvis det f.eks ønskes at en klient kan opdatere data fra en server løbende, vil det være fordelagtigt at serveren giver besked når der er ændringer, frem for at klienten løbende skal anmode serveren om der er nye ændringer. Især hvis der er mange klienter, og relativt sjældne opdateringer, vil det give unødig trafik på netværket, hvis klienterne konstant skal sende forespørgsler om ændringer på serveren. Da serveren typisk ikke har mulighed for at kende til alle de klienter der tilsluttes serveren, bliver klienterne nødt til først at give besked til serveren om at de findes, og serveren bliver således nødt til at holde styr på hvilke klienter der er tilgængelige. Det betyder at der bliver en uønsket cirkulær afhængighed mellem server og klient, hvilket er uønsket. 2.5 Løsning Fra den objektorientede verden, kendes allerede et mønster som har til formål at løse problemer med opdatering af objekter og minimering af cirkulære afhængigheder, nemlig Observer mønsteret. Dette mønster udvides, således det bedre kan anvendes når der benyttes netværkskommunikation. Selve netværkskommunikationen omtales senere. 8

9 2.5.1 Netværkskommunikation Til netværkskommunikation kan benyttes tre teknikker kendt i java: Sockets, Servlets og RMI (Remote Method Invocation). Servlets egner sig bedst til webapplikationer, mens sockets og RMI egner sig til brug ved almindelige applikationer. RMI kan benyttes til at overføre objekter direkte, og til at kalde metoder over netværk. RMI har dog den ulempe at visse porte skal være åbne for at kommunikationen kan foregå, og derfor benyttes RMI typisk lokalt og på lokalnetværk. Sockets egner sig til kommunikation over internettet, idet det kun vil være nødvendigt at åbne en enkelt port på hhv. server og klient. Det er her valgt at benytte RMI som løsning, idet det antages at servere og klienter er placeret på et lukket net. Dette vil dog ikke altid være tilfældet, men her vil det være muligt at implementere en lignende funktionalitet for en af de andre nævnte teknologier. 2.6 Struktur Klassediagrammet for det den omtalte løsning ses i figur 2.1. De to klasser RemoteObservable og ConcreteObservable placeres på serveren. ConcreteObserver placeres på klienten, mens de resterende klasser (alle interfaces), placeres på både klient og server. På klassediagrammet i IARemoteObserver +update() <<uses>> IARemoteObservable +addremoteobserver() +removeremoteobserver +notifyallobservers() ConcreteObserver <<uses>> IConcreteObservable RemoteObserverable -observerlist +addremoteobserver() +removeremoteobserver +notifyallobservers() ConcreteObservable Figur 2.1: Klassediagram for Remote Observer mønsteret. figur 2.2, ses et muligt design af håndteringen til netværkskommunikationen mellem server og klient for den valgte RMI løsning. 2.7 Deltagere De væsentligste deltagere er de to klasser ConcreteObserver og ConcreteObservable. Det er disse klasser der implementerer selve funktionalieteten i mønsteret. Interfacet IRemoteObserver, samt klasserne RemoteObservable, ConcreteObserver og ConcreteObservable udgør 9

10 server NetworkConnectionServerMediator -instance: NetworkConnectionServerMediator -observableremoteobject : Remote -serverport: int -serverregistry: Registry -NetworkConnectionServerMediator () +getinstance(): NetworkConnectionServerMediator -initializeconnections () +notifyobservers() ConcreteObservable 0 1 -instance observable +getinstance() -ConcreteObserver() client ConcreteObserver 0 observable 1 IARemoteObservable -ConcreteObserver () +update() 0 1 NetworkConnectionClientController -serverhost: String -serverport: int -clientport: int -instance: NetworkConnectionClientController -serverregistry: Registry -NetworkConnectionClientController () +getinstance(): NetworkConnectionClientController +getobserable() +addobserver() 1 0 observable Figur 2.2: Klassediagram for netværksløsning med RMI. et klassisk Observer mønster. Idet der ønskes netværkskommunikation mellem Observere og Observables, er der i forhold til det almindelige Observer mønster, indført de to klasser IConcreteObservable og IRemoteObservable. Ved netværkskommunikation er det at foretrække hvis klienten kun kender til interfacet for de metoder der skal kunne kaldes på serveren og omvendt. Der findes allerede et interface for de metoder der skal kunne kaldes på klienten (metoden update), men det samme er ikke gældende for serveren. Derfor indføres interfacet IConcreteObservable, samt interfacet IRemoteObservable. IRemoteObserver Interface der definerer metoden update, som benyttes af klienten til at udføre en bestemt handling når serveren anmoder klienten om opdatering. Interfacet definerer den metode som serveren kan benytte til at kommunikere med klienten (metoden update). IRemoteObservable Interface der definerer de metoder som serveren som miunimum skal implementere, for at gøre det muligt for observere at tilmelde og afmelde sig, samt metoden notifyallobservers, som skal gøre det for serveren at notificere alle klienter. RemoteObservable Klasse som implementerer interfacet IRemoteObservable. Klassen vedligeholder en LinkedList over alle IRemoteObservers. IConcreteObservable Interface der definerer de metoder som skal være tilgængelige for klienten. Derfor arver interfacet fra IRemoteObservable. ConcreteObservable Implementation af IConcreteObservable, og dermed implementation af alle de metoder som skal være tilgængelige for klienten. Arver fra RemoteObservable. ConcreteObserver Implementation af IRemoteObserver. Klassen implementerer således update-metoden, og definerer dermed hvad der skal ske når serveren anmoder klien- 10

11 ten om at opdatere. Klassen kan indeholde flere metoder, men er forpligtet til som minimum at have en update-metode. For netværkskommunikation benyttes følgende controllere på server og klient: NetworkConnectionServerMediator Fungerer som singleton, og har til formål at administrere alle netværksforbindelser på serveren. Det vil sige at denne klasse opretter alle de Observables der skal benyttes, og sørger for at binde disse til et RMI-registry, således de vil være tilgængelige for klienterne. NetworkConnectionClientController Fungerer som singleton. Klassens ansvar er at holde styr på forbindelsen til serverens registry, samt at gemme en reference til de objekter der er bundet i dette registry (de observables der er tilgængelige på serveren). Klassen tilbyder således alle observere på klienten en let tilgang til de objekter der kan tilgås på serveren. Det ses at NetworkConnectionClientController fungerer som controller mellem Observere på klienten og Observables på serveren, samt at NetworkConnectionServerMediator fungerer som mediator for Observables og det objekt der anmoder om at få initialiseret serveren. Det ses at mediatoren på serveren og controlleren på klienten har til formål at indkapsle den funktionalitet der varetager selve netværkskommunikationen. Dette gør også at det vil være muligt at ændre netværkskommunikationen således der benyttes en anden teknologi, ved at ændre mediator klassen på serveren, og ændre controlleren på klienten, således denne ogås virker som en mediator. 2.8 Samarbejde Sekvensdiagrammer for henholdsvis server og klient kan ses i diagrammerne på figur? og? Server Når serveren skal initialiseres, benyttes serverens mediatorklasse. Ved kald af metoden getinstance, initialiseres samtlige Observables, og disse bindes til serverens RMI registry. Når der er udviklet en ny Observable på serveren, er det således blot nødvendigt at tilføje denne observer i mediatorklassen, med en tilhørende notifyobservers metode som er tilknyttet den pågældende Observable. Metoden notifyobservers benyttes til at starte en opdatering af alle Observere Klient Idet en Observer oprettes, benytter denne Observer sig af netværkscontrolleren, for at få fat i en reference til den Observable som ligger på serveren. Dernæst tilføjer Observeren sig selv som Observer til den pågældende Observable. I stedet for at gøre dette direkte til Observable objektet på serveren, benyttes netværksklassen til dette, da denne sørger for at oprette et Remote objekt af klientens Observer, således serveren har mulighed for at tilgå klienten ved opdateringer. Alle andre metoder på serveren kan blot tilgås direkte, så længe der benyttes RMI. 2.9 Anvendelighed Mønsteret kan benyttes i følgende tilfælde: Når en ændring på serveren kræver opdatering af data på mange klienter. 11

12 Når en det ønskes at en server notificerer klienter uden at kende til disse klienters virkemåde. (Hvis for eksempel der er tale om forskellige typer klienter eller lignende). Når netværkstrafik ønskes minimeret ved systemer som skal kunne opdateres løbende Begrænsninger Den valgte løsning har nogle begrænsninger, som i det følgende vil blive beskrevet: Begrænsning 1: Åbning af porte for datakommunikation Det er nødvendigt at kende til alle de porte der skal benyttes på henholdsvis server og klient. På serveren vil dette ikke være noget problem, men på klienten vil det være nødvendigt at åbne de porte der skal være tilgængelige udefra. Det betyder at Remote Observer mønsteret kræver af klienten at minimum en port er åben (for at serveren kan anmode observere om update). Dette gør sig gældende ligegyldigt hvilken teknologi der benyttes. Det vil muligvis være nødvendigt at benytte en NAT server Begrænsning 2: Mere trafik med RMI end sockets Brugen af RMI vil resultere i mere trafik på netværket end almindelig sockets kommunikation. Til gengæld opnås der visse fordele, i og med datakommunikationen kan gøres næsten transparent for selve Observer objektet på klienten og Observable objektet på serveren. Dette er tilfældet da metoder tilsyneladende kan kaldes direkte, uden Observer og Observable objekterne opdager at der foregår netværkskommunikation Begrænsning 3: Stor netværksbelastning ved update Hvis alle klienter opdaterer data på samme tid, vil serveren kunne blive overbelastet. Derfor skal det vurderes om klienterne eventuelt skal vente et tilfældigt tidsrum før de forsøger at hente nye data. Alternativt kan serveren notificere en klient ad gangen, og først notificere næste klient når den første er opdateret Begrænsning 4: Ingen sikkerhed Datakommunikationen er som udgangspunkt usikker. Dette kan dog løses ved brug af SSL. Se afsnit? (alternativer) Begrænsning 5: Stadig afhængigheder Mønsteret har til formål at bryde den cirkulære afhængighed mellem Observer og Observable. Det ses dog i løsningen at der stadig eksisterer en cirkulær afhængighed, men til gengæld er denne afhængighed på et større abstraktionsniveau, og derfor ikke lige så stærk som hvis Observer og Observable havde været direkte afhængige Konsekvenser Kobling mellem server og klient minimeret, ved brug af interfaces. Transparent netværkskommunikation for Observer og Observable objekter. Sikker kommunikation hvis der benyttes SSL. Klienten kan blive opdateret på et hvilket som helst tidspunkt, hvilket kan have konsekvenser hvis data der er i brug ændres. 12

13 2.12 Implementation 2.13 Eksempelkode Til opdatering af stationsliste for billetautomat er følgende implementeret: 2.14 Alternativer Sockets Hvis der i stedet for RMI ønskes anvendt sockets eller anden form for netværkskommunikation, vil dette være muligt ved at modificere netværksklasserne NetworkConnectionServerMediator og NetworkConnectionClientController. Det vil ikke være muligt at gøre kommunikationen transparent på samme måde som RMI, og alle metodekald fra klient til server vil derfor skulle gå igennem en netværksklasse som kan oversætte disse til den ønskede kommunikationsform Kontinuerlige anmodninger til server Hvis ikke der ønskes brug af Observer mønsteret til kommunikationen mellem server og klient, vil det være en mulighed at lade klienten anmode serveren om opdateringer med jævne mellemrum. Alt efter hvor ofte dette er, hvor hurtigt opdateringer skal ud, og begrænsninger på netværkstrafik, kan denne løsning være at foretrække SSL (udvidelse) For at løse problemet med usikker netværkskommunikation kan det være en fordel at benytte SSL forbindelser. SSL kan opsættes i netværksklassen på henholdvis server og klient Kendt brug Benyttes til at opdatere stationslister i ETC billetautomaten. Desuden benyttes mønsteret til at initialisere opdatering af software Beslægtede mønstre og værker Observer mønsteret er det grundlæggende mønster. Remote Observer bygger på Observer mønsteret, og antager at Observer og Observable er adskilt, og at en netværksforbindelse forbinder de to. Mediator benyttes på serveren, idet mediatoren håndterer alle Observables som skal være tilgængelige fra netværket. Observables skal således tilgås via NetworkConnectionServerMediator. Singleton kan med fordel benyttes flere steder i mønsteret. Især på Observables, NetworkConnectionServerMediator og NetworkConnectionClientController. MVC benyttes på klienten, hvor Observeren svarer til View, interfacet for Observable fungerer som Model, og NetworkConnectionClientController fungerer som controller. 13

14 Kapitel 3 Language Pattern 3.1 Motivation Ved udvikling af software rettet mod slutbrugere af forskellig nationalitet, vil det ofte være nødvendigt at implementere understøttelse af flere sprog. For at undgå at udvikle flere, næsten ens, software-versioner i forskellige sprogvarianter, vil dette mønster med fordel kunne benyttes. Mønsteret er særligt anvendeligt i forbindelse med lagdelte arkitekturer (PCMEF og lignende). 3.2 Problem Udskiftning af tekster (på knapper, labels osv.) under afvikling af en applikation, på baggrund af et valgt sprog. 3.3 Løsning I dette mønster benyttes en PCMEF+ struktur, som den grundlæggende arkitektur. Det er control-laget som håndterer en opdatering, hvis brugeren skrifter sprog. Mellem control- og presentation-laget benyttes et observer-pattern (også kaldet publisher-subscriber pattern) til dette. For at kunne kommunikere direkte med persistenslaget, uden brug af domænelaget, benyttes et aquaintance-interface. Dette interface implementeres i foundation-laget. IALanguage: Interfacet IALanguage er kontrakten mellem CLanguage og FLanguage. I dette interface er defineret metoderne: getsentence, getlanguages, getdefault. Metoden getsentence, tager imod to variable, en kategori og en type, som gør det muligt at finde den sætning/meddelelse som man skal bruge. Metoden getlanguages returnerer en LinkedHashMap indeholdende de tilgængelige sprog i systemet. Metoden getdefault returnerer det prefix som er valgt som standard sprog. PJLabelObserver: Denne klasse er et eksempel på et grafisk element, som har fået tilføjet en ekstra funktionalitet, således den kan fungere som en Observer. Klassen arver fra JLabel, og indeholder en konstruktør, som tager imod to strenge, en type og en kategori, disse to benyttes til at hente den tekst, der skal stå på elementet. Ud over dette implementerer klassen interfacet Observer, hvilket betyder metoden update er implementeret. Denne metode er konstrueret således den henter en tekst fra persistenslaget, vha de to strenge der blev sat i konstruktøren, og opdaterer teksten på det grafiske element. CLanguage: Denne klasse arver fra Observable, og benytter interfacet IALanguage. Klassen har en privat konstruktør, det betyder at metoden getinstance skal kaldes, for at oprette 14

15 et objekt af CLanguage. Dette er valgt, da der kun må være et objekt af denne type, for at sikre der ikke bliver konflikt mellem hvilket sprog der er valgt. Metoden setlanguage benyttes af presentationslaget til at skifte sproget, og det er denne metode som gør brug af metoderne liggende i Observable: setchanged og notifyobservers. Derudover benytter klassen sig af interfacet IALanguage, som gør det muligt at benytte metoderne på FLanguage. FLanguage: Denne klasse implementerer interfacet IALanguage, dvs. metoderne getsentence, getlanguages og getdefault. Klassens ansvar er at hente de ønskede ting op fra databasen. 3.4 Interaktion [sekvensdiagram] På figur 3.1 ses hvordan observer-mønsteret kan benyttes til valg af sprog, samt hvordan valg af sprog håndteres. Når brugeren vælger et sprog på skærmen hentes CLanguage-objektet vha. den statiske metode getinstance på CLanguage. Dernæst ændres sproget vha. metoden setlanguage, som medtager variablen prefix. Dette prefix angiver det ønskede sprog. Når dette kald udføres, kalder CLanguage-objektet metoderne setchanged og notifyobservers på Observable-klassen, hvorfra CLanguage arver. Når notifyobservers kaldes, bliver update metoden, på alle objekter som implementerer interfacet Observer, kaldt. I update metoden hentes teksten fra databasen, som passer på det nyvalgte sprog, og denne tekst tilføjes til det grafiske element. Tekst fra databasen hentes vha. getsentence metoden på CLanguage Klassestruktur :CLanguage language :CLanguage observer: Observer Customer getinstance() getinstance() setlanguage(prefix: String) setchanged() notifyobservers() Loop[for each observer in Observer] update(this: Observable, null: Object) getsentence(textcategory: String, texttype: String) Figur 3.1: Sekvensdiagram for valg af sprog. 15

16 3.4.2 Databasestruktur [databasestrukturdiagram] Databasestrukturen er opbygget så den understøtter den valgte organisering af sætninger. Hver sætning der skal benyttes i systemet, er placeret i én bestemt kategori, med ét bestemt typenavn. Hvert typenavn har præcist en sætning for hvert sprog i systemet. For at understøtte sprogfunktionaliteten, benyttes de tabeller der beskrives i det følgende. Tabeller category: Indeholder alle kategorier i systemet. Dette kan fx være exceptions, help, main, general, ticket osv. Tabellen består af én kolonne, category name, som er unik, og primær nøgle. types: indeholder alle typer i systemet. Hver type er indordnet under bestemt én kategori, men der kan være flere typer med samme navn, når blot hver type med samme navn er placeret under forskellige kategorier. Tabellen types har tre kolonner: type id, category name og type name. type id er primær nøgle, category name er fremmednøgle (til tabellen category). category name og type name er tilsammen unikke, idet der er tilføjet et unikt index til disse. prefixes: indeholder en liste over alle sprog der findes i systemet. Der findes to kolonner: prefix og language name. prefix er primær nøgle, mens der er tilføjet et index der gør at language name er unik. default: indeholder en række der angiver hvilket sprog der er default. Der er kun en kolonne, prefix, som er fremmednøgle til tabellen prefixes. sentences indeholder tre kolonner: prefix, type id og message. prefix og type id er i kombination primær nøgle. Dette sikrer at hver type kun har ensætning for hvert sprog. prefix er fremmednøgle til prefix i prefixes, og type id er fremmednøgle til type id i types. Triggers For at sikre konsistens med forretningsmodellen, er der tilføjet to triggers. Den ene trigger sikrer at der tilføjes en sætning til alle typer når der tilføjes et sprog, mens den anden trigger sikrer at der tilføjet en sætning til alle sprog, når der oprettes en ny type. 1 DELIMITER $$ DROP TRIGGER IF EXISTS p r e f i x n e w P r e f i x $$ CREATE TRIGGER p r e f i x n e w P r e f i x AFTER INSERT ON p r e f i x e s FOR EACH ROW 6 BEGIN DECLARE done INT DEFAULT 0 ; DECLARE typeid INT( 1 0 ) ; DECLARE cur1 CURSOR FOR SELECT t y p e i d FROM types ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ; 11 OPEN cur1 ; REPEAT FETCH cur1 INTO typeid ; IF NOT done THEN 16 INSERT INTO s e n t e n c e s ( p r e f i x, type id, message ) VALUES (NEW. p r e f i x, typeid, NO MESSAGE! ) ; END IF ; UNTIL done END REPEAT; END $$ DELIMITER ; 16

17 Kodeudsnit 3.1: Trigger: prefixes newprefix. DELIMITER $$ DROP TRIGGER IF EXISTS types newtype $$ CREATE TRIGGER types newtype AFTER INSERT ON types 5 FOR EACH ROW BEGIN DECLARE done INT DEFAULT 0 ; DECLARE pre VARCHAR( 2 ) ; DECLARE cur1 CURSOR FOR SELECT p r e f i x FROM p r e f i x e s ; 10 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ; OPEN cur1 ; REPEAT FETCH cur1 INTO pre ; 15 IF NOT done THEN INSERT INTO s e n t e n c e s MESSAGE! ) ; END IF ; UNTIL done END REPEAT; END $$ 20 DELIMITER ; ( p r e f i x, type id, message ) VALUES ( pre,new. type id, NO Kodeudsnit 3.2: Trigger: newtype newtype. Rettigheder For at sikre konsistens med forretningsmodellen er det også fornuftigt at angive de rigtige rettigheder. Det anbefales derfor at rettighederne bliver som følger: category: SELECT, INSERT, UPDATE, DELETE types: SELECT, INSERT, UPDATE, DELETE prefixes: SELECT, INSERT, UPDATE, DELETE default: SELECT, UPDATE sentences: SELECT, UPDATE 3.5 Konsekvenser Softwaren vil blive langsomere, hvis man sammenligner med et system, hvor alle tekster er hardcodet. Hvis softwaren er hardcodet, er der ikke mulighed for modulation og dynamik. Der skal implementeres Observer-objekter for hvert grafisk element hvor en tekst skal kunne opdateres, afhængigt af et valgt sprog. Det betyder hvis der benyttes mange forskellige grafiske objekter, skal der også implementeres mange observere. En konsekvens ved disse Observerobjekter, er at de skal arve det grafiske element hvor der ønskes en opdatering. Alle tekster der skal kunne ændres skal angives i presentation-laget, idet ændring af tekster kræver dynamisk opdatering af grafiske elementer. Et softwaresystem bliver mere dynamisk, ved at kunne skifte sprog under afvikling. 17

18 3.6 Implementation 5 package p r e s e n t a t i o n ; import java. awt. ; import javax. swing. ; p u b l i c c l a s s PPanel extends JPanel { p r i v a t e PJLabelObserver t i t l e ; 10 p u b l i c PPanel ( ) { t i t l e = new PJLabelObserver ( FUNCTIONALITY, QUICK PURCHASE ) ; add( t i t l e ) ; 15 Kodeudsnit 3.3: PPanel i presentation. Viser hvordan et PJLabelOberserver objekt kan benyttes i den grafiske brugerflade. Sætningen der hentes er typen QUICK PURCHASE fra kategorien FUNCTIONALITY. package p r e s e n t a t i o n ; import java. u t i l. Observable ; import java. u t i l. Observer ; 5 import javax. swing. JLabel ; import c o n t r o l. CLanguage ; p u b l i c c l a s s PJLabelObserver extends JLabel implements Observer { S t r i n g category, type, t e x t ; 10 p u b l i c PJLabelObserver ( S t r i n g category, S t r i n g type ) { t h i s. c a t e g o r y = c a t e g o r y ; t h i s. type = type ; CLanguage. g e t I n s t a n c e ( ). addobserver ( t h i s ) ; 15 t e x t = CLanguage. g e t I n s t a n c e ( ). getsentence ( category, type ) ; t h i s. settext ( t e x t ) ; p u b l i c void update ( Observable languagesubject, Object o b j e c t ) { 20 t e x t = CLanguage. g e t I n s t a n c e ( ). getsentence ( category, type ) ; t h i s. settext ( t e x t ) ; Kodeudsnit 3.4: Visning af observeren PJLabelOberserver i presentation. Ved update hentes en ny sætning fra CLanguage package c o n t r o l ; import java. s q l. SQLException ; import java. u t i l. LinkedHashMap ; import java. u t i l. Observable ; import acquaintance. IALanguage ; p u b l i c c l a s s CLanguage extends Observable { p r i v a t e S t r i n g l a n g u a g e P r e f i x ; p r i v a t e IALanguage language ; p r i v a t e s t a t i c CLanguage i n s t a n c e = null ; p r i v a t e CLanguage ( ) 18

19 17 throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { language = ( IALanguage ) Class. forname ( foundation. FLanguage ). newinstance ( ) ; l a n g u a g e P r e f i x = language. g e t D e f a u l t ( ) ; p u b l i c s t a t i c CLanguage g e t I n s t a n c e ( ) { i f ( i n s t a n c e == null ) { t r y { 22 i n s t a n c e = new CLanguage ( ) ; catch ( Exception e ) { r e t u r n i n s t a n c e ; 27 p u b l i c void setlanguage ( S t r i n g p r e f i x ) { l a n g u a g e P r e f i x = p r e f i x ; t h i s. setchanged ( ) ; 32 t h i s. n o t i f y O b s e r v e r s ( ) ; p u b l i c S t r i n g getlanguage ( ) { r e t u r n l a n g u a g e P r e f i x ; 37 p u b l i c LinkedHashMap<String, String > getlanguages ( ) { t r y { r e t u r n language. getlanguages ( ) ; 42 catch ( Exception e ) { r e t u r n null ; 47 p u b l i c S t r i n g getsentence ( S t r i n g category, S t r i n g type ) { S t r i n g s e n t e n c e ; t r y { s e n t e n c e = language. getsentence ( languageprefix, category, type ) ; catch ( Exception e ) { 52 s e n t e n c e = The s e n t e n c e could not be found! ; r e t u r n s e n t e n c e ; Kodeudsnit 3.5: CLanguage i control. Virker som singleton. CLanguage objektet husker det valgte sprog, og er ansvarlig for at opdatere alle observere når sproget ændres. package acquaintance ; import java. s q l. SQLException ; 4 import java. u t i l. LinkedHashMap ; p u b l i c i n t e r f a c e IALanguage { p u b l i c S t r i n g getsentence ( S t r i n g p r e f i x, S t r i n g category, S t r i n g type ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException ; 9 p u b l i c LinkedHashMap<String, String > getlanguages ( ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException ; p u b l i c S t r i n g g e t D e f a u l t ( ) 19

20 throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException ; Kodeudsnit 3.6: IALanguage i Acquaintance. Definerer en kontrakt som FLanguage skal overholde, for at opfylde de services som kræves af control-laget. 2 package foundation ; import java. s q l. ; import java. u t i l. LinkedHashMap ; import acquaintance. IALanguage ; 7 p u b l i c c l a s s FLanguage implements IALanguage { p u b l i c S t r i n g getsentence ( S t r i n g p r e f i x, S t r i n g category, S t r i n g type ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { Connection dbconn = FDBConnection. getlanguageconnection ( ) ; 12 Statement stmt ; ResultSet r s ; stmt = dbconn. createstatement ( ) ; r s = stmt. executequery ( 17 SELECT message FROM messages WHERE p r e f i x = +p r e f i x+ + AND category name = +category+ AND type name= +type+ ) ; r s. next ( ) ; r e t u r n r s. g e t S t r i n g ( message ) ; 22 p u b l i c LinkedHashMap<String, String > getlanguages ( ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { Connection dbconn = FDBConnection. getlanguageconnection ( ) ; Statement stmt ; 27 R esultset r s ; LinkedHashMap<String, String > languages = new LinkedHashMap<String, String >() ; stmt = dbconn. createstatement ( ) ; 32 r s = stmt. executequery ( SELECT FROM p r e f i x e s ORDER BY language name ASC ) ; while ( r s. next ( ) ) { languages. put ( r s. g e t S t r i n g ( language name ), r s. g e t S t r i n g ( p r e f i x ) ) ; 37 r e t u r n languages ; p u b l i c S t r i n g g e t D e f a u l t ( ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { 42 Connection dbconn = FDBConnection. getlanguageconnection ( ) ; Statement stmt ; ResultSet r s ; stmt = dbconn. createstatement ( ) ; 47 r s = stmt. executequery ( SELECT FROM d e f a u l t ) ; r s. next ( ) ; r e t u r n r s. g e t S t r i n g ( p r e f i x ) ; Kodeudsnit 3.7: FLanguage i foundation. Håndterer databaseadgang til language-databasen. 20

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Hovedrapport 1. 1 Prolog 1 1.1 Forside... 1 1.2 Synopsis... 1 1.3 Forord... 2 1.4 Indholdsfortegnelse... 3 1.5 Læsevejledning... 6

Hovedrapport 1. 1 Prolog 1 1.1 Forside... 1 1.2 Synopsis... 1 1.3 Forord... 2 1.4 Indholdsfortegnelse... 3 1.5 Læsevejledning... 6 Indhold Hovedrapport 1 1 Prolog 1 1.1 Forside........................................ 1 1.2 Synopsis....................................... 1 1.3 Forord........................................ 2 1.4 Indholdsfortegnelse.................................

Læs mere

Rigtig SQL Programmering

Rigtig SQL Programmering Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter

Læs mere

Skriftlig opgave. Designtanker i database-nære systemer

Skriftlig opgave. Designtanker i database-nære systemer Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Version Dato Beskrivelse 1.0.0 26/11/2012 Initial version 1.2.0 05/03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Version Dato Beskrivelse 1.0.0 26/11/2012 Initial version 1.2.0 05/03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet. MOX og APOS2 Forord Dette dokument er en del af APOS version 2 manualerne. APOS version 2 (APOS2 herefter) er et organisation, klassifikation og personale system baseret på Sag & Dokument standarderne.

Læs mere

Data lagring. 2. iteration (implement backend)

Data lagring. 2. iteration (implement backend) Data lagring 2. iteration (implement backend) Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

Software Projekt NoSQL vs RMDB

Software Projekt NoSQL vs RMDB Software Projekt NoSQL vs RMDB Skrevet af Carsten Sørensen, Hans Jørgen Frandsen, Peter Haislund Department of Computer Science, University of Aarhus Aabogade 34, 8200 Arhus N, Denmark 201200089, 19960442,

Læs mere

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004 Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

ITONK1 Obligatorisk opgave 2 Badger Brewery Surveillance System

ITONK1 Obligatorisk opgave 2 Badger Brewery Surveillance System Ingeniørhøjskolen i Århus 2. juni 2006 IKT Dalgas Avenue 2 8000 Århus C ITONK1 Obligatorisk opgave 2 Badger Brewery Surveillance System Studerende: Henrik Brix Andersen, 01079 Tomas Stæhr Berg, 03539 Benjamin

Læs mere

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker

Læs mere

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags

Læs mere

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

educasoft - en professionel samarbejdspartner med speciale i uddannelse! Velkommen til educasoft's hjemmeside educasoft - en professionel samarbejdspartner med speciale i uddannelse! Professionelle undervisere Undervisning i virksomheden Undervisning dag/aften eller week-end

Læs mere

Objektorienterede metoder

Objektorienterede metoder Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags

Læs mere

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 RMI med BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 Hvad er RMI? Når man arbejder med Distribuerede Systemer, som igen vil sige at man ønsker at flere end én komputer

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Web- og serverprogrammering Arkitekturer i webprogrammer - dag 6 Model-View-Controller-arkitukturen Flerlags-arkitekturer Læsning: WJSP 10 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen IPv6 sameksistens med IPv4 af Laurent Flindt Muller & Jakob Pedersen Gennemgangsplan: Network Address Translation Protocol Translation (NAT-PT) - Motivation - IPv4 NAT - NAT-PT - Stateless IP/ICMP Translation

Læs mere

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret Håndbog Til CPR services Bilag 8 GCTP-standard m.m. CPR-kontoret Datavej 20, Postboks 269, 3460 Birkerød E-post: cpr@cpr.dk. Telefax 45 82 51 10. Hjemmeside: www.cpr.dk Side 2 af 14 Indholdsfortegnelse

Læs mere

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet

Læs mere

Indholdsfortegnelse for kapitel 1

Indholdsfortegnelse for kapitel 1 Indholdsfortegnelse for kapitel 1 Forord.................................................................... 2 Kapitel 1.................................................................. 3 Formål............................................................

Læs mere

Grundlæggende OOA - OOD

Grundlæggende OOA - OOD Grundlæggende OOA - OOD Dette kursus henvender sig til personer, der har lille eller ingen erfaring med softwareudvikling. Med udgangspunkt i UML opbygges et solidt kendskab til softwareudviklingens kunst

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Object-Relational Mapping

Object-Relational Mapping Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe 06-06-2010 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel

Læs mere

Fra idé til virkelig med Azure Mobile Services

Fra idé til virkelig med Azure Mobile Services Fra idé til virkelig med Azure Mobile Services Niels Ladegaard Beck Holion nlb@holion.dk @nielslbeck Windows Developers in Denmark Azure App Service Mobile App Introduktion til Azure Mobile Services Platform

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

Ruko SmartAir. Updater installation

Ruko SmartAir. Updater installation Ruko SmartAir Updater installation Introduktion. Updateren er en speciel enhed som giver os mulighed for at tilføje, læse og skrive funktioner i en offline installation. Med læse og skrive funktionen kan

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

Educasoft 2010 Side 1. Søgemaskineoptimering

Educasoft 2010 Side 1. Søgemaskineoptimering Educasoft 2010 Side 1 Kurser: 2010 Søgemaskineoptimering Sælger din virksomhed nok via hjemmesiden? Lad kunderne finde din virksomhed - uden annoncering! Dette kursus henvender sig til virksomheder, der

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Søren Løbner (lobner) ddb Databaser 2007 10 10

Søren Løbner (lobner) ddb Databaser 2007 10 10 ddb Excercise Week 4 Fra relationships til relations Nu når vi har fået vores skemaer på plads, kan SQL udtrykkene til konstruktion af relationerne laves Det foregår ved at vi tager en 1 til 1 oversættelse

Læs mere

BAAN IVc. Brugervejledning til BAAN Data Navigator

BAAN IVc. Brugervejledning til BAAN Data Navigator BAAN IVc Brugervejledning til BAAN Data Navigator En udgivelse af: Baan Development B.V. P.O.Box 143 3770 AC Barneveld Holland Trykt i Holland Baan Development B.V. 1997. Alle rettigheder forbeholdes.

Læs mere

Semesterprojekt - TaxaTracer. Statistik I Programudvikling

Semesterprojekt - TaxaTracer. Statistik I Programudvikling Semesterprojekt - TaxaTracer Statistik I Programudvikling Udarbejdet af: Daryosh (Danni) Derakhshan [dader06] dader06@student.sdu.dk Anders Steffen Andersen [ander06] ander06@student.sdu.dk Kasper Rytter

Læs mere

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

3. SEMESTER 2. PROJECT MULB Gruppe 1. 20. september 2015

3. SEMESTER 2. PROJECT MULB Gruppe 1. 20. september 2015 PROJECT DATABASE 3. SEMESTER 2. PROJECT MULB Gruppe 1. 20. september 2015 Ved at underskrive dette dokument bekræfter vi, at det indsendte materiale alt sammen er vores eget materiale og arbejde. Andreas

Læs mere

Dokumentering af umbraco artikeleksport:

Dokumentering af umbraco artikeleksport: Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Database "opbygning"

Database opbygning Database "opbygning" Dette områder falder mest under en DBA's ansvarsområde. Det kan sagtens tænkes at en database udvikler i nogle situationer vil blive nød til at oprette produktions og test) databaser,

Læs mere

ODIN-webservice ændringer release 2010 v2.0

ODIN-webservice ændringer release 2010 v2.0 DOKUMENTATION OG VEJLEDNING ODIN-webservice ændringer release 2010 v2.0 Indholdsfortegnelse 1. Nye webservice metoder... 2 1.1 Anvendelse af køretøjer og personel fra fremmede beredskaber ifm. indberetning

Læs mere

IT-Basecamp 2013. Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

IT-Basecamp 2013. Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S IT-Basecamp 2013 Real World Java EE Patterns Adam Bien 1 Indhold Lidt om mig Baggrund for valg af emnet Bogens opbygning Fra J2EE til JEE 5/6 Overflødiggjorte patterns Fremhæve et par patterns 2 Kenneth

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

Læs mere

Håndbog Til CPR services. Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper

Håndbog Til CPR services. Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper Håndbog Til CPR services Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper CPR-kontoret Datavej 20, Postboks 269, 3460 Birkerød E-post: cpr@cpr.dk. Telefax 45 82 51

Læs mere

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

Læs mere

XProtect-klienter Tilgå din overvågning

XProtect-klienter Tilgå din overvågning XProtect-klienter Tilgå din overvågning Tre måder at se videoovervågning på For at skabe nem adgang til videoovervågning tilbyder Milestone tre fleksible brugergrænseflader: XProtect Smart Client, XProtect

Læs mere

Rejsekort A/S idekonkurence Glemt check ud

Rejsekort A/S idekonkurence Glemt check ud Rejsekort A/S idekonkurence Glemt check ud 9. marts 2015 1 Indhold 1 Introduktion 4 1.1 Problembeskrivelse........................ 4 1.2 Rapportens opbygning...................... 4 2 Ordliste 5 3 Løsning

Læs mere

Web 2.0. World Wide Web (www)

Web 2.0. World Wide Web (www) Web 2.0 World Wide Web (www) I marts 1989 skrev Tim Berners-Lee et information udveksling program kaldt ENQUIRE. Da han arbejde i CERN, var han ikke tilfreds med kommunikationen, derfor videreudviklede

Læs mere

Objektorienteret Programmering

Objektorienteret Programmering Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

Installation af Bilinfo på Windows

Installation af Bilinfo på Windows Installation af Bilinfo på Windows Eksempler i denne vejledning er taget fra Windows 7 og Internet Explorer 8 Download det nødvendige program. Gå ind på www.bilinfo.dk/download Klik på download ud for:

Læs mere

1 Ordliste 2. 2 Indledning 3 2.1 Problemstillinger... 3 2.2 Problemformulering... 4 2.3 Problemafgrænsning... 4 2.4 Mål med projektet...

1 Ordliste 2. 2 Indledning 3 2.1 Problemstillinger... 3 2.2 Problemformulering... 4 2.3 Problemafgrænsning... 4 2.4 Mål med projektet... Indhold 1 Ordliste 2 2 Indledning 3 2.1 Problemstillinger.................................. 3 2.2 Problemformulering................................ 4 2.3 Problemafgrænsning................................

Læs mere

Løsningsforslag til Camp Let. Case Beskrivelse: Camp Let

Løsningsforslag til Camp Let. Case Beskrivelse: Camp Let Løsningsforslag til Camp Let Case Beskrivelse: Camp Let Firmaet Camp Let har til formål at udleje forskellige typer transportable ferieboliger. Det drejer sig i øjeblikket om campingbusser, campingvogne,

Læs mere

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0 SmartFraming Et vindue til nationale sundhedssystemer Version 3.0 Infrastruktur i dagens sundheds IT Det sundhedsfaglige personale benytter sig i dag af en række forskellige systemer i forbindelse med

Læs mere

Bucket Airlines. SW02 Projekt. Gruppe 2:

Bucket Airlines. SW02 Projekt. Gruppe 2: Bucket Airlines SW02 Projekt Gruppe 2: Alireza Derakhshan Frodi Hammer Lars Sønderby Jessen Michael Vestergaard Jessen kianosh@mip.sdu.dk frodi@mip.sdu.dk ljessen@mip.sdu.dk emjay@mip.sdu.dk 30. maj 2003

Læs mere

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

Læs mere

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100. SecVision - Quick Manual v1.0

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100. SecVision - Quick Manual v1.0 QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100 SecVision - Quick Manual v1.0 1. System Login 1.1. Bruger Login ID: admin Password: 00000 1.2. Indstilling af dato/tid og harddisk

Læs mere

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

BackEnd Programmering PHP

BackEnd Programmering PHP 17708 08/ 02/ 2013 BackEnd Programmering PHP Prototype (CMS system) 371615m02dka.sub.ots.dk/historyspot eller linket CMS system på: qrguide.mmd.eal.dk Login CMS Username: admin Password: 1234 Source kode

Læs mere

Supermarkedsmodellen for design af brugergrænseflade

Supermarkedsmodellen for design af brugergrænseflade Supermarkedsmodellen for design af brugergrænseflade Denne note er skrevet frit efter Peter Huber, som på et kursus i Efteruddannelsescenteret fortalte om supermarkedsmodellen til design af brugergrænseflader.

Læs mere

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4 Projekt Database, Gruppe 4A 0 Projekt 1, 3. Semester D A T A B A S E Klasse MulA13 Gruppenummer: A4 Projekt Database, Gruppe 4A 1 Fakta-ark Klasse MulA13, Gruppenummer: A4 Gruppemedlemmer: Amalie Ardahl

Læs mere

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &.

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &. MapBasic &.NET interaktion MapBasic.NET Jakob Lanstorp IT konsulent COWI Odense 23. Juni 2011 1 MapBasic &.NET interaktion Erfaring med MapBasic.NET / Visual Studio Anden programmering 2 Program Hurtig

Læs mere

OIOSAML.NET og Umbraco. ved Thomas Ravnholt ravnholt @ silverbullet.dk

OIOSAML.NET og Umbraco. ved Thomas Ravnholt ravnholt @ silverbullet.dk OIOSAML.NET og Umbraco ved Thomas Ravnholt ravnholt @ silverbullet.dk Silverbullet, stiftet 2003 Silverbullet A/S IT- rådgivning, projektledelse og implementering Officiel SKI-leverandør Kontorer i Århus

Læs mere

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets. Dagens program Har alle fået? Har nogen betalt for meget? Hav jeres koder klar Domæner change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog Hvad er widgets Hvad er

Læs mere

Obligatorisk opgave i objektorienteret analyse og design

Obligatorisk opgave i objektorienteret analyse og design Obligatorisk SD-opgave s. Obligatorisk opgave i objektorienteret analyse og design Løs følgende, som en indviduel opgave. I må gerne samarbejde i grupper, men alle har ansvar for at udfærdige sin egen

Læs mere

DTU 02335 Net Teknologi A Webprogrammering og Datakommunikation Eksamensprojekt Krav til rapport September 2008 KRAV TIL RAPPORTEN

DTU 02335 Net Teknologi A Webprogrammering og Datakommunikation Eksamensprojekt Krav til rapport September 2008 KRAV TIL RAPPORTEN KRAV TIL RAPPORTEN Eksamensprojektet i Web-programmering og Datakommunikation skal afleveres som en rapport. Rapporten skal afleveres, i 2 eksemplarer (kopier). Endvidere skal være angivet URL, for emner

Læs mere

Gode praksisser og arkitekturer i Android-programmering. Android - praksisser og arkitekturer Copyright Lund & Bendsen A/S

Gode praksisser og arkitekturer i Android-programmering. Android - praksisser og arkitekturer Copyright Lund & Bendsen A/S Gode praksisser og arkitekturer i Android-programmering 1 Om oplægsholderen Jacob Nordfalk nordfalk@lundogbendsen.dk Instruktør for Lund&Bendsen Ekstern lektor på IHK Underviser i Java SE, Java EE, Webserverprogrammering,

Læs mere

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø Høringssvar vedr. FESD GIS-integrationsmodel version 2.0 Geodata Danmark har

Læs mere

RIGSPOLITIET. Vejledning i konvertering. fra. Word -dokument. til. PDF-fil. på politi.dk. Rigspolitiets websektion

RIGSPOLITIET. Vejledning i konvertering. fra. Word -dokument. til. PDF-fil. på politi.dk. Rigspolitiets websektion RIGSPOLITIET Vejledning i konvertering fra Word -dokument til PDF-fil på politi.dk Rigspolitiets websektion Indledning Da vi skal leve op til kravene om tilgængelighed på Internettet, skal alle tekster

Læs mere

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben GoogleAppEngine GoogleAppEnginesomplatform ClausMyglegaardVagnerogJacobvonEyben Abstract CloudcomputingerenteknologidervinderfremidengenerelleITinfrastruktur. SocialemediersåsomLinkedIn,TwitterogFacebookharøgetbehovetfor

Læs mere

Indholdsfortegnelse. Systembeskrivelse kapitel 8 Administrationsdatabase

Indholdsfortegnelse. Systembeskrivelse kapitel 8 Administrationsdatabase Indholdsfortegnelse 5. Administrationsdatabase... 2 5.1 Metadata... 2 5.2 Administrationsdata... 3 5.2.1 Indstillingsmuligheder... 3 5.2.2 Webside... 4 5.2.3 Klikafgift (Udgået)... 4 5.2.4 Modtageboks...

Læs mere

Projekt 1 Database. Cphbusiness Lyngby Multimediedesigner, 3. semester mul-a12e, gruppe 1

Projekt 1 Database. Cphbusiness Lyngby Multimediedesigner, 3. semester mul-a12e, gruppe 1 Projekt 1 Database Cphbusiness Lyngby Multimediedesigner, 3. semester mul-a12e, gruppe 1 CREATE TABLE IF NOT EXISTS `3sempro1`.`cu `customer_id` INT(5) NOT NULL AUTO_INCR `name` VARCHAR(45) NULL DEFAULT

Læs mere

Servlets, Tomcat & BlueJ

Servlets, Tomcat & BlueJ Servlets, Tomcat & BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 05.october 2007 Hvad er Servlets: For at forstå det, må vi først få styr på to begreber, nemlig statiske og dynamiske hjemmesider

Læs mere

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 3: E-R modellering 17. februar 2005 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvornår, hvorfor og hvordan? Business

Læs mere

PHP Crash course. Databaser

PHP Crash course. Databaser PHP Crash course Databaser PHP Intro PHP er et server scripting sprog der kan bruges til at lave aktivt indhold på hjemme sider. Der er to betingelser som skal opfyldes for at serveren fortolker PHP koden.

Læs mere

Tidsregistrering. Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4. Informationsteknologi B. Roskilde Tekniske Gymnasium 25-11-2014

Tidsregistrering. Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4. Informationsteknologi B. Roskilde Tekniske Gymnasium 25-11-2014 2014 Tidsregistrering Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4 Informationsteknologi B Roskilde Tekniske Gymnasium 25-11-2014 Indholdsfortegnelse 1 Indledning... 3 2 User stories... 3 3

Læs mere

KIH Database. Systemdokumentation for KIH Databasen. 1. maj 2013. Side 1 af 13

KIH Database. Systemdokumentation for KIH Databasen. 1. maj 2013. Side 1 af 13 KIH Database Systemdokumentation for KIH Databasen 1. maj 2013 Side 1 af 13 Indholdsfortegnelse Indholdsfortegnelse... 2 Indledning... 3 Systemoverblik... 3 KIH Database applikationsserver... 5 Forudsætninger

Læs mere

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er Ugens emner FA minimering [.-.] MyHill-Nerode-sætningen en algoritme til minimering af FA er En karakteristik af de regulære sprog Et sprog L er regulært hvis og kun hvis L beskrives af et regulært udtryk

Læs mere

Objektorienteret design med arv og polymorfi:

Objektorienteret design med arv og polymorfi: Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret

Læs mere

Fjernadgang til BEC s systemer via Portal2

Fjernadgang til BEC s systemer via Portal2 Fjernadgang til BEC s systemer via Portal2 - tilgå applikationer og arbejdsplads via webbaseret portal (UAG) Udarbejdet af: Niklas Petersen Gældende fra: 24-08-2015 Version Forfatter Dato Dokumentstatus

Læs mere

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning.. Side 1 af 11 Dato: 07-09-2003 Opgaver i oprettelse af kunder og info i database med java. Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus,

Læs mere

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et

Læs mere

Repræsentationer af handlinger og sproghandlinger

Repræsentationer af handlinger og sproghandlinger Repræsentationer af handlinger og sproghandlinger Generelt: I denne opgave omhandler pensum generelt koblingen mellem IT-systemer, som et medium hvorved brugerne af disse systemer udfører sproghandlinger.

Læs mere

Advanced Word Template Brugermanual

Advanced Word Template Brugermanual Advanced Word Template Brugermanual Forord: Advanced Word Template er et værktøj, der anvendes sammen med Microsoft Word til at opbygge ensartet beskrivelser på en mere intelligent måde end Copy and Paste

Læs mere

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Kim Harding Christensen EOS A/S Margrethepladsen 3 8000 Århus TLF: 8732 8787

Læs mere

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre Postregistrering Eksamensprojekt i Lavet af: Frantz Furrer Vejleder: Claus Borre Side af 4 Titelblad: Skolens navn: Svendborg Tekniske Gymnasium - Rapport: Rapportens titel: Postregistrering Side antal:

Læs mere

Rapport. Udarbejdet af: Mayianne Nøks Pedersen. Skole login: knmape68. E-mail: mypedersen@gmail.com

Rapport. Udarbejdet af: Mayianne Nøks Pedersen. Skole login: knmape68. E-mail: mypedersen@gmail.com Rapport Udarbejdet af: Mayianne Nøks Pedersen Skole login: knmape68 E-mail: mypedersen@gmail.com URL til brugerundersøgelsen: http://web328.webkn.dk/hjemmeside/image/laering/sem2brugerundersogelse/brugerundersogelse/

Læs mere

Installationsmanual. 2 Installering...6. 3 Installering SMS sender...7. 4 Installering PSTN/GSM sender...7. 5 Installering PSTN GSM konverter...

Installationsmanual. 2 Installering...6. 3 Installering SMS sender...7. 4 Installering PSTN/GSM sender...7. 5 Installering PSTN GSM konverter... CS 47 Syntax Side 2 Indholdsfortegnelse 1 Introduktion...4 1.1 Funktioner...4 1.2 Forsyning...4 1.3 PSTN support...5 1.4 GSM support...5 1.5 SMS support...5 1.6 Indgange...5 1.7 Udgange...5 1.8 Password...5

Læs mere

Internet Information Services (IIS)

Internet Information Services (IIS) Internet Information Services (IIS) Casper Simonsen & Yulia Sadovskaya H1we080113 06-11-2013 Indholdsfortegnelse Problemformulering... 2 Hvorfor:... 2 Hvad:... 2 Hvordan:... 2 Problembehandling... 3 Introduktion...

Læs mere

Database kursus Forår 2013

Database kursus Forår 2013 Database kursus Forår 2013 Jacob Aae Mikkelsen Database design og programmering/databaser fra Organisationsorienteret softwareudvikling 1 Praktisk info Lærebog Database Systems: The Complete Book Skema

Læs mere

Introduktion til SQL

Introduktion til SQL Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke

Læs mere

Quick Guide for Mobil Reception (Omhandler mobil reception også kaldet isymphony)

Quick Guide for Mobil Reception (Omhandler mobil reception også kaldet isymphony) Quick Guide for Mobil Reception (Omhandler mobil reception også kaldet isymphony) Generelt Mobil Reception er et værktøj som bruges til at overvåge medarbejdere, kø er og meget andet samt styre dit omstillingsanlæg

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

Bringe taksonomier i spil

Bringe taksonomier i spil Bringe taksonomier i spil Frans la Cour Hvem er jeg? Frans la Cour 3 år hos ensight a/s Systemdesign Projektledelse og implementering Undervisning Med udgangspunkt i Veritys værktøjer Vise nogle af de

Læs mere

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling Java og JEE 1 2 Udfordringer og problemstillinger En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling 3 Generelt om Java og JEE 4 Generelt, I Man undervurderer hvor mange

Læs mere

SAX Simple API for XML.

SAX Simple API for XML. SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller

Læs mere

Kravspecifikation for bibos1

Kravspecifikation for bibos1 Oktober 2011 Projekt for Århus Kommunes Biblioteker i samarbejde med Odense Centralbibliotek og Silkeborg Bibliotekerne Indhold 1. Baggrund for projektet... 2 1.1 Projektets formål... 2 2. Tilbud... 3

Læs mere