Flight Progress Strips System for Air Traffic Control Fag:

Like dokumenter
Flight Progress Strip System for Air Traffic Control Versjon: 3.0 Software Requirements Specification Dato: Gruppe nr:

Flight Progress Strips System for Air Traffic Control Fag:

Software Prototype Document Dato: Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Flight Progress Strips System for Air Trafic Control Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Flight Progress Strips System for Air Trafic Control Fag:

Dato: Versjon: Designdokument type: Kontrollsystem for invertert pendel Fag: Bestiller: 1.0 Gruppe nr: 2 Filnavn: Systemering2 Filformat:

Software Project Progress Report Flight Progress Strip System for Air Traffic Control. Fag:

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Flight Progress Strip System for Air Traffic Control. Fag:

Læringsmål for forelesningen

IN1010 V18, Obligatorisk oppgave 5

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

IN1000 Obligatorisk innlevering 7

Grafisk Brukergrensesnitt

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Obligatorisk oppgave 4: Lege/Resept

Obligatorisk oppgave 5: Labyrint

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

HØGSKOLEN I SØR-TRØNDELAG

Post-it spørsmål fra timen (Arv og subklasser)

2 Om statiske variable/konstanter og statiske metoder.

Kravdokument type: Kontrollsystem for invertert pendel Fag: Dato: Versjon: 1.0 Gruppe nr: Bestiller: Rune Winther. Systemering2 Filformat:

IN1010 V19, Obligatorisk oppgave 2

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

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

INF1000 Prøveeksamen Oppgave 7 og 9

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

UNIVERSITETET I OSLO

INF Innleveringsoppgave 6

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

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

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

GJENNOMGANG UKESOPPGAVER 9 TESTING

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Gjennomgang av eksamen H99

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

UNIVERSITETET I OSLO

Innlevering 2b i INF2810, vår 2017

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

Argumenter fra kommandolinjen

IN1010 våren januar. Objektorientering i Java

SPPR Software Project Progress Report Uke 38-39

versjon 1.1 Brukermanual

SPPR Software Project Progress Report Uke

Mål med kurset. Java i INF Dagens tema. GUI med Swing. Dokumentasjon

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Manual MicroBuild.no Engineering

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

Flere design mønstre. 19. september 2002, Tore Berg Hansen, TISIP

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

Del 3: Evaluere uttrykk

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Læringsmål for forelesningen

UNIVERSITETET I OSLO

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

UNIVERSITETET I OSLO

Løsnings forslag i java In115, Våren 1996

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

UNIVERSITETET I OSLO

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Introduksjon til objektorientert programmering

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Use Case-modellering. INF1050: Gjennomgang, uke 04

SymWriter: R6 Innstillinger, preferanser og verktøylinjer

Hva gjøres i design? 19. september 2002, Tore Berg Hansen, TISIP

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

SPPR Software Project Progress Report Uke 42-43

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Eksamen. Objektorientert Programmering IGR 1372

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Algoritmer og Datastrukturer

INF1000 HashMap. Marit Nybakken 2. november 2003

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

WinMed3. Release Notes Allmenn Våren Release Notes Allmenn Våren 2013 Versjon Side 1

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

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Gruppenavn. Beskrivelse av arkitektur For Navn på systemet. Versjon <1.0>

Brukermanual for TrackGrabber

Leveranse 2. September 27, 2002

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

HØGSKOLEN I SØR-TRØNDELAG

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Transkript:

Designdokument type: Flight Progress Strips System for Air Traffic Control Fag: Gruppe nr: Veiledere: Versjon: 2.0 Dato: 21.11.2002 Software Engineering Filformat: 1 Filnavn: Børre Ludvigsen/Ky Van Ha PDF format sds_v2.pdf Gruppemedlemmer: Navn: Signatur: Dato: Christian Raspotnig Kjell Gunnar Guttormsen Petter Larsen Eva Sandved Therese Røsholdt Side: 100

Innholdsfortegnelse 1 Introduksjon 104 1.1 Hensikt 104 1.1.1 Endringsoversikt 104 1.2 Scope 108 1.2.1 Muligheter for videreutvikling 108 1.2.2 Hva FPSS ikke gjør 109 1.3 Definisjoner og forkortelser 109 1.3.1 Definisjoner 109 1.3.2 Forkortelser 109 1.4 Referanser 109 1.4.1 Bøker 109 1.4.2 Artikler 109 1.4.3 Annet 109 1.5 Oversikt 110 2 Arkitektonisk Design 111 2.1 Struktur og relasjoner 111 2.1.1 Begrunnelse for objekt orientert design 111 2.1.2 Lag arkitektur 111 2.1.3 Subsystem og moduler arkitektur 112 2.1.4 Objektmodeller 114 2.1.4.1 Overordnet objekt modell 114 2.1.4.2 Objekt modell med metoder og 115 attributter, første del 2.1.4.3 Objekt modell med metoder og 116 attributter, andre del 2.1.5 Statediagram 117 2.1.5.1 FPSS 117 2.1.5.2 FPSS moduler 118 2.1.5.3 Endre status 119 2.2.6 Sekvensdiagram 120 2.1.6.1 FPSS mottar FPD fra AFTN 120 2.1.6.2 Sjekk om strip eksisterer 121 2.1.6.3 Sortere strip 121 2.1.6.4 Endre dynamisk flightinformasjon 122 2.1.6.5 Endre stripstatus 123 2.1.6.6 Opprette stripboard 124 2.1.6.7 Opprette GUIArrival strip 125 2.1.6.8 Opprette GUIDeparture strip 126 2.1.6.9 Opprette GUITransit strip 127 3 Detaljdesign 128 3.1 Beskrivelse av klassen FPSS 128 3.1.1 Beskrivelse av metoden main 128 3.1.2 Beskrivelse av metoden makegui 128 3.1.3 Beskrivelse av metoden recieve 129 3.1.4 Beskrivelse av metoden splitfpd 130 Side: 101

3.1.5 Beskrivelse av metoden addstrip 131 3.1.6 Beskrivelse av metoden addstriptopending 131 3.1.7 Beskrivelse av metoden addstriptoholding 132 3.1.8 Beskrivelse av metoden deletestrip 132 3.1.9 Beskrivelse av metoden exitsystem 133 3.2 Beskrivelse av klassen StripCreator 133 3.2.1 Beskrivelse av metoden createstrip 134 3.3 Beskrivelse av klassen Strip 135 3.3.1 Beskrivelse av metoden doitall 135 3.3.2 Beskrivelse av metoden setcommonparameters 136 3.3.3 Beskrivelse av get metodene i klassen Strip 137 3.3.4 Beskrivelse av set metodene i klassen Strip 138 3.4 Beskrivelse av klassen DepartureStrip 138 3.4.1 Beskrivelse av metoden doitall 139 3.5 Beskrivelse av klassen TransitStrip 139 3.5.1 Beskrivelse av metoden doitall 139 3.6 Beskrivelse av klassen ArrivalStrip 140 3.6.1 Beskrivelse av metoden doitall 140 3.7 Beskrivelse av klassen Check 140 3.7.1 Beskrivelse av metoden checkstripexists 141 3.8 Beskrivelse av klassen Sort 141 3.8.1 Beskrivelse av metoden sortstrip 142 3.9 Beskrivelse av klassen ChangeDynamicInformation 142 3.9.1 Beskrivelse av metoden changedynamicinformation 143 3.10 Beskrivelse av klassen ChangeStatus 143 3.10.1 Beskrivelse av metoden changestatusvectors 144 3.10.2 Beskrivelse av metoden maketransponder 145 3.10.3 Beskrivelse av metoden removetransponder 146 3.11 Beskrivelse av klassen PrintOut 146 3.11.1 Beskrivelse av metoden printstrip 147 3.12 Beskrivelse av klassen Savebase 147 3.12.1 Beskrivelse av metoden savestrip 148 3.12.2 Beskrivelse av metoden savechanges 148 3.12.3 Beskrivelse av metoden savechangedstatus 149 3.13 Beskrivelse av klassen GUIStripboard 149 3.13.1 Beskrivelse av metoden setupgui 150 3.13.2 Beskrivelse av metoden makecolumn1 150 3.13.3 Beskrivelse av metoden makecolumn2 151 3.13.4 Beskrivelse av metoden makecolumn3 151 3.13.5 Beskrivelse av metoden makecolumn4 152 3.13.6 Beskrivelse av metoden setcolumnwidth 152 3.13.7 Beskrivelse av metoden getcolumnwidth 153 3.14 Beskrivelse av klassen FPSSMenuBar 153 3.14.1 Beskrivelse av metoden makemenubar 153 3.14.2 Beskrivelse av metoden makeclosemenu 154 3.14.3 Beskrivelse av metoden actionperformed 154 3.15 Beskrivelse av klassen GUIStripHeader 155 3.15.1 Beskrivelse av metoden setupgui 155 Side: 102

