Informatica
Documentatie SCD - controlul Traficului FeroviarDocumentatie Proiect SCD - Controlul Traficului Feroviar 1.Definirea problemei Se
cere implementarea unui sistem pentru controlul distribuit al unei retele
de cale ferata.Reteaua de cai ferate este compusa din
gari interconectate intre ele prin linii duble de cale ferata. 2.Arhitectura generala a sistemului Fiecare gara va contine un obiect de tip Controller care va implementa o interfata grafica.Trenurile vor fi create folosind un buton din interfata grafica respectiva.Trenul va primi si o destinatie.Dupa ce trenul a fost creat, controllerul v-a stabili sensul in care va trebui sa se deplaseze trenul.Trenul va parcurge liniile dintre gari asistat de controller care va citi senzorii si va controla semafoarele si macazele.Trenul va apela metode la iesirea si intrarea intr-o gara.Cand trenul va ajunge la destinatie, acesta va fi eliminat. Liniile dintre gari sunt implementate ca liste de segemente de linie.Va fi folosit un iterator pentru deplasare pe lista (trenul va apela metoda iterator.next()).Garile vor primi id-uri pentru a decide in ce parte se va deplasa trenul.Fiecare linie din gara va avea 4 semafoare simulate printr-un vector de variabile boolean. 3.Specificatii: Proiectul va fi implementat in mediul de programare Eclipse folosind JRE 6.0 Update 10.Va avea urmatoarea diagrama UML
Descrierea claselor: Clasa Station - folosita pentru a crea obiecte de tip gara. Contine urmatoarele atribute stlines:StationRail este un obiect de tip array ce va contine un numar n de linii din gara name:String contine numele garii trains:Train va contine trenurile care sunt create in aceasta gara Contine urmatoarele metode getName():String va returna numele garii newTrain(String destination):void va crea un nou tren in gara respectiva cu destinatia destination Clasa Controller - folosita pentru a crea obiecte de tip Controller pentru gari.Controller-ul controleaza semafoarele si macazele dintr-o gara. Contine urmatoarele atribute station:Station va contine obiectul de tip gara care va fi controlat de controller-ul respectiv Clasa Train - folosita pentru a crea obiecte de tip tren.Obiectele vor fi de tipul fir de executie. Contine urmatoarele atribute: id:String contine id-ul trenului
destination:String contine destinatia trenului (numele garii) trainInStation:Boolean arata daca trenul este intr-o gara sau nu currentStation:Station arata care este ultima gara in care a fost trenul gps:GPS este obiectul GPS folosit pentru a afla locatia unde este trenul la un moment dat Contine urmatoarele metode: move():void muta trenul de pe un segment de linie pe urmatorul segment de linie getId():String returneaza id-ul trenului respectiv getDestination():String returneaza destinatia trenului enterStation():void este apelata cand trenul intra intr-o statie; contine operatii de setare a senzorilor si update-are a GPS-ului exitStation():void este apelata cand trenul iese dintr-o statie Clasa RailSegment - simuleaza un segment de linie de cale ferata Contine atributul sensor:Boolean care reprezinta senzorul segmentului; ia valoarea true sau false in functie de pozitia trenului; este setat de catre obiectele de tip Train Contine metodele: setSensor():void care seteaza valoarea senzorului getSensor():Boolean citeste valoarea senzorului Clasa StationRail - simuleaza o linie din gara sau un peron Contine urmatoarele atribute id:String este un identificator pentru linie; este folosit pentru a face diferenta dintre liniie dintr-o gara semaphores:Boolean[4] simuleaza cele 4 semafoare ale unei linii din gara Contine urmatoarele metode: getId():String returneaza id-ul liniei setSemaphores():void seteaza cele 4 semafoare getSemaphores():boolean[] citește starea semafoarelor Clasa GPS - simuleaza un gps Contine atributul l:Location care va contine locatia unui tren Contine metodele: setStation(Station s):void care va seta gara curenta la s setRailSegment(RailSegment rs):void va seta segmental curent de linie la rs getLocation():Location va returna locatia curenta Clasa Location - contine locatia curenta a unui tren Contine atributele: station:Station contine gara curenta segment:RailSegment contine segmentul de linie curent Proiectarea Class diagram:
Atributele si metodele fiecarei clase sunt explicate la punctual 3.1. Collaboration diagram:
In clasa MainClass sunt create obiecte care simuleaza liniile de cale ferata si anume StationRail si RailSegment, obiecte de tip Station si obiecte de tip Controller.In clasa Station se creaza obiecte de tip Train prin metoda newTrain().Pentru a se deplasa, firul de tip tren apeleaza metoda proprie move() care muta trenul pe segmentul de linie urmator.Trenul apeleaza metoda getController() a obiectului de tip Controller atasat cand trece de la o gara la alta și metodele enterStation() și exitStation() cand intra sau iese din gara.Obiectul Controller porneste trenul prin metoda start(), citeste si seteaza senzorii sau semafoarele segmentelor de linie prin metodele getSensor(), setSensor(), getSemaphores() si setSemaphores(). Use Case diagram: Actorii proiectului sunt utilizatorul, partial in mod automat cand creaza trenurile și total in mod manual cand el controloeza toate trenurile, controllerele care controleaza trenurile, semafoarele și senzorii in mod automat și trenurile. In diagram Use Case au fost trecute operațiile principale efectuate de catre fiecare actor.Mai exista și alte operații cum ar fi setarea GPS-ului de catre tren care sunt tratate in diagram claselor.
Sequence diagram: Au fost trecute toate tipurile de obiecte existente in proiect și relațiile dintre ele in timp.MainClass creaza toate obiectele prin metoda new() la inceputul programului.Un obiect de tip Station creaza un tren care este pornit iar un obiect de tip Controller verifica semafoarele și senzorii pentru deplasarea trenului.Cand trenul ajunge in alta gara apeleaza metoda getController() pentru o fi controlat de controllerul garii respective.Trenul isi compara numele garii cu destinația sa, iar cand coincid, trenul ve fi șters de catre Main.
Activity diagram Este prezentata o secvența de functionare.La inceput se creaza obiectele, se creaza trenul și se pornește.Controllerul verifica condițiile trenului, daca a ajuns sau nu la destinație.Daca trenul ajunge la destinație,este oprit și sters. La diagram State este tratat si obiectul de tip Controller care controleaza trenurile cum este descris mai sus.
State diagram:
|