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



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

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

Løsning af møntproblemet

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

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

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

Skriftlig eksamen i Datalogi

Databaseadgang fra Java

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

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

Tree klassen fra sidste forelæsning

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

Abstrakte datatyper C#-version

A Profile for Safety Critical Java

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

SWC eksamens-spørgsmål. Oversigt

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

Ugeseddel 4 1. marts - 8. marts

SAX Simple API for XML.

Dag 10 Flertrådet programmering

DANMARKS TEKNISKE UNIVERSITET

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Videregående programmering i Java

Test af It-komponent

Tredjepart webservices

Singleton pattern i Java

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

Videregående Programmering for Diplom-E Noter

DM507 Algoritmer og datastrukturer

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

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

Kursus navn: Indledende programmering Kursus nr

DM502. Peter Schneider-Kamp

DM507 Algoritmer og datastrukturer

Kursusarbejde 3 Grundlæggende Programmering

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

Computer netværk og TCP/IP protokoller. dcomnet 1

Hvordan vælger jeg dokumentprofilen?

BRP Kursusintroduktion og Java-oversigt

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

/05/2013 Tilføjet dokumentation af bvn input for GetEngagementDetailed

IDAP manual Analog modul

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

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Objektorienteret Programmering

ITD ecmr WEB Services. Af Allan Wisborg, IT Udvikler

Grænseflade til afhentning og indberetning af prøvekarakterer i dansk og matematik på Optagelse.dk

Indholdsfortegnelse for kapitel 3

Skriftlig eksamen i Datalogi

Kom godt igang med Inventar registrering

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

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

SigmaT.

Transkript:

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), hvor bagagen til givne flyafgange samles og lastes på fly. Skranker, sortering og terminaler er forbundne med conveyor-bånd, og en række stregkodelæsere langs linjen følger bagageenhedernes vej gennem systemet. Derudover indeholder systemet en database med passagerlister og flyveplaner. Det hele overvåges af en central server, der modtager data fra systemets enheder og tilbyder en række services til de samme enheder. Til højre ses en skitse af systemet. Skranke #1 Central Server Reservationer Flyveplaner m.v. Terminal #1 I skal realisere en server, der kan varetage ovennævnte opgaver. Indtil videre er der specificeret en række metoder, som er nødvendige for at opretholde den overordnede styring, og som kan indsamle de oplysninger, der registreres undervejs i systemet. Der mangler dog en specifikation af alle de metoder, som er nødvendige for at enhver klient kan overvåge systemet. Dernæst skal I realisere overvågningsdelen på skrankeklienten og på terminal-klienten samt en klient til vedligeholdelse af stamdata. Skranke #2 Skranke #n Sortering Terminal #2 Terminal #m Der stilles følgende krav til server og klienter: Server-siden Den centrale server modtager data fra Reservationssystem 1. Passagernummer (Entydig streng bestående af 5 tegn) 2. Navn 3. Flyafgang Flyveplan 1. Flyafgang 2. Terminal (Nummereret fra 1, 2,..) Skranker (Check-in) 1. Passagernummer 2. Bagagenummer (Entydig streng bestående af 9 tegn) 3. Tidsstempel Sortering 1. Bagagenummer 2. Tidsstempel (ind) 3. Tidsstempel (ud/sorteret) Terminaler (Gates) 1. Bagagenummer 2. Tidsstempel Dernæst forsyner den skranke, sortering og terminaler samt reservationssystemet med de nødvendige oplysninger 26-10-04, Bjørk og Otto side 1