3.16 Beskrivelse av klassen GUIStripContainer 156 3.16.1 Beskrivelse av metoden setupgui 156 3.16.2 Beskrivelse av metoden addguistrip 156 3.16.3 Beskrivelse av metoden removeguistrip 157 3.16.4 Beskrivelse av metoden showstrips 157 3.16.5 Beskrivelse av metoden setcontainer 158 3.16.6 Beskrivelse av metoden getcontainer 158 3.17 Beskrivelse av klassen GUIStripCreator 158 3.17.1 Beskrivelse av metoden createguistrip 159 3.18 Beskrivelse av klassen GUIStrip 159 3.18.1 Beskrivelse av metoden doitall 160 3.18.2 Beskrivelse av metoden setupgui 160 3.18.3 Beskrivelse av metoden addborder 161 3.18.4 Beskrivelse av metoden makecolumn1 161 3.18.5 Beskrivelse av metoden makecolumn2 162 3.18.6 Beskrivelse av metoden makecolumn3 162 3.18.7 Beskrivelse av metoden makefirstpart 163 3.18.8 Beskrivelse av metoden makemiddlepart 163 3.18.9 Beskrivelse av metoden makelastpart 164 3.18.10 Beskrivelse av metoden makecolumn4 164 3.18.11 Beskrivelse av metoden makefirstareas 165 3.18.12 Beskrivelse av metoden makelastarea 165 3.19 Beskrivelse av klassen GUIDepartureStrip 166 3.19.1 Beskrivelse av metoden doitall 166 3.19.2 Beskrivelse av metoden makecolumn1 167 3.19.3 Beskrivelse av metoden makemiddlepart 167 3.19.4 Beskrivelse av metoden makelastpart 168 3.19.5 Beskrivelse av metoden makelastarea 168 3.20 Beskrivelse av klassen GUITransitStrip 169 3.20.1 Beskrivelse av metoden doitall 169 3.20.2 Beskrivelse av metoden makelastpart 170 3.20.3 Beskrivelse av metoden makelastarea 170 3.21 Beskrivelse av klassen GUIArrivalStrip 171 3.21.1 Beskrivelse av metoden doitall 171 4 Vedlegg 172 4.1 Sporingstabell 172 4.1.1 Forward-from, Detalj Design 172 4.1.2 Backward-to, Detalj Design 173 4.2 GUI presentasjon 175 4.3 Strip presentasjon 176 4.3.1 Backward-to, Detalj Design 176 4.3.2 Backward-to, Detalj Design 178 4.3.4 Backward-to, Detalj Design 180 4.4 XML 181 Side: 103

1 Introduksjon 1.1 Hensikt Dette er et dokument som tar for seg grov- og detaljdesign. Grov design er et overordnet design på hvordan programvaren skal bygges opp. Detaljdesign gir en detaljert beskrivelse på hvordan programvaren skal bygges opp. Dokumentet avspeiler SRS, det vil si at alle krav i SRS er dekket opp i SDS. Dokumentet inneholder en modell over systemets arkitektur. Arkitekturen er videre delt opp i pakker og moduler, som videre er delt opp i metoder. Metodene er definert ut i fra hva de skal gjøre. 1.1.1 Endingsoversikt Fra versjon 1.0 til 2.0 Heading Beskrivelse Dato 1.6 Lagt til endringsoversikt 11.11.2002 2.1 Slettet oversikt 2.1 Oversikt over moduler/komponeneter Ordnet nummerering, alt under tidligere punkt 2.2 har fått nummer 2.1 11.11.2002 2.1.1 Punkt 2.2.1 i versjon 1. Endret ordlyd i forhold til begrunnelse for objekt orientert design 3 Gjort om beskrivelse til komponentene (klasser og metoder). Sett på punktene: : Hensikten med komponeneten. Skal være litt mer spesifikk i forhold til virkeligheten Function: Være mer spesifikk når det gjelder input og output Subordinate: Hver klasse har ulike metoder. Disse metodene skal listes opp : Beskrive med pseudokode Slettet punkter som har tomt innhold Gikk gjennom klassene og metodene: ChangeDynamicInformation o changedynamicinformation ChangeStatus o changestatusvectors o maketransponder o removetransponder Check o checkstripexists Gikk gjennom klassene og metodene: PrintOut o printstrip o printupdatestrip o printchangedstatus Savebase o savestrip o savechanges o savechangedstatus 11.11.2002 13.11.2002 Side: 104

Sort o sortstrip GUIStripHeader o setupgui GUIStripCreator o createguistrip StripCreator o createstrip Strip o setcommonparameters FPSS o Main o makegui o setup o addstrip o deletestrip o splitfpd o exitsystem Lagt til metodene doitall og en samlet getmetode for klassen Strip. Lagt til metodene addstriptoholding og addstriptopending, samt slettet metodene stripexists og sortstrip i klassen FPSS Gikk gjennom klassene og metodene: FPSSMenuBar o makemenubar o makeclosemenu o makehelpmenu GUIStripboard o setupgui o makecolumn1 o makecolumn2 o makecolumn3 o makecolumn4 GUIStripContainer o setupgui o addguistrip o removeguistrip o showstrips 14.11.2002 Lagt til metoden actionperformed i klassen FPSSMenuBar. Lagt til metodene setcolumnwidth og getcolumnwidth i klassen GUIStripboard. Lagt til metodene setcontainer og getcontainer i GUIStripContainer. Gikk gjennom klassene og metodene: GUIStrip o SetUpCommonGUI o addborder o makelabels o makeareas 18.11.2002 Side: 105

