5. Teknisk beskrivelse af programmet 5.1 Programmets primære strukturer Datastruktur 1-6 3-6 Datastruktur



Relaterede dokumenter
Over Forelæsning omponenter ogrammering sigt 14, 1999 freda containere 15. oktober 1999 Eksempel: out GUI til beregning fakultet.

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

Kursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1

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

Videregående programmering i Java

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Videregående programmering i Java

GeoGIS2020. Installation. Udkast. Revision: 1 Udarbejdet af: BrS Dato: Kontrolleret af: Status: Løbende Reference: Godkendt af:

CapLegal Dokumentfoldere

AgroSoft A/S AgroSync

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

Vejledning i brug af Foreningsportalen til brugere med adgangskode

IDAP manual Emission

KLARMELD ET KONTRAKTARBEJDE

DATO DOKUMENT SAGSBEHANDLER MAIL TELEFON. 17. december 2015 Version 1.2 JobManager supporten

Løsningsbeskrivelse til bestilling af SMS-notifikation

KLARMELD ET KONTRAKTARBEJDE

Manual til Kundekartotek

Upload & Download. Vejledning. Vejledning til brugen af upload og download funktionerne for Plandata.dk. Udarbejdet af Erhvervsstyrelsen

Betjeningsvejledning til Håndterminal og AnyQuest Host

Kort til Husdyrgodkendelse / Excel data og Næsgaard Markkort

Oktober Dokumentpakker

Vejledning i brug af Interbook. Lokalebooking-program for foreninger, kommunale skoler og Tønder Hallerne.

Få navn på analysenr. i excel-fil og ind i pivottabel med data fra qlikview

Vejledning til. Svejsevisitering. Oprettelse af kursister i testsystemet Opret Booking Kursisten tager test... 10

Pivottabeller, diagrammer og databehandling. Underviser: Nina Kirkegaard Schou Mobil

Excel for nybegyndere

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

Serialization i Java

Microsoft PowerPoint 2010

HåndOffice Foreningsdata

Athena DIMENSION Tværsnit 2, Eksempel

VEJLEDNING I Lokaleansøgning


My booking. Generelt. Forsiden. Version 9.0

Booking system. Instruktion til bookingsystem

MedWin laboratorieskema

Indholdsfortegnelse. EasyIQ IDM 5.4 Brugermanual

1. Større opgaver i word

Huskesedler. Design og automatisering af regneark. Microsoft Excel 2013

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

Vejledning i brug af Interbook (Frederiksberg) til brugere med adgangskode

WELLPLOT VER. 3 BRUGERMANUAL

Vejledning til Tælleplansmodul

ActiveBuilder Brugermanual

Tlf Fax

IDAP manual Analog modul

I denne manual kan du finde en hurtig introduktion til hvordan du:

Tegneserien - Kom godt i gang. Mikro Værkstedet A/S

Vistemmernu. Et webbaseret værktøj udviklet af Programdatateket i Skive. programdatateket@viauc.dk Web:

Indholdsfortegnelse for kapitel 3

Generelle Læreplaner for Daginstitution/ Dagpleje. Tabulex Læreplaner

SecureAware Opfølgning Manual

LinkGRC. Kontrol. Brugermanual

Manual til hjemmeside i Typo3

Opstartsvejledning til Conventus

How to do in rows and columns 8

BRUGERMANUAL FLEXSCREEN

Orddeling. Automatisk orddeling. Manuel orddeling. Word thoremil.dk. Vælg fanebladet [Sidelayout] Vælg [Orddeling] Markér Automatisk orddeling

OPRET OG IGANGSÆT JOB

Vejledning til opdatering på hjemmesiden

For at logge ind i PURE, skal du gå til siden medarbejdere.au.dk/pure. Tryk på det blå loginfelt i højre side.

Hvad er Objekter - Programmering

Kom i gang med. Kapitel 9 Impress: Præsentationer i OpenOffice.org. OpenOffice.org

Søgning på patienter med kræft

Kapitel 6 Events i C#

Vejledning. Indlæsning af studerende til gruppedannelse i STADS. Indhold. Studie-IT Tlf.:

Vejledning til registreringsnet - hvedegalmyg 2010

Vejledning til Aktivfuresoe.dk

