Introducere in Programare Orientata Obiect

Exercitii

  1. Sa se implementeze o clasa Punct care sa contina:
    • un constructor care sa primeasca cele doua numere reale (de tip float) ce reprezinta coordonatele.
    • o metoda changeCoords ce primeste doua numere reale si modifica cele doua coordonate ale punctului.
    • o functie de afisare a unui punct astfel: “(x, y)“.
  1. Sa se implementeze o clasa Poligon cu urmatoarele:
    • un constructor care preia ca parametru un singur numar (reprezentand numarul de colturi al poligonului) si aloca spatiu pentru puncte (un punct reprezentand o instanta a clasei Punct).
    • un constructor care preia ca parametru un vector, cu 6 numere reale reprezentand colturile unui triunghi. Acest constructor apeleaza constructorul de la punctul de mai sus si completeaza vectorul de puncte cu cele 3 instante ale clasei Punct obtinute din parametrii primiti.

La final, afisati coordonatele triunghiului utilizand metoda de afisare a clasei Punct.

  1. Sa se implementeze o clasa PasswordMaker ce genereaza o parola pornind de la datele unei persoane. Aceasta clasa o sa contina urmatoarele:
    • o constanta MAGIC_NUMBER avand orice valoare doriti
    • un constructor care primeste: un String numit firstName, un String numit lastName si un int numit age
    • o metoda getPassword() care va returna parola

Parola se construieste concatenand urmatoarele siruri: sirul format din ultimele (age % 3) litere din firstName, un sir random de lungime MAGIC_NUMBER (folositi RandomStringGenerator si ce alfabet doriti) si sirul format prin conversia la String a numarului (age + lungimea lui lastName).
Pentru subsiruri consultati documentatia clasei String.

  1. Implementati o clasa care va fi instantiata o singura data, la prima utilizare. Instanta clasei este statica si va fi folosita de toate celalte clase.
  1. Definiti o clasa care sa implementeze operatii pe numere intregi care vor arunca exceptii.

Scrieti clasa Calculator, ce contine urmatoarele metode:

  • add: primeste doi intregi si intoarce un intreg
  • divide: primeste doi intregi si intoarce un intreg
  • average: primeste o colectie ce contine obiecte Integer, si intoarce media acestora. Pentru calculul mediei, sunt folosite operatiile add si divide.

Definiti urmatoarele exceptii si imbogatiti corespunzator definitia metodei add:

  • OverflowException: este aruncata daca suma celor doua numere depaseste Integer.MAX_VALUE
  • UnderflowException: este aruncata daca suma celor doua numere este mai mica decat Integer.MIN_VALUE
  1. Creati o clasa ce contine o variabila read-only si accesati acea variabila dintr-o clasa Test.
  2. Aveti nevoie de un sistem de gestionare de fisiere pentru un proiect. Fisierele pot fi de trei tipuri: sursa, binare si makefile.Fiecare fisier e caracterizat prin nume, data crearii, data accesarii si dimensiune. Fisierele sursa si makefile pot fi create,editate si sterse. Fisierele binare pot fi create, rulate si sterse. Creati acest sistem care permite toate operatiile precizate (rularea unui fisier va afisa un mesaj in consola si va modifica data acesarii acestuia, editarea unui fisier va afisa un mesaj in consola, va modifica dimensiunea fisierului si va modifica data acesarii acestuia).

Un fisier poate fi editat sau rulat doar daca a fost creat in prealabil, in caz contrar se va arunca o exceptie. Acelasi lucru se va intampla la stergerea unui fisier care nu exista.

Testati corectitudinea sistemului cu ajutorul unei clase de test.

  1. Imbogatiti clasa MyArrayList cu un mecanism de notificare pentru operatiile de adaugare si stergere din lista. Lista va dobandi rolul de observat (observed), si vom defini entitati suplimentare, cu rolul de observator (observer). Observatorii se vor inregistra la lista, iar aceasta din urma, la infaptuirea unei operatii de adaugare sau stergere, va semnaliza tuturor observatorilor inregistrati aparitia evenimentului corespunzator. Un astfel de eveniment va contine mai multe informatii.

Definiti interfata ListObserver ce desemneaza un observator pe o lista, cu metodele:

  • elementAdded(ListEvent e): apelata pe un observator cand un element este adaugat in lista observata de acesta
  • elementRemoved(ListEvent e): apelata pe un observator cand un element este inlaturat din lista observata de acesta

Definiti interfata Observed ce desemneaza o entitate observata, cu metoda:

  • registerObserver(ListObserver o): apelata pe un obiect observat cand se doreste inregistrarea unui observator de lista

Definiti interfata ListEvent, cu metodele:

  • getList(): intoarce lista observata, care a generat evenimentul de adaugare sau stergere
  • getElement(): intoarce elementul implicat in eveniment
  • getDuration(): intoarce durata evenimentului, in nanoscunde (vezi System.nanoTime()).

Modificati clasa MyArrayList, astfel incat sa implementeze interfata Observed, si sa-si asume rolul de lista observata. Acest lucru presupune doua etape:

  • expunerea mecanismului de inregistrare de noi observatori
  • generarea de evenimente la adaugare si stergere. Folositi clase anonime.

Instantiati clasa MyArrayList, si inregistrati doi observatori:

  • Primul va afisa pe ecran informatiile obtinute din eveniment.
  • Al doilea va popula o a doua instanta MyArrayList cu elementele pentru care durata evenimentului de eliminare depaseste un anumit prag, exprimat in milisecunde. Gasiti o modalitate de a accesa lista din exteriorul clasei observator.
programare_android15/curs/poo.txt · Ultima modificare: 2015/08/04 14:50 de către ioana.culic
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0