Ingineria Programarii


1. Use-Case Diagrams

2. Activity Diagrams

3. Delegare, interfete, clase abstracte, obiecte imutabile, interfete marker


Laborator 2

Pentru acest laborator va trebui sa implementati in limbajul Java un sistem de gestiune a traficului aerian. Veti avea de construit urmatoarele:

1. O interfata AirplaneDataInterface care furnizeaza metodele: getAirplaneName() (returneaza numele avionului, e.g. "Boeing 747"), getAirplaneInformation() (furnizeaza capacitatea avionului, de ex. 250 de locuri, si numarul de clase de zbor, de ex. 3 clase), getAirplaneType() (furnizeaza tipul avionului, e.g. comercial, zbor regulat, cargo, etc.).

2. O clasa abstracta AbstractAirplane care furnizeaza metodele: getAirline() (returneaza numele liniei aeriene, e.g. "TAROM"), setAirline() (seteaza numele liniei aeriene pentru un avion).

3. Un obiect imutabil de tipul AirportInformation care furnizeaza metodele getAirportAddress(), getAirportTelephone() si getAirportManager() pentru furnizarea adresei, numarului de telefon si a numelui managerului aeroportului. Veti realiza un constructor care seteaza acesti parametrii in obiectul vostru.

4. Un aeroport este reprezentat de un obiect de tipul Airport care incapsuleaza un obiect de tipul AirportInformation cu informatii despre aeroport. Veti realiza un constructor pentru Airport care seteaza acesti parametrii in obiectul incapsulat. Fiecare aeroport mentine lista de avioane din el folosind o clasa generala Vector (vezi laboratorul 1).

5. Un avion este reprezentat printr-un obiect de tipul Airplane care deriva din AbstractAirplane si implementeaza AirplaneDataInterface.

FUNCTIONARE

1. Pentru implementare veti folosi cel putin 3 aeroporturi si in fiecare aeroport cel putin 3 avioane.

2. Programul vostru va adauga initial cate 3 avioane in fiecare din cele 3 aeroporturi (toate avioanele sunt diferite intre ele, si toate aeroporturile sunt diferite intre ele). In continuare, ii va cere utilizatorului sa efectueze zboruri intre doua aeroporturi, folosind unul din avioanele disponibile din aeroportul de plecare (adica sterge avionul respectiv din lista de avioane a aeroportului sursa, si il adauga in lista de avioane a aeroportului destinatie).

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, cu exceptia interfetelor si a claselor abstracte.

+ extra 1p: Considerand ca fiecare aeroport are coordonatele (in spatiu) X, Y la un moment dat, propuneti un algoritm (concretizat printr-o metoda intr-un obiect din ierarhia voastra) care sa evite coliziunea a doua avioane (consideram ca toate avioanele zboara la aceeasi altitudine, si au aceeasi viteza constanta de zbor) in aer. Pentru fiecare avion stim aeroportul sursa si destinatie. Consideram ca toate plecarile avioanelor se efectueaza la aceeasi ora.

+ extra 2p: Incercati sa simulati zborul efectiv intre doua rute, adica sa introduceti un timp de asteptare in care avionul parcurge distanta dintre aeroportul sursa si cel destinatie. Altfel spus, in momentul in care utilizatorul doreste sa transfere un avion dintr-un aeroport in altul, el va fi sters din lista de avioane a aeroportului sursa, si va fi inserat in lista de avioane a aeroportului destinatie doar dupa un timp minim de asteptare (de exemplu de 10 secunde). Programul vostru trebuie insa sa functioneze continuu, chiar daca existe avioane care zboara.