Klient-siden (overvågningsdelen brugergrænseflade til klienterne)) Skranke-klient Oversigt over aktive flyafgange Input: Ingen Output: Liste over aktive flight-numre med tilhørende terminalnumre (gates) Terminal-klient Oversigt over manglende passagerer på aktive flyafgange, som har reserveret plads, men endnu ikke har foretaget check-in Input: Terminal-nummer (gate) Output: Liste med passagernumre og navne Oversigt over manglende bagageenheder, dvs. enheder, som er checket ind, men endnu ikke nået frem til terminalen. Input: Terminal-nummer (gate) Output: Liste over manglende bagageenheder: For hver enhed skal der være flg. oplysninger: Bagagenummer, navn, aktuelt bånd, tidsstempel (check ind) samt tidsstempel for aktuelt bånd Fragtliste ved nedlukning. Input: Terminal-nummer (gate) Output: Liste over bagage som skal fragtes til fly. For hver bagageenhed skal der være flg. oplysninger: Bagagenummer og navn Klient til vedligehold af stamdata Oprettelse, sletning og redigering af Passagerliste og flyafgange. En flyafgang er aktiv, når der er tilknyttet et terminalnummer (gate). Styringsklient (simuleret) - er programmeret Se StyringsInterface Realiseringen Serveren skal realiseres som en RMI-server, som klienterne kan koble sig op i mod. De nødvendige class-filer til at simulere styringen er placeret i pakken vpr3. Her findes et StyringsInterface, hvor de metoder, der er nødvendige for at systemet kan styres, er specificeret. De metoder, I selv efterfølgende specificerer, placeres i et interface, der arver fra StyringsInterface, se følgende kode: package vpr3; import java.rmi.*; interface ServerInterface extends StyringsInterface { // Her angives de metoder, som de øvrige klienter skal anvende 26-10-04, Bjørk og Otto side 2

Opstart af simuleringen Når serveren er realiseret, startes simuleringen ved: Registrering og instantiering af serveren Instantiering af et Projekt-objekt med angivelse af følgende argumenter: Navn på host Portnummer Symbolsk navn på serveren Antal af skranker Antal af terminaler Koden kunne fx have følgende udseende: import java.rmi.*; import java.rmi.registry.*; class Test { public static void main(string args[]) { String host = "nrhxxxxyy.tietgen.dk"; int port = 1099; String servername = "Projekt"; int antalskranker = 2; int antalterminaler = 3; try { // Registrering, instantiering og opstart af server catch (Exception e) { System.out.println(e); System.exit(1); // Opstart af styringsklient vpr3.projekt p = new vpr3.projekt(host, port, servername, antalskranker, antalterminaler); Java-dokumentationen på de to ovennævnte klasser er vedlagt som bilag. Eksempeldata Der er tilgængelige eksempeldata i databasen Projekt.mdb. Her findes to tabeller med henholdsvis passageroplysninger og aktive flyafgange. God fornøjelse Bjørk og Otto 26-10-04, Bjørk og Otto side 3

vpr3 Class Projekt java.lang.object +--vpr3.projekt public class Projekt extends java.lang.object For at starte simuleringen/styringen skabes et objekt af klassen Projekt med de angivne parametre. Herefter vil applikationen på baggrund af de oplysninger, der hentes fra serveren, generere test-data fra skranker, sortering og terminaler Constructor Summary Projekt(java.lang.String host, int port, java.lang.string servername, int antalskranker, int antalterminaler) Methods inherited from class java.lang.object clone, equals, finalize, getclass, hashcode, notify, notifyall, tostring, wait, wait, wait Constructor Detail Projekt public Projekt(java.lang.String host, int port, java.lang.string servername, int antalskranker, int antalterminaler) host - streng. Navnet på host'en port - heltal. Port-nummeret servername - streng. Symbolsk navn på serveren antalskranker - heltal. Antal skranker, som applikationen skal simulere antalterminaler - heltal. Antal terminaler, som applikationen skal simulere 26-10-04, Bjørk og Otto side 4

vpr3 Interface StyringsInterface public abstract interface StyringsInterface extends java.rmi.remote Styringsinterfacet angiver de metoder, der er nødvendige for at styringen/simulationen af systemet kan foregå Method Summary boolean checkreservation(java.lang.string pnr, int id, java.util.date d) Ved henvendelse ved skranken undersøges, om passageren er opført på listen, dvs. at der til et passagernummer er knyttet en aktiv flyafgang. java.lang.string[] getpnr() Metoden getpnr anvendes til at få overblik over de passagerer til aktive flyafgange, der endnu ikke er checket ind int getterminal(java.lang.string bagageid) For at gennemføre sorteringen af bagagen, skal systemet kunne angive til hvilken terminal en given bagageenhed skal sendes. void nybagage(java.lang.string pnr, java.lang.string bagageid, java.util.date d) Når en passager afleverer sin bagage ved skranken, registreres disse enheder én efter én med entydigt bagage-id og sammenhørende passagernummer. void settid(java.lang.string msg, java.lang.string bagageid, java.util.date d) Hver gang en bagageenhed passerer en læser på sin vej fra skranke til terminal registreres sammenhørende værdier af læseren og bagageenhedens id Method Detail checkreservation public boolean checkreservation(java.lang.string pnr, int id, java.util.date d) Ved henvendelse ved skranken undersøges, om passageren er opført på listen, dvs. at der til et passagernummer er knyttet en aktiv flyafgang. Metoden checkreservation checker passageren med det angivne nummer ind, hvis denne er opført på passagerlisten. Ved vellykket check-in returneres true, ellers false pnr - passagernummer. Entydig streng bestående af 5 tegn id - skranke-id. Heltal, skrankerne nummereres 1, 2,.. d - tidsstempel. Tidspunkt for check-in Returns: returnerer true, hvis passageren er blevet checket ind getpnr public java.lang.string[] getpnr() Metoden getpnr anvendes til at få overblik over de passagerer til aktive flyafgange, der endnu ikke er checket ind Returns: liste over numre på samtlige passagerer, der endnu ikke er checket ind. Et passagernummer er en unik streng bestående af 5 tegn 26-10-04, Bjørk og Otto side 5

getterminal public int getterminal(java.lang.string bagageid) For at gennemføre sorteringen af bagagen, skal systemet kunne angive til hvilken terminal en given bagageenhed skal sendes. Metoden getterminal returner et terminalnummer givet et bagage-id bagageid - entydig streng bestående af 9 tegn Returns: returnerer et heltal. Terminalerne er nummereret 1, 2,.. nybagage public void nybagage(java.lang.string pnr, java.lang.string bagageid, java.util.date d) Når en passager afleverer sin bagage ved skranken, registreres disse enheder én efter én med entydigt bagageid og sammenhørende passagernummer. Metoden nybagage kaldes for hver bagageenhed, når passageren med pnr checker ind pnr - passager-nr. Entydig streng bestående af 5 tegn bagageid - entydig streng bestående af 9 tegn d - tidsstempel. Tidspunkt for check-in settid public void settid(java.lang.string msg, java.lang.string bagageid, java.util.date d) Hver gang en bagageenhed passerer en læser på sin vej fra skranke til terminal registreres sammenhørende værdier af læseren og bagageenhedens id msg - streng, der angiver læserens placering. fx "Sortering ud" eller "Terminal2 ind" bagageid - entydig streng bestående af 9 tegn d - tidsstempel. Tidspunkt for registrering 26-10-04, Bjørk og Otto side 6