GUIDepartureStrip o doitall o setupremaininggui o makelabels o makeareas GUITransitStrip o doitall o setupremaininggui o makelabels o makeareas GUIArrivalStrip o doitall o setupremaininggui o makelabels o makeareas DepartureStrip o doitall TransitStrip o doitall ArrivalStrip o doitall Endret rekkefølge på beskrivelse av klasser og metoder så disse kommer mer i naturlig rekkefølge. Henvisningene ang Detaljdesignet er derfor referert ved navn istedenfor avsnittnummer i denne endringsoversikten 19.11.2002 Endringer gjort i klassen FPSS: Erstattet metoden setup med recieve Endringer gjort i klassen PrintOut Slettet metodene printupdatestrip og printchangedstatus da det viser seg at metoden printstrip utfører de nødvendige funksjoner også for oppdateringer og forandringer Endringer gjort i klassen GUIStrip: Erstattet metoden setupcommongui med metoden setupgui Erstattet metodene makelabels og makeareas med metodene makecolumn1, makecolumn2, makecolumn3, makefirstpart, makemiddlepart, makelastpart, makecolumn4, makefirstareas og makelastarea Endringer gjort i klassen GUIDepartureStrip Slettet metoden setupremaininggui, dekkes av metoden setupgui i GUIStrip Erstattet metodene makelabels og makeareas med make Column1, makemiddlepart, makelastpart og makelastarea Endringer gjort i klassen GUITransitStrip Slettet metoden setupremaininggui, dekkes av metoden setupgui i GUIStrip Erstattet metodene makelabels og makeareas med makelastpart og makelastarea Side: 106

Endringer gjort i klassen GUIArrivalStrip Slettet metoden setupremaininggui, dekkes av metoden setupgui i GUIStrip Slettet metodene makelabels og makeareas, dekkes av defaultimplementasjon i GUIStrip Endringer gjort i klassen FPSSMenuBar: Slettet metoden makehelpmenu. Dette fordi gruppen har kommet fram til at minst mulig av stripboardet bør dekkes til da det er viktig at FLL har full oversikt over dette til enhver tid. Hjelp til å bruke FPSS bør i stedet gis i skriftlig form, som brukermanual og oppslag ved arbeidsstasjonen. 4.1.1 Slettes. Har ikke lengre moduler å spore til 11.11.2002 4.1.2 Blitt 4.1.1 11.11.2002 Sletter krav F-32 14.11.2002 Lagt inn krav F-36. Oppdatert sporing til F-36 4.1.3 Slettes. Har ikke lengre moduler å spore til 11.11.2002 4.1.4 Blitt 4.1.2 11.11.2002 4.2 Vedlegg 1. Tegning med GUI uten strip slettes. Skrevet en liten forklaring ang hvike strip som kan ligge under hvilken header 11.11.2002 Side: 107

1.2 Scope FPSS som utvikles skal være en del av hovedsystemet for ATC. FPSS skal lagre strips for generell backup, skrive ut strips for å sikre en kritisk backup-løsning, og presentere strips på skjerm. Disse skal kunne manipuleres på skjerm i henhold til flygekontrolltjenesten. Strips skal inneholde alle relevante data for flygekontolltjenesten for hver enkelt flight. FPSS skal brukes i kontrolltårn som et hjelpemiddel for den FLL som flighten har kontakt med under avgang, landing og eventuelt underveis. Fordelene med dette produktet er at det er enkelt å implementere, samtidig som det ivaretar en sikker og effektiv trafikkavvikling. FPSS vil gi en større mobilitet enn dagens system med tanke på fysisk plassering av arbeidsposisjonen, da FPSS kan kjøres på en PC, eventuelt bærbar PC. Dette gjør det mulig å sette opp og konfigurere PC en hvor som helst på arbeidsstedet som har tilkoblingsmuligheter til nettverk som har kontakt med AFTN. Det vil være enkelt å bytte ut HW-komponenter da FPSS benytter seg av standardutstyr. Gjennom å lagre klareringer og informasjon som gis til flighter, og presentere disse på strips på en forståelig måte, kan FLL lett og raskt skaffe seg oversikt over hvordan han har klarert og informert flighter. Det at all informasjon vises digitalt istedenfor å bli skrevet for hånd på papirstrips minsker risikoen for å misforstå på grunn av uleslig håndskrift. En annen fordel ved digital visning er at uvesentlig informasjon på strips, for eksempel tidligere gitte høydeforandringer, kan fjernes underveis. I motsetning til et stripbord har et digitalt system muligheten til å automatisk logge tidspunkt for forskjellige endringer gitt av FLL. Dette vil gjøre det lettere å avklare eventuelle spørsmål om nødsituasjoner når dette er aktuelt, for eksempel som et hjelpemiddel for Havarikommisjonen ved flyulykker og nesten-ulykker. Dette fordi alle forandringer, med tidspunktet for når forandringen skjedde, blir lagret i en generell backup. Hvis FPSS faller ut har man en kritisk backup, som til enhver tid inneholder en papirutgave av lufttrafikken. 1.2.1 Muligheter for videreutvikling FPSS skal tilrettelegges for framtidig videreutvikling, og skal benytte seg av teknologi som støtter presentasjon av data på mange ulike måter. Man kan legge til funksjonalitet for å lage en lydfil. Lydfilen kan inneholde ting som blir meddelt FLL eller en flight. Man kan legge til funksjonalitet hvor man oversender klareringer og informasjon til flighter digitalt som tekst, samtidig som det blir formidlet via radio. Det vil være mulig å lage funksjonalitet som automatisk markerer situasjoner som kan bli eller er kritiske direkte på skjerm. Dette kan for eksempel være to flighter som er på kollisjonskurs. FPSS vil i opplæringsøyemed av FLL-aspiranter være effektivt, da man i større grad kan se nøyaktig når klareringer og informasjon blir gitt og skrevet ned. Man kan kombinere FPSS med spesialutstyr som Touchscreen og Pen-Pad Ved å koble arbeidsposisjoner i nettverk vil man kunne legge til funksjonalitet som gjør det mulig å flytte strips fra en arbeidsposisjon til en annen. Side: 108

1.2.2 Hva FPSS ikke gjør FPSS tar ikke imot ATFN-change melding, AFTN-delay melding, AFTN-cancel melding og Metar. Vi forutsetter at FPD inneholder korrekt informasjon og vil derfor ikke validere dataene. Hver strip inneholder dynamisk og statisk flightinformasjon. Vi skal ikke kunne forandre den statiske flightinformasjonen. FPSS tar ikke for seg exceptions som blant annet feil ved skriving til printer og lagringsmedium. Vi lager ikke et brukergrensesnitt opp mot databasen som inneholder generell backup. 1.3 Definisjoner og forkortelser 1.3.1 Definisjoner Se punkt 6.6 1.3.2 Forkortelser Se punkt 6.5 1.4 Referanser 1.4.1 Bøker: - Software Engineering, Ian Sommerville, 2001 - Software Engineering, Theory and practice, Shari Lawrence Pfleeger, 2001 - Practical Object-oirented Development with UML and Java, Richard C. Lee og William M. Tepfenhart, 2002 - Object-Oriented Design, Peter Coad /Edward Yourdon, Yourdon Press/Prentice Hall, 1991 - Patterns in Java vol 1, Mark Grand, Wiley, 1998 1.4.2 Artikler: - Design Patterns, elements of reusable object-oriented SW, Erich Gamma,, 1997 - Transition To Object-Oriented Software Development, Mohamed E. Fayad, Wei- Tek Tsai, Milton L. Fulghum, 1996 - Design Document ICS 52. Krishna Raman - Factory Patterns: Factory Method and Abstract Factory, Bob Tarr, 2000 - Introduction to Design Patterns, 1997 1.4.3 Andre: - DigiStrips (video over digital stips, utviklet i samarbeid med Sentre D etudes De La Navigation Aerienne) Side: 109