Brugermanual ProcessManager ApS Hovmarksvej 68 DK-2920 Charlottenlund

En liste, hvor der kun kan angives et svar. En dropdown menu, hvori kun et svar kan vælges

1.1.3 Arrangementer og aktiviteter til hjemmesiden

Upload af billeder til hjemmesiden m.m.

Vejledning til brug af Foreningsportalen

Laboratoriesvar på Sundhed.dk

AUTOMATION SERVICE. Sådan anvender du programmet Automation Service. Udviklet af PC SCHEMATIC A/S

OPRET OG IGANGSÆT JOB

Brugervejledning til CRBook. CRBook. Aftalekalender. CRSoft Version Afsnit 0: Side 1 af 17

Indholdsfortegnelse. Ad. En bestemt aktivitet... 4 Ad. Et bestemt sted... 5 Eksempel på at søge flere tider på en gang i én forespørgsel...

UDFØR, OPGØR OG AFREGN JOB

Vejledning til datatræk i Novax på ICPC-koder

Manual Version 2. til oprettelse af hjemmesider for landsbyer i Rebild kommune

MailMax / Web v4.1. Brugsvejledning til webmail. Copyright 2003 Gullestrup.net

Kort om indlæsning af excel filer til budgetkladder i Navision

Vejledning til udførelse af WISEflow opgaver på instituttet

Brugervejledning til databrowseren

Manual til administration af online booking

elib Aleph, ver.18 Introduktion til GUI FUJITSU SERVICES A/S

Kom-i-gang vejledning opmålingsprogram

Vejledning Rapportbanken

W6 - Model- og Tegningskomposition

DOKUMENTATION OG VEJLEDNING

KL S EFFEKTMÅLINGS- REDSKAB TIL KONTROLOMRÅDET

Easy Guide i GallupPC

Vejledning til registreringsnet sygdomme i majs 2015

1. Opbygning af et regneark

Transkript:

5. Teknisk beskrivelse af programmet Afsnittet indeholder en beskrivelse af de vigtigste klasser i programmet. (Den tekniske beskrivelse af databasen er givet i afsnit 3.3 Databasedesign på side 20.) Dette kapitel giver først en beskrivelse af den overordnede struktur, herefter følger en beskrivelse af dataoverførsel til og fra databasen. Dernæst følger beskrivelsen af brugergrænsefladernes design og kommentarer til datamodellerne, der understøtter de forskellige views. Til sidste beskrives udvekslingen af meddelelser objekterne imellem ved opstart af programmet. Formålet med kommentarerne i dette afsnit er at give et overblik over opbygningen af programmet. 5.1 Programmets primære strukturer I nedenstående figur ses programmets væsentligste datastrukturer i et objektdiagram. Den øverste stiplede firkant indeholder de klasser, der danner datastrukturen til visning og redigering af kalenderen. I den næste firkant vises de komponenter, der anvendes til brugergrænsefladerne. I den sidste firkant ses modellerne, der anvendes til at vise værdier i de 2 JTables. Ud over denne struktur er der et view og en tilhørende model, der anvendes til booking (se afsnit 5.3, Booking). 5 2 Ugeoversigt Dagsoversigt Aktivitetsliste 0 - * Aktivitet Datastruktur for ugeoversigt se evt. Figur 3-9 på side 28 MainUgeOver (programstart) UgeView 1-6 TegneFlade 1 JTable 5 East 3-6 GUI-klasser Numrene henviser til Overblik over skærmbilledets design på side 19 JTable 6 Klassen har en reference til Ugeoversigt TidligereBehandlingerModel AftalteBehandlingerModel Datastruktur for de 2 JTables 41

