Inginerie Software 1. Class Diagrams 2. Object Diagrams 3. Proxy, factory method, abstract factory, builder, prototype |
|
---|---|
Laborator 3 Vrem sa proiectam un sistem flexibil de gestiune a clientilor unui magazin de calculatoare . Vom utiliza pentru aceasta o colectie de baze de date. Fiecare baza de date extinde clasa CustomDatabase care pune la dispozitie metoda void storeCustomer(Customer c). Veti defini doua subclase ale acestei clase, DiskDatabase si MemoryDatabase. Informatiile referitoate la clientul stocat in baza de date vor fi citite/scrise:
Clasa Customer contine informatii despre numele clientului si calculatorul comandat de acesta (un singur calculator pentru fiecare client!). Un calculator (reprezentat printr-o subclasa a clasei abstracte Computer) poate fi de tipul ServerComputer (Athlon64 + 4GB RAM + monitor 19"), HomeComputer (Celeron + 512 MB RAM + monitor 17"), GamingComputer (Pentium 4 + 1GB RAM + monitor 17"). Fiecare calculator e format din trei componente, conform exemplelor date. Aceste componente (o componenta este reprezentata printr-o instanta a unei clase ComputerPart, care pune la dispozitie o metoda pentru setarea/obtinerea numelui componentei) vor fi: un procesor, un monitor si o memorie RAM. Va trebui sa scrieti un program care sa:
FUNCTIONARE 1. Folositi o lista Vector in clasele de tip CustomDatabase pentru a retine lista de clienti la un moment dat. 2. Pentru implementarea metodei void storeCustomer(Customer c) folositi-va obligatoriu de Prototype Pattern. 3. Pentru implementarea componentelor necesare pentru a forma un calculator, folositi-va obligatoriu de Abstract Factory Pattern. 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, 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. |