1.5 Oversikt Punkt 2 tar for seg arkitektonisk design. Vi gir først en oversikt over systemets moduler. Hver modul er beskrevet ut i fra input, output, funksjonalitet og hvilke ressurser som brukes. Deretter har vi gitt en begrunnelse for hvorfor vi har valgt objekt orientert design. Vi deler inn systemet i moduler og subsystem for å vise arkitekturen til systemet. Objektmodellen viser systemets klasser, objekter, metoder og attributter. En overordnet objektmodell viser kardinaliteten mellom de ulike klassene. Andre modeller vi har valgt for å beskrive systemet er: - statediagram viser hvordan hva som må utføres for at tilstanden skal forandres - sekvensdiagram viser hvordan meldinger blir sendt mellom de forskjellige modulene/objektene Punkt 3 tar for seg detaljdesign. Her beskrives hver komponent ut i fra disse momentene:, type, hensikt, funksjon, subordinasjon, avhengighet, grensesnitt, ressurser, prosessering og data. Punkt 4 inneholder vedlegg: - sporingstabellene, forward-from og backward-to. - skjermbilde Side: 110

2 Arkitektonisk Design 2.1 Struktur og relasjoner 2.1.1 Begrunnelse for objekt orientert design I utviklingen av FPSS planlegger vi å bruke objekt orientert design. Dette fordi FPSS vil bli et system som stadig vil bli utsatt for forandringer og et objekt orientert design legger forholdene til rette for dette. Objektorientering Virkeligheten består av objekter Objekter består av attributter (data) og metoder (operasjoner) Objektene håndterer seg selv Objektene kommuniserer vha meldinger / funksjoner Objekt orienterte systemer er lettere å vedlikeholde på grunn av at objektene er uavhengige. De kan bli forstått og modifisert som stand-alone entiteter. Dersom man forandrer implementasjonen av et objekt eller legger til tilleggstjenester trenger ikke dette å forandre andre systemobjekter. Objekter er potensielt gjenbrukbare komponenter fordi tilstand og operasjoner er innkapslet uavhengig av andre objekter. Design kan bli utviklet ved bruk av objekter som har blitt laget i tidligere design. Dette reduserer design-, programmerings- og valideringskostnadene. Det kan også føre til at man benytter standard objekter (som forbedre design forståelsen) og det reduserer risikoen involvert i software utviklingen. 2.1.2 Lag arkitektur <<subsystem>> innsamling innsamlingslaget. Objektene er opptatt av å motta data fra ekstern kilde <<subsystem>> prosessering prosesseringslaget. Objektene er opptatt med å prosessere samlede data <<subsystem>> Backup Backuplaget. Ojektene er opptatt med å lagre generell og kritisk data <<subsystem>> Vise / endre data Vise-datalaget. Objektene er opptatt med å presentere og endre dataene Side: 111

2.1.3 Subsystem og modularkitektur FPSS <<subsystem>> innsamling <<subsystem>> prosessering <<subsystem>> Backup <<subsystem>> Vise / endre data Side: 112

<<subsystem>> innsamling <<subsystem>> prosessering Mottar data <<subsystem>> konvertering Sortere Sjekke data <<subsystem>> Backup <<subsystem>> Vise/endre data Fremvisning Utskrift Arkivere <<subsystem>> All endring <<subsystem>> konvertering Konvertere til XML Lage strip Side: 113

2.1.4 Objektmodeller 2.1.4.1 Overordnet objekt modell Side: 114

2.1.4.2 Objekt modell med attributter og metoder, første del Side: 115

2.1.4.3 Objekt modell med attributter og metoder, andre del Side: 116

2.1.5 Statediagram 2.1.5.1 FPSS Side: 117

2.1.5.2 FPSS moduler Side: 118

2.1.5.3 Endre status Side: 119

2.1.6 Sekvensdiagram Sekvensene dokumenterer interaksjoner som utføres mellom objekter. 2.1.6.1 FPSS mottar FPD fra AFTN Side: 120

2.1.6.2 Sjekk om strip eksisterer 2.1.6.3 Sortere strip Side: 121

2.1.6.4 Endre dynamisk flightinformasjon Side: 122

2.1.6.5 Endre stripstatus Side: 123

2.1.6.6 Opprette Stripboard Side: 124

2.1.6.7 Opprette GUIArrival strip Side: 125

2.1.6.8 Opprette GUIDeparture strip Side: 126

2.1.6.9 Opprette GUITransit strip Side: 127

3 Detaljdesign 3.1 Beskrivelse av klassen FPSS Subordinate Dependencies FPSS Klasse Starter programmet, lager GUI, tar imot FDP, sjekker om strip eksisterer fra før, oppretter strips, sorterer strips og legger til og fjerner strips fra stripboard Inneholder metodene main, makegui, recieve, stripexsists, splitfpd, addstrip, addstripstopending, addstripstoholding, deletestrip, sortstrip, og exitsystem FPSS er relatert til GUIStripBoard, ChangeDynamicInformation, ChangeStatus, Check, Sort, PrintOut, Savebase, Strip og StripCreator Instansieres av metoden main 3.1.1 Beskrivelse av metoden main main Starter opp programmet FPSS Kaller opp konstruktøren i FPSS 3.1.2 Beskrivelse av metoden makegui makegui Opprette et GUI. FLL trenger et GUI å jobbe mot. Kalles opp av konstuktøren til FPSS Instansierer et GUIStripboardobjekt Setter en WindowListener på GUIet Kaller showmetode for GUIet GUIStripboard: guisb Side: 128

3.1.3 Beskrivelse av metoden recieve Function recieve FPSS må kunne motta data fra AFTN Mottar en AFTN Flight Plan melding Kalles opp når FPSS mottar en AFTN Flight Plan melding Kaller opp splitfpd Tar imot en AFTN Flight Plan melding Sjekker om meldingen er mottatt tidligere, er den det lages ikke noen strips. Er meldingen ikke mottatt tidligere kalles metoden splitfpd String: strfpd Side: 129

3.1.4 Beskrivelse av metoden splitfpd Function splitfpd Funksjon FPD må splittes opp i sine enkelte elemeter. Dette for å kunne lage en strip Mottar strfpd som inneholder hele FPDen Returnerer vectorfpd Kalles opp av recieve Skiller de 6 linjene i strfpd fra hverandre med stringtokenizer og legger dem i en array Deler opp linjene videre med stringtokenizer og substrings Tidspunkter blir gjort om til GregorianCalender-objekter, for å få ETA plusses EET på ATD Legger GregorianCalender-objektene og de aktuelle substringene i vectorfpd i samme rekkefølge som de forekommer i AFTN-meldingen Returnerer vectorfpd String: strfpd, inneholder en AFTN-melding StringTokenizer: tokens, skiller linjene i strfpd String array: lines, representerer hver enkelt linje i strfpd Vector: vectorfpd, til å legge elementer for å lage en strip i StringTokenizer: line1, deler opp linje 1 StringTokenizer: line2, deler opp linje 2 Integer: hours1, timeantallet i ETD Integer: minutes1, minuttantallet i ETD GregorianCalendar: cal1, representerer ETD StringTokenizer: line4, deler opp linje 4 String: firstpart, representerer første del av linje 4 String: secondpart, representerer siste del av linje 4 Integer: hours2, timeantallet i EET Integer: minutes2, minuttantallet i EET GregorianCalendar: cal2, representerer ETA Side: 130