5.2 Udveksling af data med databasen Indledning Klasserne til udveksling af data ligger i db-pakken. I nedenstående forklares opbygningen af forbindelsen til databasen, grundopbygningen af hjælpeklasserne, PatientListklassen og Aktivitet-klassen. Der afsluttes med, hvorledes feltet fortsaet i tabellen patientbehandling' ajourføres i databasen. Dataforbindelsen Klassen, der skaber forbindelsen, er ConnectDB. Forbindelsen etableres første gang den kaldes, og forbindelsen genbruges ved de næste kald. Klassen returnerer et statement-objekt, som anvendes til at kommunikere med databasen i form af forespørgsler og opdateringer. Der er ikke fortaget nogen synkronisering af kaldene til databasen, idet der er tale om en enkeltbrugersituation. Grundopbygning Den generelle opbygning af klassserne, som udveksler data med databasen, kan beskrives ved at tage udgangspunkt i databasens hjælpeentiteter der er Helligdag, Dagenskommentar, Ikke- PrimaerTid, Patientgruppe, Patientaftale, Behandler og Aktivitetstype (se evt. side 23, figur 3-6, ER-diagram). De indeholder supplerende informationer om aktiviteter, patienter eller datoer. Entiteterne bliver overført ved vertikal afbildning til klasser, som beskrevet på side 27 i afsnittet Afbildning af databasens tabeller til programmets struktur. Klassenavnene er de samme som de tilsvarende tabelnavne. Klasserne er næsten ens opbygget og er gjort persistente ved bl.a. bruge af designmønsteret Singleton (GOF, 1994). Ved implementeringen er der anvendt udskudt instantiering. Herved forstås at klassen først instantieres, når en af klassens metoder kaldes. Opbygningen og anvendelse illustreres ved nedenstående eksempel: Kode Bemærkninger Aktivitetstype.getFarve(0) 1) Et sted i programmet ønskes farvekoden for public static String getfarve(int type){ testinit(); return Aktivitetstype.inst.getfarve(type); } private static void testinit(){ if (inst == null) { try { Aktivitetstype.inst = new Aktivitetstype();...} } } Note: Se evt. hele koden for Aktivitetstype-klassen i kildekoden. en Aktivitetstype med index 0 (= fri ) 2) getfarve er en static metode 3) sikrer at aktivitetstype-objektet findes. Se 3a. 4) kalder metoden på inst-referencen der returnerer talværdien på farven. 3a) Default er inst == null, hvilket medfører at Aktivitetstype-objektet instantieres. Ved instantiering hentes de tilhørende tabelværdier. Ved næste metodekald peger inst referencen på Aktivitetstype-objektet. 42

PatientList Patienter hentes over i programmet som beskrevet ovenfor. Klassen der holder patienterne er PatientList, og de enkelte elementer i containeren er Patient-objekter. Klassen er udvidet i forhold til klasserne, der er beskrevet overfor med metoderne setpatient, updatepatient og sletpatient. UgeAktivitet Klassen bevirker, at datastrukturen i ugeoversigten bliver persistent. Med metoden hentaktiviteter overføres aktiviteter fra databasen for en uge (mandag til fredag) ad gangen. Der er desuden metoder, der gemmer og sletter enkeltaktiviteter i databasen. Fortsatbehandling I pakken db ligger også klassen UpdFortsaet, der opdaterer feltet fortsaet i tabellen patientbehandling. (Updateringsforespørgslen opdaterer alle poster i tabellen, hvilket er en midlertidig løsning, se afsnit 9.6, Skema over Aftalekalenderens status ved afslutning af projektet) 5.3 Brugergrænseflader Indledning Brugergrænsefladerne (GUI) er opbygget udfra principperne i Model-View-Control-designmønsteret, hvor view og kontroldelen er sammenbygget. Dette er et generelt princip for Swingkomponenterne (Marc Loy med flere, 2003). Opdeling af standardkomponenter i UI-delegate og model ses ved brug af JComboBox og JTable i brugergrænsefladerne. I figur 5-1 ses klassen UgeView, som danner det centrale skærmbilledes design. Klassen implementerer ActionListener til brug for håndtering af klik på navigationsknapperne. Til opdatering af GUI anvendes designmønsteret Observer, hvor View er Observer, og model er subjektet. Mønsteret er implementeret ved brug af Observer-klassen i java.util. Således lytter både Tegneflade-objektet og East-objektet på Ugeoversigt, der er model for de 2 views. JFrame frame BorderLayout JPanel pw Tegneflade tegneflade East east, se Figur 5-2 East JPanel pwsn 4 x JButtom (ugeknapper) JPanel pwss 12 x JButtom (md. knapper) JPanel pws WEST EAST Figur 5-1 Komponenter GUI, UgeView. Referencer er angivet med kursiv. GUI en kan ses på side 30 43

