= Playground =

Exerciţii Clase abstracte și interfețe NEW
  1. (4p) Compleţati scheletul de cod adaugand o serie de clase dupa cum urmeaza:
    1. O clasa (Boat.java) care implementeaza interfata (IVehicle.java)
      • getSize() returneaza valoarea constanta 4
      • getVehicleType() returneaza String-ul constant “Boat”
    2. Clasele (Motorcycle.java) si (Car.java) care extinde clasa AbstractRoadVehicle
      • getSize() care returneaza valorile constante 1 (Motorcycle) si respectiv 2 (Car)
      • getVehicleType() care returneaza String-ul constant “Motorcycle” si respectiv “Car”
    3. O clasa (Truck.java) care implementeaza clasa AbstractRoadVehicle
      • getSize() returneaza o valoare truckSize primita ca parametru la construirea obiectului
      • getVehicleType() returneaza String-ul constant “Truck”
      • Restrictie: nu permiteti modificarea field-ul truckSize dupa crearea obiectului
  2. (4p) Pentru a putea transporta vehicule de tipul (AbstractRoadVehicle) pe apa, implementati doua clase SmallFerry si BigFerry. Avand in vedere functionalitatile comune pe care cele doua clase le impartasesc, creati clasa AbstractFerry care implementeaza interfata IFerry
    1. Clasa SmallFerry
      • va functiona dupa principiul LIFO primul vehicul care iese fiind ultimul care a intrat in feribot
      • va avea o capacitate fixa SMALL_FERRY_SIZE = 50
      • Restricite: orice obiect de tip BigFerry va fi creat cu capacitatea 50
    2. Clasa BigFerry
      • va functiona dupa principiul FIFO primul vehicul care iese fiind primul care a intrat in feribot
      • va avea o capacitate fixa BIG_FERRY_SIZE = 200
      • Restricite: orice obiect de tip BigFerry va fi creat cu capacitatea 200
    3. Clasa AbstractFery
      • implementeaza metodele pe care cele doua clase derivate le pot folosi la comun
      • contine un field capacity initializat la construirea obiectului, care reprezinta capacitatea de stocare a obiectelor de tip AbstractRoadVehicle (Car, Motorcycle sau Truck). Capacitatea se raporteaza la dimensiunea vehiculelor, astfel incat o masina ocupa 2 unitati din capacitatea totala. Impiedicati modificarea ulterioara a acestui field.
      • implementeaza metoda getRemainingCapacity care returneaza diferenta dintre capacitatea feribotului si ocuparea curenta
      • implementeaza un mecanism prin care se impiedica adaugarea de vehicule noi, daca acest lucru duce la depasirea capacitatii
    • Hint: Cele doua strategii de implementare (FIFO si LIFO) difera doar prin modul in care extrag elementele (pop()). Restul functionalitatilor se executa in acelasi fel
    • Hint: Pentru a stoca si gestiona cu usurinta elementele de tip AbstractCar folositi clasa ArrayDeque(double ended queue). Iata un exemplu de iniţializare:
    • ArrayDeque<String> list = new ArrayDeque<String>();
  3. (2p) Creati o clasa FerryFactory care implementeza metoda IFactory
    • metoda createFerry primeste ca parametru unul dintre cele doua tipuri de feribot, sub forma enum-ului FerryType (SMALL sau BIG) si in consecinta creaza si returneaza un obiect de tipul SmallFerry sau BigFerry
Resurse
poo-ca-cd/playground/playground.txt · Last modified: 2020/07/28 23:08 (external edit)
CC Attribution-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