3.1.5 Beskrivelse av metoden addstrip Function addstrip Hver strip skal være et objekt og for å få tak i objektene må de legges i den rette vectoren Mottar en vector, fpd. Innholdet i vectoren brukes til å lage en eller to strips Kalles opp av recieve Instansierer en vector, newstrips. Kaller metoden createstrip i klassen stripcreator med mottatt vector som argument. createstrip returnerer en vector med strip-objekter som legges i vectoren newstrips. Går gjennom alle strips i newstrips og sjekker status for disse Hvis status er pending: sendes strip til metoden addstriptopending Hvis status er holding: sendes strip til metoden addstriptoholding Vector: fpd Vector: newstrips Enumeration: e Strip: newstrip 3.1.6 Beskrivelse av metoden addstriptopending Function addstriptopending Transitstrip skal legges i en vector, få et GUI og legges rett i pendingcontaineren på stripboardet Mottar stripobjekt som skal legges i en vector Kalles opp av metoden addstrip Kaller opp addguistrip i klassen GUIStripContainer Mottar et stripobjekt. Legger stripobjektet i vectoren pendingstripsvector Sender stripobjektet til metoden addguistrip i klassen GUIStripContainer Strip: striptoadd Vector: pendingstripsvector GUIStripContainer: pendingcontainer Side: 131

3.1.7 Beskrivelse av metoden addstriptoholding Function addstriptoholding Departure- og arrivalstrip skal etter de er sorterte legges i en liste Mottar stripobjekt som skal legges i en vector Kalles opp av metoden addstrip Mottar et stripobjekt. Legger stripobjektet i vectoren holdingstripsvector Strip: striptoadd Vector: holdingstripsvector 3.1.8 Beskrivelse av metoden deletestrip Function deletestrip Sletter en strip i handoffstripsvector Mottar stripobjektet som skal slettes Kalles opp fra en metode som hele tiden sjekker strips i handoffcontaineren Mottar strip som skal slettes Finner strip som skal slettes i handoffstripsvector Sletter strip fra en handoffstripsvector Strip: striptodelete Vector: handoffstripsvector Side: 132

3.1.9 Beskrivelse av metoden exitsystem exitsystem Å lukke FPSS på en forsvarlig måte Kalles opp av WindowListener i makegui Sjekker om containerne på stripbordet er tomme - Er alle containerne tomme lukkes FPSS - Er alle containerne tomme bortsett fra handoffcontainer, blir FLL spurt om han likevel vil avslutte. Svarer FLL ja lukkes FPSS, svarer han nei beholdes FPSS åpent - Er det strips igjen i noen andre containere enn handoffcontainer vil FPSS ikke lukkes, og FLL vil få beskjed om dette 3.2 Beskrivelse av klassen StripCreator Subordinates Dependencies StripCreator Klasse Sørger for at Strip som blir laget er av den riktige typen (DepartureStrip, TransitStrip eller ArrivalStrip) Inneholder metoden createstrip StripCreator er relatert til FPSS, Strip, DepartureStrip, TransitStrip og ArrivalStrip Mottar data fra FPSS og sender det videre til Strip Side: 133

3.2.1 Beskrivelse av metoden createstrip createstrip Funksjon Function Lager strip av den riktige typen ut i fra mottatt FPD Mottar en fpd vector som inneholder mottatt data Sjekker hvilken strip/strips som skal lages, lager den/dem og legger den/dem i en vector. Returnerer vectoren Mottar data fra FPSS Mottar en vector, fpd Lager en ny vector som skal inneholde den/de ny stripene Henter frem element 3 (ADEP) og 8 (ADES) i fpd vectoren Legger disse elementene inn i stringer, adep og ades Sjekker om disse strengene er like stringen i workstation Hvis begge strengene er lik innholdet i workstation lages både en departure- og arrival strip - Setter stripclass til lik classd - Instansierer strip - Kaller metoden doitall i klassen strip med vectoren fpd som argument - Legger det nye stripobjektet inn i den nye vectoren - Setter stripclass til lik classa - Instansierer strip - Kaller metoden doitall i klassen strip med vectoren fpd som argument - Legger det nye stripobjektet inn i den nye vectoren Hvis kun ades er lik inneholdet i strengen workstation lages kun en departurestrip - Setter stripclass til lik classa - Instansierer strip - Kaller metoden doitall i klassen strip med vectoren fpd som argument - Legger det nye stripobjektet inn i den nye vectoren Hvis kun adep er lik inneholdet i strengen workstation lages kun en departurestrip - Setter stripclass til lik classd - Instansierer strip - Kaller metoden doitall i klassen strip med vectoren fpd som argument - Legger det nye stripobjektet inn i den nye vectoren Hvis ikke inneholdet i ades eller adep er like innholdet i workstation så lages det en transitstrip - Setter stripclass til lik classt - Instansiere strip - Kaller metoden doitall i klassen strip med vectoren fpd som argument - Legger det nye stripobjektet inn i den nye vectoren Returnerer vectoren Vector: fpd, strips String: aped, ades, workstation Class: classt, classd, classa, stripclass Strip: strip1, strip2 Side: 134

3.3 Beskrivelse av klassen Strip Subordinates Dependencies Strip Abstrakt klasse Lager komponentene som er felles for alle dens subklasser Inneholder metodene doitall, setcommonparameters, get, getstatus, getfromstatus, getcallsign, getaircraft, getwaketurbulencecatergory, getadep, getetd, gettas, getplannedflightlevel, getflightroute, getades, geteta, getremarks, getheading, getheadings, getaltitude, getaltitudes, setstatus, setfromstatus, setetd, settas, setplannedflightlevel, setflightroute, seteta, setremarks, setheading, setoldheadings, setaltitude, setoldaltitudes Har subklasser DepartureStrip, TransitStrip, ArrivalStrip Strip er relatert til FPSS og StripCreator Mottar flightplanvector fra subklassen String: type, status, fromstatus, callsign, aircraft, waketurbulencecategory, adep, tas, plannedflightlevel, flightroute, ades, remarks, heading, altitude Vector: oldheadings, oldaltitudes GregorianCalendar: etd, eta 3.3.1 Beskrivelse av metoden doitall Function doitall Abstrakt prosedyre Å tvinge alle subklassene til å inneholde en implementasjon av metoden Mottar fpd vector Vector: inneholder flight plan data Side: 135

3.3.2 Beskrivelse av metoden setcommonparameters Function setcommonparameters Å sette verdier på variabler som subklassene har felles og hvor verdiene er de samme for alle subklassene Mottar fpd vector Mottar fpd vector fra en av subklassene Trekker ut verdiene i hvert element i fpd vectoren callsign skal inneholde element 0 aricraft skal inneholde element 1 waketurbulencecategory skal inneholde element 2 adep skal inneholde element 3 etd skal inneholde element 4 tas skal inneholde element 5 plannedflightlevel skal inneholde element 6 flightroute skal inneholde element 7 ades skal inneholde element 8 eta skal inneholde element 9 remarks skal inneholde element 10 String: callsign, aircraft, waketurbulencecategory, adep, tas, plannedflightlevel, flightroute, ades, remarks GregorianCalendar: etd, eta Side: 136