Tegnefladen gentegner kalenderen og East opdaterer visningen af den aktuelle patient, når der sker ændringer i ugeoversigten (modellen). GUI-klasserne findes i view -pakken. Navngivning af komponenterne der anvendes til brugergrænsefladerne. Ved navngivning af containerkomponenterne (referencen), der indgår i brugergrænsefladerne, anvendes kompasretningerne som bruges ved borderlayout. Betegnelserne er north, south, west, east og center, hvor forbogstaverne anvendes ved navngivningen af komponenterne. Komponentens reference bygges op fra venstre mod højre og således, at referencen repræsenterer en sti fra framen indtil komponenten 7. Med udgangspunkt i figur 5-1 kan navngivningen af panel pwss beskrives således: Position Værdi Betydning 0 p referencen til et JPanel 1 w I komponenten Frame er der i WEST en komponent w (ref.) 2 s I komponenten w er der i SOUTH indsat en komponent ws 3 s I komponenten ws er der i SOUTH indsat den aktuelle komponent. (pwss) For de komponenter, der ikke nedarver fra Container -klassen f.eks. Canvas, Button og Label, navngives de (deres ref.) ud fra de funktioner/visninger, som de repræsenterer. F.eks. JButton uge2minus, idet et klik på knappen kalder en metode, der gør, at kalenderen bladrer til en uge, som ligger 2 uger tidligere end den aktuelle visning. Tegneflade (Visning af Kalenderen) TegneFlade-klassen er en udvidelse af Canvas fra java.awt-pakken. Til brug for brugerinteraktion er der implementeret musekliklytter og keylytter. Klassen Coordinate s metoder transformerer ved museklik pixelpositioner (x,y) til programværdi i form af kolonnenummer 8 og tidspunkter. Desuden foregår der en transformation den anden vej fra kolonnenummer og tidspunkter, når der skal tegnes aktiviteter mv. på canvas et. Hertil kommer beregninger vedr. placering af overskrifter mv. Der er implementeret dobbelt buffering for at undgå flimmer ved opdateringer. En visning af Tegnefladen ses på side 32, figur 4-2. East (Visning af patientstamdata og patientaftaler) East er en GUI der danner det centrale skærmbilledes højre ( østlige ) side, som det ses af figur 5-1 og figur 5-2, nedenfor. Ved hjælp af komponenten kan brugeren redigere en patients stamdata og få specificeret sine aftaler i de to JTables. East implementerer ActionListener for at afgøre, hvilken knap brugeren har klikket på vha. getsource() eller hvilken combobox, der er ændret af brugeren vha. getactioncommand(). 7 Her adskiller opbygningen sig fra den maritime verden, hvor en underopdeling af NØ angives ØNØ og VNØ. 8 I beskrivelsen af brugergrænsefladen er der anvendt begrebet søjler for visningen af dagens aktiviteter. I kildekoden anvendes ofte betegnelsen kolonner for det samme. 44

JPanel east BorderLayout NORTH JPanel eastnorth - GridBagLayout gridy\gridx 0 1 2 3 4 5 6 JTextField JBottom 0 "Cpr.nr." "Navn" namefield " " "Søg/opret" 1 2 3 "Gruppe" CENTER JPanel ec BorderLayout JPanel ecn JFormatted TextField CprNrField JComboBox gruppelist11 "Aftale" JTextArea bem02 (Patientbemærkning) JComboBox aftalelist31 Titled Border Aftalte behandlinger JButtom Slet markeret Aftale NORTH JBottom "Slet Patient" JBottom "Afslut patient" JBottom "Annuller" JScrollPane ecc JTable view CENTER SOUTH Titled Border Tidligere behandlinger JPanel es BorderLayout JScrollPane esjsp JTable tidlbehview CENTER Figur 5-2 East Ved ændring af patientgruppen sker følgende ændringer: den nye patientgruppe bliver vist i comboboksen den aktuelle patients patientgruppe bliver ændret i modellen (ses ikke af skærmbillede) den nye patientsgruppes ikke primær tid bliver vist på venstre siden (kalenderen). De to JTables viser de data, der findes i modellerne. View ene sættes op ved hjælp af 2 metoder opsaetview for Aftalte behandler og opsaettidlbehview for den sidste tabel. Metoderne gør brug af klasserne BehandlerRenderer samt FortsaetRenderer for at få opsat et farvet felt til repræsentation af en behandler og for at få markeret en fortsat behandling. De to Renderer er lavet som en udvidelse af DefaultTableCellRenderer (standardklassen til visning af celler i en JTable), hvor metoden setvalue overskrives. 45

