Ingineria Programarii


1. Package Diagram

2. State Machine Diagram

3. Command, little language, mediator, snapshot, observer



 

Laborator 7

Vrem sa scriem un program in care sa avem un modul care executa periodic una sau mai multe metode ale unor obiecte diferite. Dorim sa decuplam insa clasa care se ocupa de planificarea executiei metodelor de clasele care implementeaza comportamentul pe care il urmarim.

Veti implementa un fir de executie care la fiecare N milisecunde (unde N va fi citit de la tastatura) va parcurge o lista de task-uri (veti defini cel putin doua task-uri, ambele implementand o interfata Task cu o metoda void performTask()). Pentru fiecare task vom avea (ca si wrapper) un obiect TaskEntry, avand ca atribut intervalul de timp la care acel task se va executa (si, desigur, celelalte atribute necesare pentru a implementa programul).

Firul vostru de executie va retine o lista de task-uri intr-un Vector (sau alta structura, la alegere), adica o lista de obiecte de tip TaskEntry.

Veti scrie cel putin doua clase care implementeaza Task. Un task, instanta a primei clase, va calcula la fiecare M milisecunde (M se citeste de la tastatura) cate un numar Fibonacci. Un alt task, instanta a celei de-a doua clase, va calcula la fiecare P milisecunde (P se citeste de la tastatura) cate un numar prim, in ordine crescatoare.

FUNCTIONARE

1. Programul va cere utilizatorului pe N, M si P (daca doriti sa folositi mai mult de 2 task-uri, puteti sa adaugati dupa cum doriti), dupa care va incepe sa ruleze task-urile conform planificarii.

2. Folositi command design pattern pentru a implementa acest program.

NOTA: Puteti folosi orice alte elemente auxiliare in programul vostru. Puteti de asemenea adauga parametrii metodelor dupa cum considerati. Puteti adauga metode si atribute suplimentare claselor voastre, fara a modifica insa interfetele si metodele abstracte.

IMPORTANT: Orice atribut al unei clase trebuie sa fie private sau protected , accesul la el se face prin intermediul unor metode public pe care le veti defini. Mentineti obligatoriu conventia de notare a limbajului Java in programele voastre.

+ extra 1p: Implementati o metoda pentru stergerea unui task.

+ extra 2p: Implementati in programul mentionat observer pattern astfel incat la fiecare executie a unui task, celelalte task-uri sa fie notificate automat de ea si sa afiseze cate un mesaj simplu pe ecran.


"Arnold Schwarzenegger virus... Terminates and stays resident. It'll be back."