3.3.3 Beskrivelse av get metodene i klassen Strip Function get, getstatus, getfromstatus, getcallsign, getaircraft, getwaketurbulencecatergory, getadep, getetd, gettas, getplannedflightlevel, getflightroute, getades, geteta, getremarks, getheading, getoldheadings, getaltitude og getoldaltitudes Funksjon Når verdiene er satt må de kunne hentes frem av andre metoder Returnere de verdiene som er satt i Strip-objektet Returnere de verdiene som er satt i Strip-objektet Status FromStatus Callsign Aircraft WakeTurbulenceCategory Adep Etd Tas PlannedFlightLevel FlightRoute Ades Eta Remarks Heading OldHeadings Altitude OldAltitudes String: callsign, aricraft, waketurbulencecategory, adep, tas, altitude, flightroute, ades, remarks, heading, altitude Vector: oldheadings, oldaltitudes GregorianCalendar: etd, eta Side: 137

3.3.4 Beskrivelse av set metodene i klassen Strip Function setstatus, setfromstatus, setetd, settas, setaltitude, setflightroute, seteta, setremarks, setheading, setoldheadings, setaltitude, setoldaltitudes For å kunne sette verdier på variabler når FLL gjør endringer i dynamiske flightinformasjon eller status i strips Setter variablene til de verdier metodene får som input Setter variablene til de verdier metodene får som input Status FromStatus Etd Tas FlightRoute Eta Remarks Heading OldHeadings Altitude OldAltitudes String: status, fromstatus, tas, flightroute, remarks, heading, altitude Vector: oldheadings, oldaltitudes GregorianCalendar: etd, eta 3.4 Beskrivelse av klassen DepartureStrip Subordinates Dependencies DepartureStrip Subklasse av Strip Lager et DepartureStrip-objekt Inneholder metodene doitall DepartureStrip er relatert til Strip og StripCreator Mottar flightplanvector fra StripCreator Side: 138

3.4.1 Beskrivelse av metoden doitall doitall Å sette verdier på variabler i DepartureStrip Mottar data fra StripCreator Kaller opp metoden setcommonparameters i superklassen Strip Setter verdier på variabler som er unike for DepartureStrip Vector: flightplanvector 3.5 Beskrivelse av klassen TransitStrip Subordinates Dependencies TransitStrip Subklasse av Strip Lager et TransitStrip -objekt Inneholder metodene doitall TransitStrip er relatert til Strip og StripCreator Mottar flightplanvector fra StripCreator 3.5.1 Beskrivelse av metoden doitall doitall Å sette verdier på variabler i TransitStrip Mottar data fra StripCreator Kaller opp metoden setcommonparameters i superklassen Strip Setter verdier på variabler som er unike for TransitStrip Vector: flightplanvector Side: 139

3.6 Beskrivelse av klasse ArrivalStrip Subordinates Dependencies ArrivalStrip Subklasse Lager et ArrivalStrip -objekt Inneholder metodene doitall ArrivalStrip er relatert til Strip og StripCreator Mottar flightplanvector fra StripCreator 3.6.1 Beskrivelse av metode doitall doitall Å sette verdier på variabler i ArrivalStrip Mottar data fra StripCreator Kaller opp metoden setcommonparameters i superklassen Strip Setter verdier på variabler som er unike for ArrivalStrip Vector: flightplanvector 3.7 Beskrivelse av klassen Check Subordinates Dependencies Check Klasse Når FPSS mottar data fra AFTN sjekker Check om mottatt data finnes i systemet fra før. Skal kun ha unike FDPer i FPSS Inneholder metoden checkstripexists Check brukes av klassen FPSS for å sjekke om mottatt FPD er unik. Check har metode som returnerer true eller false avhengig om mottatt FPD finnes eller ikke Får data fra klassen FPSS og leverer prosessert data til samme klasse Side: 140

3.7.1 Beskrivelse av metoden checkstripexists Function Dependencies checkstripexists Funksjon Sjekker om mottatt data finnes i FPPS Metoden tar i mot callsign, adep, etd, vector med stripsvectorer fra FPSS. Når metoden har sjekket om dataene finnes i noen av stripsvectorene returnerer den en boolsk verdi, true eller false checkstripexists er avhengig av FPSS Mottar data fra FPSS og leverer boolsk verdi tilbake Mottar callsign, adep og etd og fpdvector. Trekker ut hvert element i vectoren Trekker ut feltene for callsign, adep og etd i elementet Sjekker om input er lik innholdet i callsign, adep og etd Hvis lik retuneres true, hvis ikke returneres false String: callsign String: adep GregorianCalendar: etd Vector: stripsvectors 3.8 Beskrivelse av klassen Sort Subordinates Dependencies Sort Klasse Sort sorterer departure- og arrivalstrip. Vite hvilken strip som skal sendes til skjerm. Inneholder metoden sortstrip Sort brukes av klassen FPSS for å legge inn departure- og arrivalstrips på riktig plass i en vector. Får data fra klassen FPSS og leverer prosessert data til samme klasse Side: 141

3.8.1 Beskrivelse av metoden sortstrip Function Dependencies sortstrip Funksjon Sorterer departure- og arrivalstrip på ETD og ETA. Når departure- eller arrivalstrip har mindre enn 30 minutter før de blir aktive sendes de til skjerm. Metoden tar i mot et stripobjekt (som skal sorteres inn i en vector) og en vector (som strip skal legges inn i) Når metoden har lagt strip inn på riktig plass i vectoren blir vectoren returnert sortstrip er avhengig av FPSS Mottar data fra og returnerer data til FPSS. Mottar stripobjekt og invector ETD eller ETA (avhengig av om stripen er departure eller arrivalstrip) trekkes ut fra stripobjektet ved bruk av getmetodene Dette sammeliknes mot ETD eller ETA til stripene i vectoren (også trukket ut ved hjelp av getmetodene) Mottatt stripobjekt legges inn i vectoren mellom to stripobjekter, det ene med høyere ETD eller ETA og det andre med lavere ETD eller ETA Returnerer outvector Vector: invector Vector: outvector Strip: striptosort, strip som skal legges på riktig plass i vector 3.9 Beskrivelse av klassen ChangeDynamicInformation Subordinates Dependencies ChangeDynamicInformation Klasse ChangeDynamicInformation sørger for at endringer FLL gjør i dynamisk flightinformasjon oppdateres i stripobjektet. FFL skal kunne gjøre endringer på strip. Inneholder metoden changedynamicinformation ChangeDynamicInformation er avhengig av klassen FPSS Får data fra klassen FPSS og leverer prosessert data til samme klasse. Side: 142

3.9.1 Beskrivelse av metoden changedynamicinformation Function Dependencies changedynamicinformation Funksjon Når FLL har endret dynamisk flightinformasjon endrer skal stripobjektet oppdateres Mottar stripobjektet(stripen som skal endres), changevector (en vector som inneholder alle endringene i dynamisk flightinformasjon), invector (vectoren som inneholder stripen som skal endres). Når stripen er oppdatert returnerer metoden invector(vector med oppdatert stripobjekt) changedynamicinformation er avhengig av FPSS Mottar data fra og returnerer data til FPSS. Mottar stripobjekt, vectorer changevector og invector Søker gjennom invector og finner stripobjektet som svarer til input Endret informasjon hentes fra changevector Ved hjelp av setmetodene i stripobjektet opprettes det et oppdatert stripobjekt med endret dynamisk flightinformasjon. Det gamle stripobjektet fjernes fra invector Det nye oppdaterte stripobjektet settes inn i invector Vector (med strings) : changevector Vector (med stripobjekter): invector Strip: striptochange 3.10 Beskrivelse av klassen ChangeStatus Subordinates Dependencies ChangeStatus Klasse Når FLL flytter strips på skjerm skal strips flyttes til aktuell vector. Dersom stripen flyttes fra pendinglisten, dvs. aktiveres, skal den tildeles en unik transponderkode. Inneholder metodene changestatusvectors, maketransponder og removetransponder ChangeStatus er avhengig av klassen FPSS. FPSS bruker ChangeStatus for å flytte strips mellom vectorer, samt for å generere transponderkode Får data fra klassen FPSS og leverer prosessert data til samme klasse Side: 143

