Ingineria Programarii 1. Timing Diagram 2. Component Diagram 3. Flyweight, dynamic linkage, decorator, cache management, chain of responsibility |
|
---|---|
|
Laborator 5 Vrem sa simulam functionarea unui editor de text care permite formatarea textului, mai exact permite setarea unui anumit font, a unei anumite marimi si a celor trei atribute obisnuite: bold, italic si underline pentru o portiune de text. Pentru simulare vom folosi flyweight pattern, fiecare caracter reprezentand un obiect de tipul DocumentChar care contine un singur caracter. Mai multe caractere compun un text. Intr-o clasa DocumentCharFactory veti furniza o metoda pentru a accesa un caracter din lista de caractere din documentul vostru (utilizati un Hashtable pentru a stoca lista de caractere). In clasa DocumentChar veti implementa de asemenea o metoda care va afisa, pentru un parametru de tip DocumentChar, caracterul respectiv pe ecran (impreuna cu numele fontului care il caracterizeaza, formatarea - bold, etc. - si marimea). Lista de texte dintr-un document o veti retine, eventual, intr-un ArrayList, iar lista de caractere din fiecare text o veti retine eventual tot intr-un ArrayList. Fiecare caracter adaugat in aceasta lista va insemna de fapt un DocumentChar returnat de metoda din DocumentCharFactory. In continuare va trebui sa folositi chain of responsability pentru a cauta un sir de caractere in tot documentul vostru. Cautarea se va face in lista voastra de mai sus (in ArrayList), pentru fiecare text formatat intr-un anumit stil; daca sirul cautat nu exista in primul text, prin chain of responsability el este cautat in al doilea text (formatat diferit, evident); daca nici aici nu este prezent, el este cautat in al treilea text, etc. FUNCTIONARE 1. Programul vostru trebuie sa ceara utilizatorului o anumita formatare (nume font, marime si daca textul este bold, italic si/sau underline), dupa care citeste exact o linie de text formatata in acel stil. Procesul se repeta pana cand utilizatorul nu mai doreste sa introduca noi linii de text. 2. In continuare i se cere utilizatorului sirul de cautat in textul documentului (cautarea se va face doar in texte care au aceeasi formatare); programul va afisa fie textul in care apare acest sir, fie va afisa ca nu exista sirul cautat daca el nu a fost gasit. 3. La terminare, programul va afisa fiecare caracter din text, impreuna cu o statistica simpla care evidentiaza cate caractere au fost stocate in text, comparativ cu cate elemente au fost stocate prin flyweight pattern. 4. Numele metodelor folosite la implementare raman la latitudinea voastra. 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. "My software never has bugs. It just develops random features." |