Booking (Oprettelse af aktiviteter) Bookingvinduet åbnes ved klik på Tegneflade-komponenten, hvis der klikkes på en søjle, og der er ledig tid. Der tages højde for om shift -tasten er nedtrykket svarende til en dobbelt booking. Et objekt af Request-klassen indeholder den seneste sluttid, der kan bookes. Tidspunktet beregnes af den Aktivitetsliste, der gælder for den aktuelle dag og behandler, hvorefter værdien gemmes i Request-objektet. Viewet implementerer Observer på samme måde som øvrige GUI s i forhold til sin model (Bookmodel). Desuden implementeres ActionListener til brug for klik på knapperne og ved valg af ny aktivitet i ComboBoxen. JFrame frame JPanel n JPanel nw JPanel nwn JPanel nwnw behandler JPanel nws JPanel patientpanel JPanel nwne behandlernavn patient JPanel ne JPanel nee JButtom ok JButtom annuller JButtom slet JComboBox aktivitet JPanel s JPanel sw TitledBorder datotitel JPanel swn GridLayout JPanel fra JPanel til JPanel sws JFormatted- JPanel() JPanel() TextField fratid JFormatted- JButtom plus JButtom minus TextField tiltid TitledBorder Behandling JPanel se JPanel() JTextField Behandling Figur 5-3 Design af Bookingvinduet, kursiv tekst er referencer 5.4 Modellerne Modellerne, der indeholder de data der vises i brugergrænsefladerne, findes i ugeoversigt -pakken. (Pakkenavnet er således ikke dækkende for dens indhold. Et mere passende navn vil være model.) Klasserne i pakken er klasserne i den øverste firkant og i den nederste firkant på figuren side 41. 46

Hertil kommer BookModel, Request og PatientbehandlingExt. Den sidst nævnte klasse anvendes til visning af patientbehandlinger på højre side. Der er tale om genbrug/udvidelse af Patientbehandling ved hjælp af komposition, idet der er brug for en ændret grænseflade. Ved udvidelsen skjules feltet kolnr, og der sker en forøgelse af antallet af felter. 5.5 Start af aftalekalenderen I figur 5-4 på side 48 ses sekvensdiagrammet ved start af programmet. Diagrammet giver et overblik over de væsentligste klasser/objekter, metoder og deres rækkefølge ved start af programmet. Starten af programmet foregår i 4 faser: 1. Opret strukturen hvor aktiviteterne skal holdes 2. Indlæs den aktuelle uges aktiviteter 3. Opbyg skærmbilledet 4. Tegn de enkelte aktiviteter på Tegnefladen og vis de øvrige grafiske komponenter. Efter start af programmet kommunikeres der med brugerne vha. lytterne. Ved klik på Tegnefladen. Metoden clicked returnerer den aktivitet, som brugeren har klikket på. Kaldet er i princippet opbygget som metoden tegnaftale, hvor kaldet forplanter sig fra ugeoversigten til den enkelte aktivitet. Coordinate-objektet foretager transformeringen, som tidligere beskrevet. 47

:MainUgeOver :UgeView :Tegneflade :Ugeoversigt :ToDay (systemdato) :Dagsoversigt (5 objekter) :Aktivitesliste (2 objekter) :UgeAktivitet :ConnectDB new Ugeoversigt() setdates() today() new Dagsoversigt() setbuttondates() hentaktiviteter() getdb() executequery() addaktiviteter() Databasen sætter aktuel patient til tom new UgeView() 1) Opbyg paint() tegnaftale() tegnaftale() tegnaftale() tegnaftale() kaldes på de enkelte aktiviteter 2) Figur 5-4 Sekvensdiagram, Start af program noter: 1. Opbyg dækker opbygninger af hele skærmbilledet 2. Metoden tegnaftale() dækker tegning af aktiviteter generelt og har reference til tegnefladeobjektet og coordinate-objektet (ikke vist) for at kunne placere aktiviteterne på tegnefladen. 48