Intelligent House Control System

Størrelse: px
Starte visningen fra side:

Download "Intelligent House Control System"

Transkript

1 OOPJ-E-1 F2003 Side 1 af 38 Intelligent House Control System udført af Kim Damgaard Indholdsfortegnelse Intelligent House Control System... 1 Indholdsfortegnelse... 1 Indledning... 2 Problemformulering... 2 Vision (formålet med programmet)... 2 Inception-fasen... 2 Krav til systemet (hvordan programmet skal virke)... 2 Definition af system grænse... 3 Primære aktører... 3 Primære aktørers mål... 3 Definer Use Cases... 4 Go - No go?... 5 Elaboration-fasen... 5 Testovervejelser... 8 Hvordan opgaven tænkes løst... 8 Domain Model... 8 Detaljeret design Beskrivelse af hvordan programmet virker Lever programmet op til forventningerne Bilag Bilag 1: SystemTester.java Bilag 2: Output ved kørsel af klassen SystemTester Bilag 3: Kildetekst til selve programmet Bilag 4: Klassediagram... 38

2 OOPJ-E-1 F2003 Side 2 af 38 Indledning Dette projekt er udarbejdet ved anvendelse af den proces, der officielt benævnes Unified Process (UP). UP kombinerer "best practices", iterativ- og risikodreven udvikling og anvendes ofte ved udvikling af objekt-orienterede systemer. UP består af fire faser, men grundet denne opgaves tidsmæssige begrænsninger når vi kun at arbejde i de to første, nemlig Inception-fasen og Elaboration-fasen. Endvidere er det iterative forløb ikke afspejlet i denne rapport og det vil kun være en lille delmængde af det endelige system, som kan nå at blive implementeret. Intelligent House Control System benævnes herefter som IHCS. Problemformulering Langt de fleste huse i dag indeholder ingen intelligent styring. Deres ejere må således leve med større risiko for skader ved indbrud, strømsvigt, gasudslip, brand- og vandskader osv. De går også glip af besparelser i udgifterne til bl.a. varme og lys, som en intelligent styring beviseligt medfører. Endvidere er der ikke mulighed for at fjernstyre/overvåge husets funktioner f.eks. via internettet. Vision (formålet med programmet) Intelligent House Control System er et bud på, hvordan styringen af fremtidens bolig skal fungere. Med dette system installeret kan husejeren styre husets funktioner efter sine behov. Systemet fødes med oplysninger i henhold til de fysiske forhold så som rum-fordeling, sensorer, tænd/sluk kontakter, lukke/åbne mekanismer. Endvidere angives ønskede temperaturer, tidsintervaller, koder/fingeraftryk for adgangskontrol, hvilke funktioner der skal kunne fjernstyres etc. Herefter slår systemet eksempelvis alarm ved indbrud, lukker for vandet ved opståede utætheder, lukker for gassen i tilfælde af udslip, tænder for lyset i indkørsel og entre når man kommer hjem om aftenen. Mulighederne er mange. Ændringer i systemets opsætning kan simuleres grafisk. Via Internet kan man logge sig på husets styresystem og f.eks. følge med i hvad der foregår i huset, tænde for varmen, kontrollere om vinduer er lukket og hvis ikke lukke dem (kræver selvfølgelig motor). Inception-fasen I denne fase undersøges det om, der skal investeres i en mere dybdegående analyse af problem-domænet. Med andre ord: Skal vi efter denne fase starte på Elaboration-fasen? Endvidere er det vigtigt at få afklaret om projektets interessenter er enige om visionen for projektet. Krav til systemet (hvordan programmet skal virke) Man kan med fordel kategorisere kravene efter FURPS+ modellen, for bl.a. at minimere risikoen for at glemme krav til systemet. For at finde samt dokumentere de funktionelle krav (F'et i FURPS+) benyttes Use-Case modellen, hvor ideen er at fokusere på hvorledes brugeren/aktøren, ved at bruge systemet, kan få sine mål opfyldt. Fremgangsmåden er at vælge system-grænse, identificere primære aktører; identificere primære aktørers mål og slutteligt definere Use Cases, der opfylder aktørernes mål.

3 OOPJ-E-1 F2003 Side 3 af 38 Definition af system grænse Systemet består af selve applikationen samt hardwaren og kan tilgås vha. et lokalt brugerinterface eller via Internettet. Uden for system grænsen er aktører samt en eventuel alarm-central. Primære aktører Følgende primære aktører er identificeret: Husejeren (systemadministrator) Personer med adgang til huset Bevægelse (beboere, gæster, rengøringspersonale, indbrudstyv, husdyr etc.) Tiden Temperaturen (ude og inde) Lys/mørke Gas, røg, vand og strøm Overvågningsproces Primære aktørers mål Aktør Husejeren (systemadministrator) Personer med adgang til huset Bevægelse Tiden Temperaturen (ude og inde) Lys/mørke Gas, røg, vand og strøm Overvågningsproces Mål Minimere risiko for skader. Minimere udgifterne til bl.a. varme og lys. Fjernstyre/overvåge husets funktioner f.eks. via internettet. Øge komforten. Sætte systemet op i henhold til de fysiske forhold så som rum-fordeling, vinduer, døre, sensorer, tænd/sluk kontakter, lukke/åbne mekanismer. Indtaste temperaturer, tidsintervaller. Angive personoplysninger så som adgangskoder/fingeraftryk, mobil.nr., -adresser. Angive hvilke funktioner der skal kunne fjernstyres etc. Simulere ændringer i systemets opsætning grafisk. Start systemet. Sætte alarm til/slå alarm fra. Tænde for lys. Give alarm. Regulere rum- og varmtvandstemperaturer. Forhindre/tillade adgang for givne personer i angivne tidsrum. Slukke for lyset efter en periode uden bevægelse. Regulere fremløbstemperatur i varmesystemet. Undgå at tænde for lys ved bevægelse, hvis der i forvejen er lyst nok. Give alarm. Slukke for gas elller vand. Genstarte system-processer, der er gået ned. Meddele systemadministrator vedr. system-fejl.

4 OOPJ-E-1 F2003 Side 4 af 38 Definer Use Cases En Use Case ifbm. kravanalyse for en software applikation bør, som en tommelfingerregel, omhandle forretningsprocesser på et niveau defineret som følger: En handling (som respons på en forretningsbegivenhed) udført af én person på ét sted på én gang, der tilfører målbar værdi til virksomheden og efterlader data på et konsistent stade. Ved at gennemgå listen over de primære aktørers mål og med ovenstående definition in mente, har jeg på nuværende tidspunkt identificeret følgende Use Cases: UC1: UC2: UC3: UC4: UC5: UC6: UC7: UC8: UC9: UC10: UC11: UC12: UC13: UC14: UC15: UC16: UC17: UC18: UC19: UC20: UC21: UC22: UC23: UC24: UC25: UC26: UC27: UC28: UC29: UC30: UC31: Angive/vedligeholde personoplysninger så som adgangskode/fingeraftryk, mobil.nr., -adresse og billede. Angive roller, tidsintervaller og tilknytte disse til personer. Angive oplysninger om hus så som adresse, plantegning og tilknyttede personer. Angive rum. Angive udvendige vinduer og døre. Angive oplysninger om alarm-system. Angive bevægelses-sensor. Angive lys-sensor. Angive strømsvigt-føler. Angive gaslugt-sensor. Angive røgalarmer. Angive vandmåler. Angive temperatur-følere. Angive tænd/sluk kontakter og om disse kan fjernstyres. Angive lukke/åbne mekanismer og om disse kan fjernstyres. Angive ønskede temperaturer. Angive oplysninger om varmesystemet. Angive varmestyringsperioder. Simulere ændringer i systemets opsætning. Sætte alarm til. Slå alarm fra. Tænde for lys. Slukke for lys. Give alarm. Regulere rum-temperatur. Regulere varmtvandstemperatur. Slukke for gas. Slukke for vand. Start systemet. Genstarte system-processer, der er gået ned. Meddele systemadministrator vedr. system-fejl. Uden for denne rapport er disse Use Cases beskrevet i "Brief Format". Ligeledes uden for rapporten udarbejdes på dette tidspunkt i projektet et Use Case Context diagram for at tilvejebringe et overblik over systemet. Det er vigtigt at notere sig, at ovenstående liste, i nuværende fase, ikke er udtømmende. Endvidere vil de funktionelle krav, som vores Use Cases skal være med til at afdække, næsten med sikkerhed, blive udsat for ændringer. Ændringer undervejs i projektforløbet skal ikke opfattes som et problem, men nærmere som en drivkraft i den igangværende proces (UP).

5 OOPJ-E-1 F2003 Side 5 af 38 Ved fortsat at benytte FURPS+ modellen, skal de ikke-funktionelle krav nu findes. Endvidere skal næste iteration planlægges ved at "ranke" kravene. Disse ting udelades dog også i besvarelsen af denne opgave. Go - No go? Det vurderes at projektet kan gennemføres samt at der vil være et stigende og profitabelt marked for systemer af denne type. Det besluttes at gå videre til Elaboration-fasen. Elaboration-fasen Højest rankede Use Cases beskrives nu i "Fully Dressed" format (her vises kun Basic Flows). Disse bør i virkelighedens verden understøttes/ledsages af hurtigt udarbejdede skærmbillede layouts. UC1: Angive/vedligeholde personoplysninger så som adgangskode/fingeraftryk, mobil.nr., adresse og billede. Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at registrere oplysninger om personer, der relaterer sig til IHCS. Preconditions: Husejeren er logget på systemet. Success Guarantee (Postconditions): Oplysninger om person er registeret i systemet. Trigger: Husejeren ønsker at tilknytte personer til IHCS. Basic Flow: 1. Husejeren starter skærmbilledet "Registrer personoplysninger". 2. Systemet søger efter allerede registrede personer. 3. Systemet lister de oprettede personer. 4. Husejeren markerer den person, hvor oplysningerne skal opdateres. 5. Husejeren opdaterer relevante felter. 6. Husejeren trykker på "Gem". 7. Systemet gemmer personoplysningerne. UC3: Angive oplysninger om hus så som adresse, plantegning og tilknyttede personer. Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at registrere oplysninger om sit hus, der skal styres af IHCS. Preconditions: Husejeren er logget på systemet. Success Guarantee (Postconditions): Oplysninger om huset er registeret i systemet. Trigger: Husejeren ønsker at styre sit hus vha. IHCS. Basic Flow: 1. Husejeren starter skærmbilledet "Registrere husoplysninger". 2. Systemet søger efter husoplysninger. 3. Systemet konstaterer at der ikke findes oplysninger. 4. Husejeren udfylder felterne. 5. Husejeren trykker på "Gem". 6. Systemet gemmer oplysningerne.

6 OOPJ-E-1 F2003 Side 6 af 38 UC4: Angive rum. Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at registrere oplysninger om rummene i huset, der skal styres af IHCS. Preconditions: Husejeren er logget på systemet. Success Guarantee (Postconditions): Oplysninger om rum er registeret i systemet. Trigger: Husejeren ønsker at styre sit hus vha. IHCS. Basic Flow: 1. Husejeren starter skærmbilledet "Registrere rum". 2. Systemet søger efter rum. 3. Systemet konstaterer at der ikke findes oplysninger. 4. Husejeren udfylder felterne. 5. Husejeren trykker på "Gem". 6. Systemet gemmer oplysningerne. UC5: Angive udvendige vinduer og døre. Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at registrere oplysninger om vinduer og døre i huset, der skal styres af IHCS. Preconditions: Husejeren er logget på systemet. Success Guarantee (Postconditions): Oplysninger om udvendige vinduer og døre er registeret i systemet. Trigger: Husejeren ønsker at styre sit hus vha. IHCS. Basic Flow: 1. Husejeren starter skærmbilledet "Registrere vinduer og døre". 2. Systemet præsenterer rummene og husejeren udvælger et. 3. Husejeren tilføjer de nødvendige vinduer/døre (mulige typer er foruddefineret i systemet). 4. Husejeren trykker på "Gem". 5. Systemet gemmer oplysningerne. UC7 og 8: Angive bevægelses-sensor, lys-sensor. Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at registrere oplysninger om bevægelses- og lys-sensorer i huset, der skal styres af IHCS. Preconditions: Husejeren er logget på systemet. Success Guarantee (Postconditions): Oplysninger om bevægelses- og lys-sensor er registeret i systemet. Trigger: Husejeren ønsker at styre sit hus vha. IHCS. Basic Flow: 1. Husejeren starter skærmbilledet "Registrere bevægelses- og lys-sensorer". 2. Systemet præsenterer rummene og husejeren udvælger et. 3. Husejeren tilføjer bevægelses- og/eller lys-sensor. 4. Husejeren trykker på "Gem". 5. Systemet gemmer oplysningerne.

7 OOPJ-E-1 F2003 Side 7 af 38 UC14: Angive tænd/sluk kontakter og om disse kan fjernstyres (er simplificeret til "Angiv lampe"). Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at registrere oplysninger om lamper i huset, der skal styres af IHCS. Preconditions: Husejeren er logget på systemet. Success Guarantee (Postconditions): Oplysninger om lampe er registeret i systemet. Trigger: Husejeren ønsker at styre sit hus vha. IHCS. Basic Flow: 1. Husejeren starter skærmbilledet "Registrere lamper". 2. Systemet præsenterer rummene og husejeren udvælger et. 3. Husejeren tilføjer lampe. 4. Husejeren trykker på "Gem". 5. Systemet gemmer oplysningerne. UC19: Simulere ændringer i systemets opsætning. Primary Actor: Husejeren. Stakeholders and Interests: Husejeren: Ønsker at simulere opsætningen af IHCS. Preconditions: IHCS er sat op og startet. Husejeren er logget på systemet. Success Guarantee (Postconditions): Husejeren har fået et overblik over hvorledes huset fungerer med den nuværende opsætning af IHCS. Trigger: Husejeren ønsker at afgøre om opsætningen af IHCS er optimal. Basic Flow: 1. Husejeren vælger hus, der skal simuleres. 2. Husejeren starter skærmbilledet "Simuler IHCS opsætning". 3. Systemet præsenterer rum, sensorer, lamper samt instruktioner. 4. Husejeren følger instruktionerne, herunder bevæge cursoren hen over de grønne bevægelses-følere for at simulere bevægelse, for at sikre sig at opsætningen af IHCS er optimal. 5. Husejeren lukker vinduet. UC22: Tænde for lys (er tilsvarende UC14 simplificeret). Primary Actor: Bevægelse. Stakeholders and Interests: Husejeren samt øvrige personer med adgang til huset: Ønsker at øge komforten. Preconditions: IHCS er sat op og startet. Bevægelses- og lys-sensorerer er monteret. Lamper er tilsluttet. Success Guarantee (Postconditions): Lyset tændes som ønsket. Trigger: Bevægelses-sensor aktiveres. Basic Flow: 1. En bevægelses-sensor aktiveres og denne sender signal til IHCS. 2. I systemet sættes sensoren i "Bevægelse registreret" mode. 3. Sensoren notificerer registrerede bevægelses-lyttere at bevægelse forekom (bevægelses-lyttere svarer i denne Use Case kun til et rum, men andre objekter så som alarm etc. vil komme til). 4. Rummet finder lamper, der skal tændes ved bevægelse (hvis det ikke er for lyst). 5. Lyset tændes. UC23 er ikke implementeret rigtigt. Funktionen er kun implementeret i simuleringen, hvor tændte lamper slukkes efter 5 sekunder.

8 OOPJ-E-1 F2003 Side 8 af 38 Herefter skal der nu udarbejdes aktivitetsdiagrammer, der er OOAD s flowcharts, som viser aktiviteternes hændelsesforløb og billedeliggører vores Use Cases. Disse vises heller ikke i denne rapport. Testovervejelser Afprøvning af programmet er inspireret af testmetoden "test-first programming", der anvendes i Extreme Programming (XP). Og da hver iteration i UP i princippet indeholder en "mini V-model", har de gode gamle test-dyder fra V-modellen, der jo også indgyder til at teste fra starten, selvfølgelig også været en kilde til inspiration. Fremgangsmåden ved testmetoden "test-first programming" er først at skrive lidt testkode, dernæst lidt kode der skal testes. Når koden er succesfuldt testet gentages forløbet. Ovenstående er gennemført vha. klassen SystemTester.java som kan ses i Bilag 1. Outputtet af testen kan ses i Bilag 2. Hvordan opgaven tænkes løst Før det egentlige designarbejde påbegyndes, er det formålstjenstligt at få afklaret input og output system events relateret til "Basic Flow" scenariet i den Use Case, der arbejdes med. Det letter overgangen fra analysearbejdet til designarbejdet. Hertil anvendes et System Sekvens diagram, som konkretiserer operationerne, der relaterer sig til Basic Flow scenariet. Senere i design-forløbet laves "rigtige" sekvensdiagrammer, hvor det vil fremgå hvilke objekter i systemet, der får ansvaret for at udføre operationerne. Domain Model Designarbejdet påbegyndes ved at udarbejde en Domain Model. Da vi jo arbejder i henhold til UP er det vigtigt ikke at kaste sig ud i og lave en komplet model på nuværende stadie. I efterfølgende iterationer udbygges modellen til også at afspejle disse. Domain modellen repræsenterer konceptuelle klasser (ting, begreber fra den virkelige verden) og ikke software klasser. Et eksempel på en software klasse kan f.eks. være en interface klasse til en database. For at finde de konceptuelle klasser i problem-domænet er Use Cases gennemgået for navneord og ydermere er der anvendt en "Conceptual Class Category List". Kandidater, der kan repræsenteres vha. simple datatyper som f.eks. int, er ikke konceptuelle klasser, men nærmere attributter. Andre kandidater som eksempelvis mobil.nr. og adresse der repræsenteres vha. en lidt mere kompleks datatype nemlig String, betragtes stadig som attributter. Flg. liste repræsenterer de konceptuelle klasser, der relaterer sig til iterationerne gennemløbet indtil nu: Hus Lampe Person Rum Bevægelses-sensor Dør Lys-sensor Vindue Alarm Varmesystem

9 OOPJ-E-1 F2003 Side 9 af 38 Herefter skal vi, uden at anvende ret meget tid, identificere associationer mellem de konceptuelle klasser. Hertil anvendes en "Common Associations List": Category A is physical part of B* A is logical part of B* A is physically contained in/on B* A is logically contained in B* A is a description for B A is a line item of a transaction or report B A is known/logged/recorded/reported/captured in B* A is a member of B A is an organizational subunit of B A uses or manages B A communicates with B A is related to a transaction B A is a transaction related to another transaction B A is next to B A is owned by B A is an event related to B Candidates Rum - Hus Dør - Rum Vindue - Rum Varmesystem - Hus Alarm - Hus Bevægelses-sensor - Rum Lys-sensor - Rum Lampe - Rum Person - Hus Kategorier markeret med * er af speciel vigtighed i Domain Model henseende.

10 OOPJ-E-1 F2003 Side 10 af 38 Slutteligt er attributter identificeret for de enkelte klasser i Domain modellen, der herefter, på nuværende tidspunkt, ser således ud: Figur 1: Domain Model Det er nærliggende at lave i hvert fald to nye generelle (abstrakte) klasser: Aabning som Doer og Vindue kunne nedarve fra og Sensor som BevaegelsesSensor og LysSensor kunne nedarve fra. Detaljeret design Efter alle de forudgående undersøgelser føler jeg mig godt rustet til det mere detaljerede designarbejde og kaster mig over udarbejdelse af klassediagram og sekvensdiagrammer, hvor kun klassediagrammet (se Bilag 4) er medtaget i denne rapport. Beskrivelse af hvordan programmet virker Ved distribution af programmet leveres et eksempel på en plantegning samt en eksekverbar jar-fil (indeholder både class- og java-filer) og startes eksempelvis fra kommandolinien ved at skrive: java -jar IHCS.jar

11 OOPJ-E-1 F2003 Side 11 af 38 Filen IHCS.jar er gjort eksekverbar ved at lægge en manifest-fil med i jar-filen. I manifestfilen står der hvilken klasse (miracon.ihcs.systemtester) som indeholder main()-metoden. Jeg har valgt at placere klasserne i forskellige pakker således at klasser med beslægtet funktionalitet er placeret i samme pakke. Pakkehierarkiet er som følger: miracon.ihcs miracon.ihcs.dbpackage miracon.ihcs.huspackage miracon.ihcs.installationerpackage miracon.ihcs.personpackage miracon.ihcs.uipackage (SystemTester) (TestDb og Sequences) (Hus, Rum, Aabning, Hoveddoer, Vindue etc.) (VarmeSystem, Alarm, Sensor, Lampe etc.) (Person) (SimulerApplet, SimulerFrame, LukVindue etc.) Ovenstående er også afbildet på klassediagrammet (se Bilag 4). I kildeteksten (se Bilag 3) for programmet er der undervejs kommentarer med henvisninger til de ovenfor beskrevne Use Cases. På den måde anskueliggøres det hvor i koden de funktionelle krav implementeres. Når programmet startes slettes eventuelt eksisterende filer, skabt vha. Java's mekanisme kaldet serialisering, indeholdende opsætningen af IHCS. Dette vil selvfølgelig ikke ske i den endelige version af programmet. Herefter instantieres testdatabasen (se kommentarer i SystemTester.java og TestDb.java for flere detaljer) således, at vi nemt kan gemme ændringer i opsætningen af IHCS. Samtidig instantieres klassen Sequences, der benyttes ved tildeling af et unikt personid til hver person, der oprettes i systemet. Det unikke personid hentes vha. metoden getnextpersonid() som er placeret i klassen TestDb. Herefter oprettes testpersoner. Disse smides i en Vector som gemmes i filen personer.ser. Bemærk at der anvendes forskellige konstruktører. Konsruktøren i klassen Person er overloaded (parameterlisterne er forskellige). Bemærk også at data i klassen Person er indkapslede (beskyttede). Det er opnået ved at erklære variablerne private og herefter oprette såkaldte get- og set-metoder. Opstår der fejl skrives fejlmeddelelse til standard output, hvilket vil sige det vindue hvorfra programmet blev startet. Ligeledes i dette vindue vises nu de oprettede testpersoner således, at den liste kan sammenlignes med en senere liste, der vises efter sletning af en person; oprettelse af en ny og endelig opdatering af en eksisterende. Herefter fødes systemet med oplysninger om huset, der skal styres af IHCS. Også huset lægges i en Vector (på sigt skal systemet måske kunne styre flere huse), der senere gemmes i filen huse.ser. Også i klassen Hus er data indkapslede. Som det også fremgår af klassediagrammet er der en "har-relation" mellem Hus og Rum: Et Hus har 1 til * (flere) Rum. Denne relation betegnes også som en "Composite Aggregation"; derfor den fyldte "diamant" i den ene ende af relationen. Relationen er implementeret vha. Vectoren vrum i klassen Hus, der så også er blevet tildelt ansvaret for at addere, fjerne og oplyse om rum. Dette er implementeret ved oprettelse af metoderne addrum, removerum og getrum. Netop addrum anvendes nu til at oprette rum og knytte dem til huset. Metoden removerum testes også. Dernæst oprettes vinduer, døre, bevægelses- og lys-sensorer samt lamper. Ansvaret for dette er tildelt til klassen Rum, der har en "har-relation" til disse objekter. Vinduerne og dørene, der er specialiseringer af den abstrakte klasse Aabning, adderes vha. metoden addaabning. Udover denne metode har Rum også metoderne removeaabning og getaabninger. Bevægelses-sensorer adderes med metoden addbevaegelsessensor. I den metode instantieres BevaegelsesSensor med bla. en reference til rummet som parameter.

12 OOPJ-E-1 F2003 Side 12 af 38 Rummet sender altså en reference til sig selv og det i sin egenskab som "bevægelses-lytter". Dette er et tydeligt eksempel på polymorfi (mere om det senere). Rummet er i stand til at opføre sig som en "bevægelses-lytter", da klassen implementer interfacet BevaegelsesListener. Bevægelses-sensoren gør så det i sin konstruktør, at den registrerer lytteren ved at kalde metoden addbevaegelseslistener. Lys-sensorer adderes vha. metoden addlyssensor og lamper adderes vha. metoden addlampe. Ved oprettelsen af en lampe kan det bestemmes om den skal tænde ved bevægelse eller ej. Dette kan selvfølgelig ændres senere hvis husejeren måtte ønske det. Så er vi ved at være ved vejs ende mht. opsætningen af IHCS i nuværende version. Vi mangler bare at tilknytte alle personer til huset. Det sker ved at kalde metoden addperson på det objekt (Hus) som variablen vhus1 peger på. Udover addperson indeholder Hus også metoderne removeperson og getpersoner. Metoden removeperson testes ved at lade som at en person fraflytter. Endeligt gemmes, som også nævnt tidligere, Vectoren indeholdende Hus(e) med alle relaterede objekter i filen huse.ser. Hvad objektet Hus faktisk indeholder vises til sidst ved at udskrive objektet. Huset's tostring metode, der er nedarvet fra Object men her tilsidesat, kaldes implicit. Nu da systemets opsætning er klar/ændret kan UC19 og 22 implementeres/testes. Med muligheden for at køre simuleringen via Internettet i baghovedet, blev dette til at starte med forsøgt vha. klassen SimulerApplet, der nedarver fra Applet. Men jeg kom hurtigt ud i nogle sikkerhedsmæssige problemer. Se følgende output fra Java-konsol vinduet i Internet Explorer: com.ms.security.securityexceptionex[miracon/ihcs/uipackage/simulerapplet.jbinit]: cannot access file huse.ser at com/ms/security/permissions/fileiopermission.check... Appletten kunne ikke initialiseres. Kontakt venligst leverandøren af IHCS og oplys nedenstående fejl: com.ms.security.securityexceptionex[miracon/ihcs/uipackage/simulerapplet.jbinit]: cannot access file huse.ser... Dette blev forsøgt omgået ved at generere html-fil inkl. parametre til appletten dynamisk, men det viste sig hurtigt ikke at være en farbar vej. Jeg valgte herefter at bruge en Frame (klassen SimulerFrame) og ved nærmere eftertanke synes jeg det er ok, at simuleringen ikke kan køre via Internettet. Under testen af appletten benyttedes muligheden for automatisk at starte brugerens standardbrowser med html-filen som argument. SimulerFrame instantieres med Vectoren vhuse som parameter; størrelsen sættes og vinduet gøres synligt på skærmen. JDeveloper generer kode således at brugeren kan lukke vinduet ved at aktivere menupunktet File, Exit. Men jeg har tilføjet muligheden for at lukke vinduet ved at trykke på på krydset i øverste højre hjørne eller taste Alt-F4 (Windows). Implementeret ved flg. linie: this.addwindowlistener(new LukVindue()); Klassen LukVindue er i stand til at opføre sig som WindowListener, ikke ved at implementere interfacet, men ved at nedarve fra WindowAdapter, der implementerer interfacet. På den måde behøver vi kun at tilsidesætte den metode vi har brug for (windowclosing) frem for at skulle implementere alle, af interfacet, krævede metoder. Herefter sættes Framen (implements MouseMotionListener) til at lytte efter musebevægelser. Musebevægelserne anvendes til at simulere bevægelse i huset.

13 OOPJ-E-1 F2003 Side 13 af 38 For at kunne simulere både når det er mørkt og når det er lyst startes en tråd under initialiseringen af Framen. Tråden sørger for at der skiftes mellem lys og mørke hvert halve minut og startes vha. flg. linie: new Thread(new SkiftMoerkeLys(vRum, this)).start(); Klassen SkiftMoerkeLys kan køre i en tråd da den implementerer interfacet java.lang.runnable. Bemærk at Framen overfører en reference til sig selv således at SkiftMoerkeLys kan gentegne Framen. Selve skiftet mellem mørkt og lyst sker ved at manipulere med værdien for variablen antalluxligenu i alle instanser af LysSensor. Efter initialiseringen kaldes paint()-metoden automatisk og hus samt installationer tegnes (bemærk at de forskellige installationer har ansvaret for at tegne sig selv): Figur 2: Simuler IHCS opsætning (2 lamper tændt) Sensorer og rektanglet, der repræsenterer dem, gemmes i en Hashtable, der efterfølgende gennemløbes i metoden mousemoved. Til sidst i paint()-metoden startes en tråd, der sørger for at slukke lamper, der har været tændt i 5 sekunder. Det sker vha. flg. linie: new Thread(new SlukLamper(vRum, 5000, this)).start(); Klassen SlukLamper implementerer interfacet Runnable og kalder metoden settaendt med parameteren false på de instanser af Lampe, hvor gettaendttid() er større end 5 sekunder.

14 OOPJ-E-1 F2003 Side 14 af 38 Når brugeren simulerer bevægelse ved at bevæge musecursoren kaldes metoden mousemoved. Ovennævnte Hashtable gennemløbes ved at bruge en Enumeration (opremsning). Er musecursoren placeret indenfor et rektangel, der repræsenterer en sensor, og er dette en bevægelses-sensor, kaldes metoden setbevaegelse med parameteren true på instansen af bevægelses-sensoren. Det medfører kald af metoden notificerbevaegelseforekom(), som også er placeret i BevaegelsesSensor. Et event af typen BevaegelsesEvent oprettes med en reference til bevægelses-sensoren selv, således at vi altid kan se hvilket objekt der initierede eventet. Og så er vi tilbage til det med polymorfien. Nu sendes BevaegelsesEvent'et nemlig til de registrerede "bevægelses-lyttere" som i teorien kan være objekter af alle typer blot de implementerer interfacet BevaegelsesListener. Event'et sendes vha. flg. linie: ((BevaegelsesListener)regBevaegelsesLyttere.elementAt(i)).bevaegelseForekom(be); Klassen Rum opfylder sin pligt og implererer den krævede metode bevaegelseforekom. Her findes de lamper, der skal tændes ved bevægelse (hvis det ikke er for lyst). Skal lampen tændes kaldes metoden settaendt med parameteren true på instansen af den pågældende lampe. Det medfører kald af metoden settaendttid således, at vi kan holde styr på de lamper, der skal slukkes efter 5 sekunder. Slutteligt kaldes repaint() således, at vinduet afspejler objekternes tilstand. Lever programmet op til forventningerne Jeg synes at man med rimelighed kan sige, at de funktionelle krav, som der er arbejdet med indtil nu, er/kan blive opfyldt. Endvidere føler jeg mig overbevist om at systemet, når alle iterationer er gennemført, kan leve op til visionen for programmet.

15 OOPJ-E-1 F2003 Side 15 af 38 Bilag Bilag 1: SystemTester.java package miracon.ihcs; import miracon.ihcs.dbpackage.*; import miracon.ihcs.huspackage.*; import miracon.ihcs.personpackage.*; import miracon.ihcs.uipackage.*; import java.awt.*; import java.io.*; import java.util.*; public class SystemTester public static void main(string[] args) // Oplysninger omkring systemets opsætning gemmes i filer. // Ved start op denne test ønskes det at starte fra scratch. // Filer indeholdende serialiserede objekter slettes. File workdir = new File("."); // Opret et array af filer. File[] fil = workdir.listfiles(); // Gennemløb array. for (int i = 0; i < fil.length; i++) if (fil[i].isfile() && fil[i].getname().tolowercase().endswith(".ser")) fil[i].delete(); // Instantier testdatabasen. TestDb kan kun instantieres en gang (Singleton). // Metoden getinstance er static (klassemetode), hvorfor den kan kaldes selvom // der endnu ikke findes en instans af TestDb. TestDb db = TestDb.getInstance(); // UC1, punkt 1: Husejeren starter skærmbilledet "Registrer personoplysninger" (ikke // implementeret). // Hent testpersoner (UC1, punkt 2: Systemet søger efter allerede registrede personer). Vector vpersoner = new Vector(); try vpersoner = (Vector) db.hent("personer.ser"); catch (Exception exhent) // Testpersoner kunne ikke findes. Opret testpersoner. vpersoner.addelement(new Person(db.getNextPersonId(), "Kim Damgaard", " ", "kim.damgaard@mail.dk", "kd.jpg", 1234)); vpersoner.addelement(new Person(db.getNextPersonId(), "Janette Damgaard", " ", "jd@mail.dk", "jd.jpg", 2345)); vpersoner.addelement(new Person(db.getNextPersonId(), "Marc Damgaard", " ", "md@mail.dk", "md.jpg", "md_finger.jpg")); // Gem testpersoner. try db.gem(vpersoner,"personer.ser"); catch (Exception exgem) System.out.println("Systemfejl. Personer kan ikke gemmes. Kontakt venligst "+ "leverandøren af IHCS og oplys nedenstående fejl:"); exgem.printstacktrace(); // Vis testpersoner (UC1, punkt 3: Systemet lister de oprettede personer). System.out.println("\nOprettede personer:\n"+ " "); for (int i = 0; i < vpersoner.size(); i++) System.out.println((Person)vPersoner.elementAt(i)); // Slet testperson og opret en ny vpersoner.removeelementat(1); vpersoner.addelement(new Person(db.getNextPersonId(), "Simone Damgaard", null, "sd@mail.dk", "sd.jpg", "sd_finger.jpg")); // Opdater personid 1 (UC1, punkt 4: Husejeren markerer den person, hvor oplysningerne // skal opdateres.) for (int i = 0; i < vpersoner.size(); i++) if (((Person)vPersoner.elementAt(i)).getPersonId() == 1) // UC1, punkt 5: Husejeren opdaterer relevante felter.

16 OOPJ-E-1 F2003 Side 16 af 38 // UC1, punkt 6: Husejeren trykker på "Gem". // UC1, punkt 7: Systemet gemmer personoplysningerne. // Gem og hent testpersoner. try db.gem(vpersoner,"personer.ser"); vpersoner = (Vector) db.hent("personer.ser"); // Vis testpersoner igen. System.out.println("Personer efter sletning af en, oprettelse af en ny og opdat. af en "+ "eksist.:\n"+ " "); for (int i = 0; i < vpersoner.size(); i++) System.out.println((Person)vPersoner.elementAt(i)); catch (Exception ex) System.out.println("Person-oplysninger kunne ikke gemmes/hentes. Kontakt venligst "+ "leverandøren af IHCS og oplys nedenstående fejl:"); ex.printstacktrace(); // UC3, punkt 1: Husejeren starter skærmbilledet "Registrere husoplysninger" (ikke // implementeret). // Hent husoplysninger (UC3, punkt 2: Systemet søger efter husoplysninger). // Til at starte med opererer vi kun med et hus. På sigt skal systemet kunne styre flere // huse/bygninger; derfor bruges en Vector. Vector vhuse = new Vector(); Vector vrum = new Vector(); try vhuse = (Vector) db.hent("huse.ser"); catch (Exception exhent) // Husoplysninger kunne ikke findes (UC3, punkt 3: Systemet konstaterer at der ikke // findes oplysninger). // Opret hus (UC3, punkt 4: Husejeren udfylder felterne). Hus vhus1 = new Hus("Valbo Alle","16","2665","Vallensbæk Strand","plantegning.gif"); // UC4, punkt 1: Husejeren starter skærmbilledet "Registrere rum" (ikke implementeret). // UC4, punkt 2: Systemet søger efter rum. if (vhus1.getrum().size() == 0) // UC4, punkt 3: Systemet konstaterer at der ikke findes oplysninger. // Opret rum i huset (UC4, punkt 4: Husejeren udfylder felterne). vhus1.addrum("bryggers",330,10,160,182); vhus1.addrum("gang",330,192,(3*160),91); vhus1.addrum("køkken",170,10,160,182); vhus1.addrum("spisestue",10,10,160,182); vhus1.addrum("stue",10,192,320,(182+91)); vhus1.addrum("kontor",330,(192+91),160,182); vhus1.addrum("børneværelse1",( ),(192+91),160,182); vhus1.addrum("børneværelse2",( *2),(192+91),160,182); vhus1.addrum("soveværelse",650,10,160,182); vhus1.addrum("badeværelse1",490,10,160,91); vhus1.addrum("badeværelse2",490,101,160,91); vhus1.addrum("badeværelse3",10,10,100,100); // Vi prøver også lige at fjerne et rum (Badeværelse3). vrum = vhus1.getrum(); for (int i = 0; i < vrum.size(); i++) if (((Rum)vRum.elementAt(i)).getBetegnelse().equals("Badeværelse3")) vhus1.removerum((rum)vrum.elementat(i)); // UC5, punkt 1: Husejeren starter skærmbilledet "Registrere vinduer og døre" (ikke // implementeret). // UC7 og 8, punkt 1: Husejeren starter skærmbilledet "Registrere bevægelses- og // lys-sensorer" (ikke implementeret). // UC14, punkt 1: Husejeren starter skærmbilledet "Registrere lamper" (ikke // implementeret). for (int i = 0; i < vrum.size(); i++) // UC5, 7, 8 og 14, punkt 2: Systemet præsenterer rummene og husejeren udvælger et. if (((Rum)vRum.elementAt(i)).getBetegnelse().equals("Bryggers")) // UC5, punkt 3: Husejeren tilføjer de nødvendige vinduer/døre (mulige typer er // foruddefineret i systemet). ((Rum)vRum.elementAt(i)).addAabning("Bryggersdør"); // UC7 og 8, punkt 3: Husejeren tilføjer bevægelses- og/eller lys-sensor. // Sensoren registrerer rummet som lytter, hvilket kan lade sig gøre da Rum // implementerer interfacet BevaegelsesListener. På "objekt-sprog" kan man sige at // rummet "ACTS AS A" BevaegelsesListener. ((Rum)vRum.elementAt(i)).addBevaegelsesSensor(10000);

17 OOPJ-E-1 F2003 Side 17 af 38 ((Rum)vRum.elementAt(i)).addLysSensor(8000); // UC14, punkt 3: Husejeren tilføjer lampe. ((Rum)vRum.elementAt(i)).addLampe(true); if (((Rum)vRum.elementAt(i)).getBetegnelse().equals("Gang")) ((Rum)vRum.elementAt(i)).addAabning("Hoveddør"); ((Rum)vRum.elementAt(i)).addBevaegelsesSensor(8000); ((Rum)vRum.elementAt(i)).addLysSensor(9000); ((Rum)vRum.elementAt(i)).addLampe(true); ((Rum)vRum.elementAt(i)).addLampe(true); ((Rum)vRum.elementAt(i)).addLampe(false); if (((Rum)vRum.elementAt(i)).getBetegnelse().equals("Spisestue") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Stue")) ((Rum)vRum.elementAt(i)).addAabning("Terrassedør"); if (((Rum)vRum.elementAt(i)).getBetegnelse().equals("Køkken") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Spisestue") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Stue") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Kontor") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Børneværelse1") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Børneværelse2") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Soveværelse") ((Rum)vRum.elementAt(i)).getBetegnelse().equals("Badeværelse1")) ((Rum)vRum.elementAt(i)).addAabning("Vindue"); ((Rum)vRum.elementAt(i)).addLampe(false); if (((Rum)vRum.elementAt(i)).getBetegnelse().equals("Soveværelse")) ((Rum)vRum.elementAt(i)).addAabning("Tagvindue"); // Tilknyt alle personer til hus. for (int i = 0; i < vpersoner.size(); i++) vhus1.addperson((person)vpersoner.elementat(i)); // En person fraflytter. vhus1.removeperson((person)vpersoner.elementat(vpersoner.size()-1)); // UC3, 4 og 5, punkt 5 samt UC7, 8 og 14, punkt 4: Husejeren trykker på "Gem". // UC3, 4 og 5, punkt 6 samt UC7, 8 og 14, punkt 5: Systemet gemmer oplysningerne. // Gem hus inkl. tilknyttede objekter. vhuse.addelement(vhus1); try db.gem(vhuse,"huse.ser"); catch (Exception exgem) System.out.println("Hus-oplysninger kunne ikke gemmes. Kontakt venligst leverandøren "+ "af IHCS og oplys nedenstående fejl:"); exgem.printstacktrace(); // Vis hus inkl. tilknyttede objekter. for (int i = 0; i < vhuse.size(); i++) System.out.println((Hus)vHuse.elementAt(i)); // Forsøg på implementering af UC19 vha. en Applet. Blev opgivet pga. omstændigheder omtalt // i rapporten. // Html-fil med applet-tag genereres dynamisk. try PrintWriter hg = new PrintWriter(new FileWriter("simuler.html")); hg.println("<html><head><title>ihcs</title></head><body><h2>simuler IHCS opsætning</h2>"); hg.println("<br><applet CODE=\"miracon.ihcs.UiPackage.SimulerApplet\" CODEBASE=\".\" "+ "ARCHIVE=\"IHCS.jar\" HEIGHT=\"600\" WIDTH=\"820\" ALIGN=\"bottom\">"); hg.println("<param name=\"phuse\" value=\"huse.ser\">"); hg.println("denne browser understøtter ikke Applets.</APPLET></BODY></HTML>"); hg.close(); catch (IOException ex) System.out.println("Kan ikke generere html-fil. Kontakt venligst leverandøren af IHCS "+ "og oplys nedenstående fejl:"); ex.printstacktrace(); // Start brugerens standardbrowser. Virker kun i Windows. // Kilde: try String command = "rundll32 url.dll,fileprotocolhandler simuler.html"; Runtime.getRuntime().exec(command);

18 OOPJ-E-1 F2003 Side 18 af 38 catch (java.io.ioexception e) System.out.println("Kan ikke starte browser. Vær opmærksom på at dette kun virker i "+ "Windows."); e.printstacktrace(); // UC19, punkt 1: Husejeren vælger hus, der skal simuleres. // UC19, punkt 2: Husejeren starter skærmbilledet "Simuler IHCS opsætning". SimulerFrame vindue = new SimulerFrame(vHuse); vindue.setsize(new Dimension(830,600)); vindue.setvisible(true); // end main // end class SystemTester

19 OOPJ-E-1 F2003 Side 19 af 38 Bilag 2: Output ved kørsel af klassen SystemTester Oprettede personer: Person id : 1 Navn : Kim Damgaard Mobilnr. : kim.damgaard@mail.dk Billede : kd.jpg Adg.kode : 1234 Fingeraftryk: null Person id : 2 Navn : Janette Damgaard Mobilnr. : jd@mail.dk Billede : jd.jpg Adg.kode : 2345 Fingeraftryk: null Person id : 3 Navn : Marc Damgaard Mobilnr. : md@mail.dk Billede : md.jpg Adg.kode : 0 Fingeraftryk: md_finger.jpg Personer efter sletning af en, oprettelse af en ny og opdat. af en eksist.: Person id : 1 Navn : Kim Damgaard Mobilnr. : kd@mail.dk Billede : kd.jpg Adg.kode : 1234 Fingeraftryk: null Person id : 3 Navn : Marc Damgaard Mobilnr. : md@mail.dk Billede : md.jpg Adg.kode : 0 Fingeraftryk: md_finger.jpg Person id : 4 Navn : Simone Damgaard Mobilnr. : null sd@mail.dk Billede : sd.jpg Adg.kode : 0 Fingeraftryk: sd_finger.jpg Husoplysninger: Adresse : Valbo Alle Vallensbæk Strand Plantegning : plantegning.gif Rum : Bryggers Udvendige åbninger: Bryggersdør Lamper: Lampe tændes ved bevægelse Gang Udvendige åbninger: Hoveddør Lamper: Lampe tændes ved bevægelse, Lampe tændes ved bevægelse, Lampe tændes ikke ved bevægelse Køkken Udvendige åbninger: Vindue Lamper: Lampe tændes ikke ved bevægelse Spisestue Udvendige åbninger: Terrassedør, Vindue Lamper: Lampe tændes ikke ved bevægelse Stue Udvendige åbninger: Terrassedør, Vindue Lamper: Lampe tændes ikke ved bevægelse

20 OOPJ-E-1 F2003 Side 20 af 38 Kontor Udvendige åbninger: Vindue Lamper: Lampe tændes ikke ved bevægelse Børneværelse1 Udvendige åbninger: Vindue Lamper: Lampe tændes ikke ved bevægelse Børneværelse2 Udvendige åbninger: Vindue Lamper: Lampe tændes ikke ved bevægelse Soveværelse Udvendige åbninger: Vindue, Tagvindue Lamper: Lampe tændes ikke ved bevægelse Badeværelse1 Udvendige åbninger: Vindue Lamper: Lampe tændes ikke ved bevægelse Badeværelse2 Udvendige åbninger: Ingen Lamper: Ingen Brugere : Person id : 1 Navn : Kim Damgaard Mobilnr. : kd@mail.dk Billede : kd.jpg Adg.kode : 1234 Fingeraftryk: null Person id : 3 Navn : Marc Damgaard Mobilnr. : md@mail.dk Billede : md.jpg Adg.kode : 0 Fingeraftryk: md_finger.jpg

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

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

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Singleton pattern i Java

Singleton pattern i Java Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

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

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

UML til kravspecificering

UML til kravspecificering UML til kravspecificering UML mini-kompendium - til brug i forbindelse med modellering af kravspecifikationer. Copyright 2006 Teknologisk Institut, IT-Udvikling Aktivitetsdiagram 2/9 Aktion Aktionsnavn

Læs mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

Singleton pattern i C#

Singleton pattern i C# Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Automatisk Vandingssystem

Automatisk Vandingssystem Automatisk Vandingssystem Projektdokumentation Aarhus Universitet Gruppe 6-3. Semester - F15 vejleder: Michael Alrøe dato: 28-05-2015 Lærke Isabella Nørregård Hansen - 201205713 - IKT Kasper Sejer Kristensen

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Planlægningssystem til autoværksted.

Planlægningssystem til autoværksted. Side 1 af 49 Planlægningssystem til autoværksted. udført af Henning Svensson Kim Damgaard Indholdsfortegnelse Planlægningssystem til autoværksted... 1 Indholdsfortegnelse... 1 Beskrivelse af autoværkstedet...

Læs mere

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label Programmering 1999 Forelæsning 13, tirsdag 12. oktober 1999 Oversigt Grafiske brugergrænseflader. Komponenter: Knapper, tekstfelter, checkbokse... Vinduer (containere). Hændelser, hændelsesstyret programmering.

Læs mere

FitLight Trainer brugsvejledning. Tablet controller. version 1.7

FitLight Trainer brugsvejledning. Tablet controller. version 1.7 FitLight Trainer brugsvejledning Tablet controller version.7 Indhold Opbevaring og opladning... Opret brugere... Forbind lamper... 4 Kørsel af tilfældig sekvens - bestemt tidsrum... 5 Kørsel af tilfældig

Læs mere

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller Upload fil Upload fil skal ses som et alternativ til at indsende tællefiler vedhæftet til mails Upload fil kan være en hurtigere og mere håndholdt måde at få data ind i Mastra på. Man starter med via Gennemse

Læs mere

Indholdsfortegnelse for kapitel 2

Indholdsfortegnelse for kapitel 2 Indholdsfortegnelse for kapitel 2 Kapitel 2. Analyse.......................................................... 2 Analyse af 2.1...................................................... 2 Analysen af Database.................................................

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

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

Online billede filtrering

Online billede filtrering Online billede filtrering Eksamensprojekt 2014 Andreas Lorentzen, klasse 3.4 Roskilde Tekniske Gymnasium Programmering C 09-05-2014 I dette projekt vil jeg demonstrerer en af de mange ting moderne browsere

Læs mere

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer Opfølgning på Opgave 2 og Use Cases originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University of Denmark Opgaven fortsat Efter

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

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

Læs mere

Lektion 3. Grundlæggende programmering i VR

Lektion 3. Grundlæggende programmering i VR Lektion 3 Grundlæggende programmering i VR Plan for i dag UML Usecase diagrammer Aktivitets diagrammer Klasse diagrammer Udforskning af forskelligt VR og andre måder at udvide virkeligheden på Cardboard

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

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

DKAL Snitflader REST Register

DKAL Snitflader REST Register DKAL Snitflader REST Register 1 Indholdsfortegnelse A2.1 INTRODUKTION 3 A2.1.1 HENVISNINGER 3 A2.1.2 LÆSEVEJLEDNING 4 A2.1.2.1 SÅDAN LÆSES EN REST GRAF 4 A2.1.2.2 SÅDAN LÆSES EN RESSOURCE OG EN TYPE 4

Læs mere

Sektornet VPN Installationsvejledning Windows Vista/7

Sektornet VPN Installationsvejledning Windows Vista/7 Sektornet VPN Installationsvejledning Windows Vista/7 Version 5.0 Af Jesper Skou Jensen og Mads Udengaard Sørensen 1 Start installationen 1 1 Indledning Denne vejledning gennemgår opsætning af Sektornet

Læs mere

DM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7

DM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7 DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4

Læs mere

Brugers vejledning til indtastning af Naturdata på eksisterende 3- områder

Brugers vejledning til indtastning af Naturdata på eksisterende 3- områder Brugers vejledning til indtastning af Naturdata på eksisterende 3- områder Denne vejledning omfatter indtastning af naturdata på eksisterende 3-områder. Har du opdaget et nyt 3-område, skal du derfor oprette

Læs mere

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering Kom godt igang med Inventar registrering (InventoryDB) (Med stregkodesupport) programmet fra PetriSoft Introduktion... 1 Inventar registrering... 2 Værktøjsudleje... 3 Service database til reperationer

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter

Læs mere

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter OOP e2002 - uge 42 6. kursusgang Hvordan organiseres et programs grafik-elementer? 1. Teori: class Component og subklasser: Composite pattern layout-managere hændelsesstyret programmering 2. XP-program:

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

Vejledning. Opsætning af Trio Web Vers 2.0 feb. 2010

Vejledning. Opsætning af Trio Web Vers 2.0 feb. 2010 Opsætning af Trio Web Vers 2.0 feb. 2010 Indholdsfortegnelse Opsætning af Trio Web... 3 Generel opsætning af Trio Web... 3 Databaseopsætning... 3 DB... 3 Aar... 4 Login... 4 Internet... 4 Port... 4 Registreringsnøgle...

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Software Dokumentation

Software Dokumentation Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software

Læs mere

PID2000 Archive Service

PID2000 Archive Service PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 PID2000 Archive Service Bruger vejledning Juni 2002 Denne manual beskriver brugen af softwaren

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Vejledning Flex-Control:

Vejledning Flex-Control: Vejledning Flex-Control: Når du kommer hjem med din startpakke eller dine løse komponenter, så er du nu klar til at komme i gang. 1. Start med at pakke alle komponenter ud. 2. Fjern nu det lille stykke

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

DMX styring med USB-interface

DMX styring med USB-interface DMX styring med USB-interface Introduktion...2 DMX bibliotek...3 Programmering af kanaler...7 Sådan skabes et show/en lyssekvens...11 Introduktion DMX LightPlayer er en avanceret men meget brugervenlig

Læs mere

SigmaT.

SigmaT. Java + Groovy Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER.

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER. Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER. ZHC5010 Firmware Version: 02.03 Køb dine Logic Home enheder HER Indledning Denne vejledning beskriver hvordan det er muligt

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Kvik start opsætning af kamera det første du skal gøre:

Kvik start opsætning af kamera det første du skal gøre: Kom godt i gang Tillykke med købet af Valtronics Trådløst IP kamera. Denne quickmanual kan bruges til alle Valtronics IP kameraer. Kameraet giver mulighed for at fjenovervåge steder via sin mobiltelefon

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

INTELLIGENT BOLIGSTYRING

INTELLIGENT BOLIGSTYRING Energihuset INTELLIGENT BOLIGSTYRING Introduktion Om energihuset Opgaver og udfordringer Links og Efterbehandling Introduktion I dag kan man godt få systemer der kan styre el, vand, varme eller ventilation

Læs mere

Installation af Oracle 10g Release 2 database

Installation af Oracle 10g Release 2 database Installation af Oracle 10g Release 2 database Oracle 10g database indeholder databasesoftware, enterprise manager, SQL*Plus m.m., HTML DB (i dag kendt som Application Express) og tilhørende HTTP Server

Læs mere

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...

Læs mere

FORCE Inspect Online Manual v. 1.02. FORCE Inspect Online Manual. 1 af 18

FORCE Inspect Online Manual v. 1.02. FORCE Inspect Online Manual. 1 af 18 FORCE Inspect Online Manual 1 af 18 Indholdsfortegnelse Indholdsfortegnelse... 2 FORCE Inspect Online Manual... 3 Generelt... 3 Login... 3 Main... 4 Intro sektion... 4 Links sektion... 4 News sektion...

Læs mere

Systemair Connect. Opsætning

Systemair Connect. Opsætning Systemair Connect Opsætning Opsætning af Systemair Connect Denne vejledning er lavet for at hjælpe dig i gang med opsætningen af Systemair Connect. Du kan bl.a. læse om, hvordan du opbygger en understruktur

Læs mere

Programmering C RTG - 3.3 09-02-2015

Programmering C RTG - 3.3 09-02-2015 Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden. Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af

Læs mere

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22. Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens

Læs mere

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER. ZHC5010 Firmware Version: 0.14

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER. ZHC5010 Firmware Version: 0.14 Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED VERA SMART HOME CONTROLLER. ZHC5010 Firmware Version: 0.14 Indledning Denne vejledning beskriver hvordan det er muligt at oprette Z-Home Controls ZHC5010

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

OPC Access 3.0 opdatering via Stored Procedure

OPC Access 3.0 opdatering via Stored Procedure OPC Access 3.0 opdatering via Stored Procedure Dette dokument gennemgår et eksempel på, hvordan OPC Access 2.0 kan konfigureres til at opdatere en database via en stored procedure. OPC ACCESS 2.0 OPDATERING

Læs mere

Automatisk Vandingssystem

Automatisk Vandingssystem Automatisk Vandingssystem Projektdokumentation Aarhus Universitet Gruppe 6-3. Semester - F15 vejleder: Michael Alrøe dato: 28-05-2015 Lærke Isabella Nørregård Hansen - 201205713 - IKT Kasper Sejer Kristensen

Læs mere

Plugin-arkitektur med.net

Plugin-arkitektur med.net Denne guide er oprindeligt udgivet på Eksperten.dk Plugin-arkitektur med.net Denne artikel viser hvordan du kan lave en plugin-arkitektur i dit program. Gør det muligt for andre at skrive udvidelser til

Læs mere

Manual til AVG Antivirus

Manual til AVG Antivirus Manual til AVG Antivirus Det anbefales, at alle brugere benytter sig af et antivirus-program. Formålet med programmet er at forhindre din computer i at blive smittet med virus. Virus-inficerede computere

Læs mere

dmasark Aflevering - Uge 50

dmasark Aflevering - Uge 50 dmasark Aflevering - Uge 50 Michael Lind Mortensen, 20071202, DAT4 Michael Dahl, 20073943, DAT4 Katalog: http://www.daimi.au.dk/ u073943/dmasark/uge6/ 13. december 2007 Indhold 1 PingClient implementation

Læs mere

Database. Pr jekt. Hold CLmul-a14e Gruppe 3 3. semester 2015. Vejledere: Tue Becher Ivan R. Frederiksen

Database. Pr jekt. Hold CLmul-a14e Gruppe 3 3. semester 2015. Vejledere: Tue Becher Ivan R. Frederiksen Database Pr jekt Hold CLmul-a14e Gruppe 3 3. semester 2015 Vejledere: Tue Becher Ivan R. Frederiksen Indholdsfortegnelse 1. Problemformulering 2. ER-diagram 3. Attribut-tabel 4. Use Case-model 5. Use Case

Læs mere

Rapport generator til Microsoft C5

Rapport generator til Microsoft C5 Generelt Rapportgeneratoren til C5 kan benyttes sammen med alle versioner af C5 og kræver INGEN tillægsmoduler eller tilkøb af C5. Den kører på: C5 version 1.5x, 1.6x, 2.x, 3.x, 4.x, 2008, 2010 og 2012.

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED FIBARO HOME CENTER. ZHC5010 Firmware Version: 1.0

Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED FIBARO HOME CENTER. ZHC5010 Firmware Version: 1.0 Vejledning INSTALLATION AF ZHC5010 BETJENINGSTRYK MED FIBARO HOME CENTER. ZHC5010 Firmware Version: 1.0 Indledning Denne vejledning beskriver hvordan det er muligt at oprette Z-Home Controls ZHC5010 Betjeningstryk

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

09/03 2009 Version 1.4 Side 1 af 37

09/03 2009 Version 1.4 Side 1 af 37 Login til DJAS Gå ind på adressen http://www.djas.dk I feltet Brugernavn skrives den e-mail adresse som brugeren er registeret med i systemet. I feltet Password skrives brugerens adgangskode. Ved at sætte

Læs mere

Introduction til.net remoting i C#

Introduction til.net remoting i C# Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab

Læs mere

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

DK-Unit Point version 2.xx til PWE 37

DK-Unit Point version 2.xx til PWE 37 Beskrivelse af DK-Unit til Point Yomani og Xenta Dankort terminaler DK-Unit programmet er udviklet til at kunne benyttes sammen med forskellige applikationer, hvor man ønsker at kunne danne en Dankort

Læs mere

DRFLive - dynamisk visning af resultater fra DRF Stævnesystem

DRFLive - dynamisk visning af resultater fra DRF Stævnesystem DRFLive - dynamisk visning af resultater fra DRF Stævnesystem Resumé: Beskrivelse af program (DRFLive) til dynamisk visning af resulter fra DRF Stævnesystem Forfatter: Claus Hulstrøm Dato: 15. januar 2010

Læs mere