3.10.1 Beskrivelse av metoden changestatusvectors Function Dependencies changestatusvectors FLL skal kunne endre status på strip. Strips blir da flytte fra en vector til en annen Mottar fromvector(vectoren som stripen skal flyttes fra), tovector(vectoren som stripen skal flyttes til), og strip som er stripobjektet som skal flyttes. Etter at stripen er flyttet til annen vector returnerer metoden de oppdaterte vectorene fromvector og tovector, samt stripobjektet (med evt. nygenerert transponderkode) changestatusvectors er avhengig av FPSS Mottar data fra og returnerer data til FPSS Mottar vectorer, fromvector, tovector og stripobjekt Finner stripobjekt i fromvector Striobjektet fjernes fra fromvector Stripobjektet legges i tovector Dersom fromvector er pendingstripsvector - kalles metoden maketransponder for å få generert transponderkode. - legger stripobjekt med transponderkode i tovector Dersom tovector er pendingstripvector - kalles metoden removetransponder. - tranponderkoden fjernes fra transpondervectoren Vector: fromvector, tovector Strip: striptochange Side: 144

3.10.2 Beskrivelse av metoden maketransponder Function Dependencies maketransponder Funksjon Genererer unike transponderkoder og legger disse i en vector. Hver flight skal ha en unik transponderkode. Metoden tar i mot transpondervector(vectoren som inneholder alle transponderkodene som på dette tidspunkt brukes i FPSS). Når unik transponderkode er generert returnerer metoden en unik transponderkode Kalles fra metoden changestatusvectors i klassen ChangeStatus Mottar og returnerer data til metoden changestatusvectors Mottar en transpondervector. Generere en transponderkode i intervallet 1 til og med 7777 Sjekker om koden er 7500, 7600 og 7700 Hvis ja - generes en ny transponderkode Sammenligner den genererte transponderkoden mot koder i transpondervectorer Finnes den fra før - genereres en ny transponderkode Finnes den ikke - legges transponderkoden i vectoren Returnere den unike transponderkoden Vector: transpondervector Integer: transpondercode Side: 145

3.10.3 Beskrivelse av metoden removetransponder Function Dependencies removetransponder Fjerner transponderkode fra transpondervectoren. Gjør koden tilgjengelig igjen Metoden tar i mot transponderkoden som skal fjernes og transpondervectoren som koden ligger i. Kalles fra metoden changestatusvectors i klassen ChangeStatus Mottar data fra metoden changestatusvectors Mootar transponderkoden og vectoren den ligger i Transponderkoden fjernes fra transponderkodevectoren Transponderkodevectoren er da oppdatert og transponderkoden kan da brukes igjen Vector: transpondervector Integer: transpondercode 3.11 Beskrivelse av klassen PrintOut Subordinates Dependencies Resources PrintOut Klasse PrintOut sender data til skriver. Utskriften skal fungere som backup hvis FPSS faller ut Inneholder metoden printstrip PrintOut er avhengig av FPSS Mottar data fra klassen FPSS Matriseskriver Side: 146

3.11.1 Beskrivelse av metoden printstrip Function Dependencies Resources printstrip printstrip sørger for å få skrevet ut en strip på papir. Utskriften skal fungere som backup hvis FPSS faller ut Metoden mottar et stripobjekt printstrip er avhengig av FPSS Mottar stripobjekter fra FPSS Matriseskriver Metoden mottar automatisk et stripobjekt når strip er konvertert Stripobjektet sendes til printerkø Strip: striptoprint 3.12 Beskrivelse av klassen Savebase Subordinates Dependencies Resources Savebase Klassen Savebase sender data til database. Ved behov skal data om de ulike flightene kunne hentes frem igjen Inneholder metodene savestrip, savechanges og savechangedstatus Savebase er avhengig av FPSS Mottar data fra FPSS basetilgang Side: 147

3.12.1 Beskrivelse av metoden savestrip Function Dependencies Resources savestrip savestrip sender stripobjekt til database. Ved behov skal data om de ulike flightene kunne hentes frem igjen Metoden mottar et stripobjekt savedstrip er avhengig av FPSS Mottar stripobjekter fra FPSS basetilgang Metoden mottar automatisk et stripobjekt når strip er konvertert Stripobjektet sendes til databasen Strip: striptosave 3.12.2 Beskrivelse av metoden savechanges Function Dependencies Resources savechanges savechanges oppdaterer en strip i databasen. Ved behov skal data om de ulike flightene kunne hentes frem igjen Metoden mottar et ChangeDynamicInformation-objekt savechanges er avhengig av FPSS Får ChangeDynamicInformation-objekt fra FPSS basetilgang Metoden mottar automatisk et ChangeDynamicInformation-objekt når FLL har gjort endringer på strip Forandringene som er gjort på strip sendes til databasen ChangeDynamicInformation: inneholder stripinformasjon og endret dynamisk flightinformasjon Side: 148

3.12.3 Beskrivelse av metoden savechangedstatus Function Dependencies Resources savechangedstatus SaveChangedStatus oppdaterer en strip i databasen. Ved behov skal data om de ulike flightene kunne hentes frem igjen Metoden mottar et ChangeStatus-objekt fra FPSS savechangedstatus er avhengig av FPSS Mottar et ChangeStatus-objekt fra FPSS basetilgang Metoden mottar automatisk et ChangeStatus-objekt når FLL har endret status på strip Forandringen i status sendes til databasen ChangeStatus: inneholder stripinformasjon 3.13 Beskrivelse av klassen GUIStripboard Subordinates Dependencies Resources GUIStripboard Klasse Henter inn komponenter fra andre klasser og lager et komplett GUI som FLL jobber mot Inneholder metodene setupgui, makecolumn1, makecolumn2, makecolumn3, setcolumnwidth og getcolumnwidth GUIStripboard er avhengig av klassen FPSS, og er relatert til klassene FPSSMenuBar, GUIStripHeader og GUIStripContainer Får data fra klassen FPSS GUIStripboard extends JFrame Side: 149

