s

15

description

ss

Transcript of s

  • Problema cu 3 gari

    1. Desen

    2. Arhitectura software

  • 3. Arhitectura RMI

    4. Diagrama secventiala

  • 5. Diagrama de clase

    6. Cod

    Import java.io.*;

    Import java.net.*;

    Public class ServerMultifir{

    Public static final int PORT=1900;

    Void StartServer(){

    ServerSocket ss=null;

    Try{

    Ss=new ServerSocket(Port);

    While(true)

    {

    Socket socket=ss.accept();

    New Tratare Client(Socket);

    } } } }

    FOR each segment DO {segment.trafficLight=false; segment.state=false;}

    outputLine.state=true;

    inputLine.trafficLight=false;

    outputLine.senzor=false;

    inputLine.senzor=flase;

    WHILE (currentTime < ) DO {

    Input: outputLine.inputSenzor, inputLine.outputSenzor, currentTime, trainList;

    Output: segment.trafficLight, interlocking.switch, inputLine.trafficLight

    La fiecare secund aplic urmtoarele reguli de control:

    //plecarea unui tren

    MainClass

    +main()

    Thread

    +run()

    Controller

    +run()+sendMessage()

    Structure

    Line

    +trafficLight+sensor

    Interlocking

    +state+linkedLineList+switch

    TrafficLight

    +state

    +set()+reset()

    Switch

    +state

    +set()+reset()

    Train

    +departuretLine+arrivalLine+departureTime

    Server

    +run()+receiveMessage()+getMessage()

    Senzor

    +state

    +signal()

    Clock

    +Attribute1

    +getCurrentTime()

    Class Diagram of the Railway Traffic Control System

  • FOR (each train trainList) DO { //control rules:

    IF((tren.startTimecurentTime) AND (interlocking.state==free) AND (outputLine.state==free)) THEN

    {

    interlocking.state=false;

    outputLine.state=false;

    IF (train.departureSegment==s0) THEN {

    interlocking.switch1=true ;

    interlocking.switch2=true;}

    IF (train.departureSegment==s1) THEN interlocking.switch2=true;

    train.departureSegment.trafficLight=true;

    } //eliberarea interlocking-ului

    IF((interlocking.state==false) AND (outputLine.inputSezor==true)) THEN interlocking.state=true;

    //eliberarea liniei de ieire

    IF(outputLine.state==false) AND (receivedMessage()==lineFree) THEN outputLine.state==true;

    //acceptarea sosirii unui tren

    IF((inputLine.inputSenzor==true) AND (interlocking.state==free) AND (train.arivalSegment==free)) THEN

    {

    inputLine.trafficLight=true;

    interlocking.state=false;

    train.arivalSegment.state=false;

    }

    //semnalizarea eliberrii linie de intrare

    IF (train.arrivalSegment.senzor==true) THEN {

    sendMessage(lineFree);

    inputLine.trafficLight=false;

    interlocking.state=true;

    }

    output: apply control signals;

    wait(1 sec.);//wait for next period

    }//endFOR

    }//endWHILE

    7. Explicatie schema

    G1-Nod : se considera tren I G1: T1

    T1 pleaca din G1 daca Si14 si S1 si S3 verde, daca nu asteapta

    T1 pe langa linie externa => se elibereaza peron=> semafor S1 sau S3-rosu => semaforul devine verde

    T1-verifica daca S2 sau S4 verde si Si1..Si4 verde=> daca intra in Nod pe la peronul liber, S1 si semaforul afferent liniei

    se face rosu, semaforul liniei verde=> daca nu, asteapta pe linie

  • 8. Diagrama clasa

    9. Retea Petri pr client-server

    (control 2 gari, 2 linii sens unic)

    P1-Prezenta tren G1

    T1-pleaca tren din gara G1=> jeton in P6-trece pe linie jeton in P2- semnalizeaza gara libera

    T2-intarziere calatorie

    Pe, P7, Pj, P15, P16, P17-semafor linie. Daca exista jeton in P8 si P14 inseamna ca avem tren pe linie si gara G2 este

    libera, deci trenul poate intra

    Jeton P9, tren in G2,

  • P10, P22, P12-> plimbam trenul in gara P-P12 P2=P13 P3=P15 P13=P14

    10.