Proces w czarnej skrzynce

Dotychczas system karty aglomeracyjnej traktowałem jak tzw. czarną skrzynkę (ang. black box). Interesowały mnie tylko te działania, które mają skutek na wyświetlane komunikaty i reakcje na działania użytkownika. Wskazywałem początek trasy, koniec trasy i otrzymywałem zwrotnie odpowiedni komunikat.

Zastanówmy się jednak jak proces przedstawiony w jednym z poprzednich wpisów, a dokładnie o komunikatach dla odbiorcy wygląda w systemie karty. Można powiedzieć, że ma na pewno operacje: przyjmij punkt trasy, wyświetl komunikat, nalicz opłatę. Można sobie wyobrazić, że ma również sprawdź czy nastąpiła przesiadka (momencie odczytu punktu trasy), sprawdź czas między punktami trasy (aby określić, czy to jest kontynuacja trasy czy niezależna podróż).

Karta450

Na powyższym diagramie górna jego część prezentuje wybrane działania i ich skutek. Dodatkowo zostały wpisane obiekty, które są tworzone. Obiekty te są odpowiednikiem klas zaprezentowanych poniżej, za pomocą UML. Przedstawiony diagram obrazuje co potencjalnie może się dziać w ramach systemu i jakie struktury są w tym celu potrzebne. Na przykład, po „przyjmij punkt trasy” następuje sprawdzenie, czy to początek, czy koniec, sprawdzenie czy nastąpiła przesiadka, następnie zapis informacji z jego parametrami, następnie naliczenie opłaty i wyświetlenie komunikatu.

Krok „Określ rodzaj punktu”, po określeniu numeru linii i numeru przystanku, sprawdza, dla obecnie zapisanej trasy, (jeżeli istnieje), jaki rodzaj może to być punktu – początek, koniec czy przesiadka – są to rodzaje Punktu trasy, stąd zastosowane dziedziczenie. Określa te parametry, które zostają zapisane jako element trasy. Następnie następuje w kroku „Nalicz opłatę” żądanie Określ opłatę(), które w zależności od parametrów trasy, nalicza opłatę do końca linii, aktualizuje opłatę dla przesiadki lub określa końcową opłatę za przejechany odcinek. Naliczona opłata lub różnica do zwrotu zostaje odnotowana w saldzie karty poprzez operację ZmienSaldo().

Atrybut Linia określa na jakiej linii a atrybut przystanek określa kiedy i na jakim przystanku nastąpiło wskazanie punktu trasy. Atrybut Linia jest potrzebny do określenia czy nastąpiła przesiadka, a Przystanek (numer, czas) wskazuje, czy może traktować kolejny punkt jako przesiadkę czy niezależne rozpoczęcie trasy. Trasa określana jest przez poszczególne Punkty trasy. „Aktualna trasa” jest zapisywana dla danej Karty raz w systemie.

 

Reklama