3.13.1 Beskrivelse av metoden setupgui setupgui Setter opp layout og kaller andre metoder som adder ulike deler til layouten Kalles opp av konstruktøren til GUIStripboard Kaller opp metoden makecolumn1 Kaller opp metoden makecolumn2 Kaller opp metoden makecolumn3 Kaller opp metoden makecolumn4 Får container Setter layout Kaller opp metoden makecolumn1 Kaller opp metoden makecolumn2 Kaller opp metoden makecolumn3 Kaller opp metoden makecolumn4 Container: c 3.13.2 Beskrivelse av metoden makecolumn1 makecolumn1 Lager første kolonne på stripboardet Kalles opp av setupgui Lager GUIStripHeader objekt med rett navn og farge (TAXI, hblue) Setter dette øverst i kolonnen Lager GUIStripContainer objekt av rett type, bredde og høyde (taxi, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Lager GUIStripHeader objekt med rett navn og farge (DEPARTURE, hblue) Setter dette nedenfor det første GUIStripcontainer-objektet Lager GUIStripContainer objekt av rett type, bredde og høyde (departure, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Container: c Integer: x, y GUIStripHeaders: taxiheader, departureheader GUIStripContainer: taxicontainer, departurecontainer Side: 150

3.13.3 Beskrivelse av metoden makecolumn2 makecolumn2 Lager andre kolonne på stripboardet Kalles opp av setupgui Lager GUIStripHeader objekt med rett navn og farge (AIRBORNE, hivory) Setter dette øverst i kolonnen Lager GUIStripContainer objekt av rett type, bredde og høyde (airborne, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Container: c Integer: x, y GUIStripHeaders: airborneheader GUIStripContainer: aribornecontainer 3.13.4 Beskrivelse av metoden makecolumn3 makecolumn3 Lager andre kolonne på stripboardet Kalles opp av setupgui Lager GUIStripHeader objekt med rett navn og farge (INBOUND, hyellow) Setter dette øverst i kolonnen Lager GUIStripContainer objekt av rett type, bredde og høyde (inbound, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Lager GUIStripHeader objekt med rett navn og farge (ARRIVAL, hyellow) Setter dette nedenfor GUIStripcontainer-objektet Lager GUIStripContainer objekt av rett type, bredde og høyde (arrival, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Container: c Integer: x, y GUIStripHeaders: inboundheader, arrivalheader GUIStripContainer: inboundcontainer, arrivalcontainer Side: 151

3.13.5 Beskrivelse av metoden makecolumn4 makecolumn4 Lager fjerde kolonne på stripboardet Kalles opp av setupgui Lager GUIStripHeader objekt med rett navn og farge (PENDING, hivory) Setter dette øverst i kolonnen Legger header til container Lager GUIStripContainer objekt av rett type, bredde og høyde (pending, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Lager GUIStripHeader objekt med rett navn og farge (HANDOFF, hivory) Setter dette nedenfor GUIStripcontainer-objektet Lager GUIStripContainer objekt av rett type, bredde og høyde (handoff, columnwidth, sbheight ) Legger GUIStripContainer i et ScrollPane og setter dette nedenfor GUIStripHeader-objektet Container: c Integer: x, y GUIStripHeaders: pendingheader, handoffheader GUIStripContainer: pendingcontainer, handoffcontainer 3.13.6 Beskrivelse av metoden setcolumnwidth Function setcolumnwidth Setter bredden på kolonnene Mottar bredden på kolonnene Mottar bredden på kolonnene Setter variable lik mottat argument Integer: columnwidth Side: 152

3.13.7 Beskrivelse av metoden getcolumnwidth getcolumnwidth Funksjon Returnere bredden på kolonnene Returnere bredden på kolonnene Integer: columnwidth 3.14 Beskrivelse av klassen FPSSMenuBar Subordinates Dependencies Resources FPSSMenuBar Klasse FPSSMenuBar lager en closemeny. FLL skal kunne lukke programmet Inneholder metodene makeclosemenu og actionperformed FPSSMenuBar er relatert til GUIStripboard Blir instansiert fra GUIStripboard FPSSMenuBar extends JMenuBar 3.14.1 Beskrivelse av metoden makemenubar makemenubar Funksjon Kalle metodene makemenubar og makeclosemenu for å lage innholdt i MenuBaren Kalles opp fra konstruktøren Kaller opp metoden makeclosemenu Side: 153

3.14.2 Beskrivelse av metoden makeclosemenu makeclosemenu Lager closemeny. FLL skal kunne avslutte FPSS Kalles opp fra makemenubar Setter navn på menyen Lager hurtigtast for menyen Lager JMenuItem under closemenyen Lager icon for JMenuItemet Legger til actionlistner til JMenuItem Legger JMenuItem til menyen JMenu: closemenu JMenuItem: close 3.14.3 Beskrivelse av metoden actionperformed Function actionperformed Å lukke FPSS på en forsvarlig måte Mottar event fra JmenuItem close Kalles opp når FLL velger JmenuItem close Sjekker om containerne på stripbordet er tomme - Er alle containerne tomme lukkes FPSS - Er alle containerne tomme bortsett fra handoffcontainer, blir FLL spurt om han likevel vil avslutte. Svarer FLL ja lukkes FPSS, svarer han nei beholdes FPSS åpent - Er det strips igjen i noen andre containere enn handoffcontainer vil FPSS ikke lukkes, og FLL vil få beskjed om dette ActionEvent: e Side: 154

3.15 Beskrivelse av klassen GUIStripHeader Subordinates Dependencies Resources GUIStripHeader Klasse Setter farge og navn på header og border rundt header Inneholder metoden setupgui GUIStripHeader er relatert til GUIStripboard Mottar navn og farge fra GUIStripboard GUIStripHeader extends JPanel 3.15.1 Beskrivelse av metoden setupgui setupgui De ulike headerne og border skal ha ulike farger. Metoden setter opp layout Kalles opp av konstruktøren til GUIStripHeader Setter layout Setter bakgrunnsfargen som er definert i konstruktør Lager ramme ut i fra edgecolor Lager label med navn som er definert i konstruktør Setter font på label String: headername Color: headercolor Color: edgecolor Border: egde Jlabel: headerlabel Side: 155

3.16 Beskrivelse av klassen GUIStripContainer Subordinates Dependencies Resources GUIStripContainer Klasse Lager en container som skal inneholde GUIStrips som skal vises på skjerm Inneholder metodene setupgui, addguistrip, showstrips, setcontainer, getcontainer GUIStripContainer er relatert til GUIStripboard, GUIStripCreator, GUIStrip og ChangeStatus Mottar containertype, bredde på containeren som skal lages, samt høyden på stripboardet fra FPSS GUIStripContainer extends JPanel 3.16.1 Beskrivelse av metoden setupgui setupgui Setter opp layout til container Kalles opp av konstruktøren til GUIStripContainer Setter layout 3.16.2 Beskrivelse av metoden addguistrip Function addguistrip Legger til strip i container Mottar stripogjektet som skal legges til container Kaller opp showstrips med guistripvector som argument Oppretter nytt GUIStrip-objekt med rette argumenter (strip som skal legges til, containerwidth, stripboardheight) Legger det til i vector Kaller opp showstrips med vector som argument GUIStrip: newguistrip Vector: guistripvector Integer: containerwidth, stripboardheight Side: 156

3.16.3 Beskrivelse av metoden removeguistrip Function removeguistrip Sletter strip i container Mottar stripobjektet som skal slettes fra containeren Kaller opp showstrips Mottar strip som skal slettes Går igjennom vector til GUIStrip-objektet som skal slettes blir funnet Sletter GUIStrip-objektet Kaller opp showstrips GUIStrips: sletteguistrip Vector: guistripvector 3.16.4 Beskrivelse av metoden showstrips Function showstrips Viser strips i container på skjerm Mottar vector som inneholder strips Kalles opp av addguistrip og removeguistrip Mottar vector som inneholder strips Henter ut høyde til første GUIStrip i vectoren Henter ut bredde til første GUIStrip i vectoren Går gjennom alle GUIStrips i vectoren Setter bounds på hver GUIStrip Legger hver GUIStrip i containeren Øker størrelsen på containeren så den kan inneholde et ubegrenset antall strips Kaller opp setpreferredsize med bredde og høyde på containeren som argument Revealiderer så containeren kan vise fram det nye innholdet Vector: guistripv Integer: x, stripheight, stripwidth, panelheight Enumeration: e GUIStrips: strip1 Container Side: 157