Documente Academic
Documente Profesional
Documente Cultură
Aplicatia pe care am creat-o este dedicata gestiunii unei sali de fitness avand denumirea Fitness AGC.
Pentru exemplificare , aplicatia va contine 3 locatii(Aviatiei, Titan, Militari), 5 instructori, 5 tipuri de activitati(Spinning, Kangoo Jumps, Bag Boxing, Body Combat
si Aqua), 4 tipuri de abonamente standard (Weekday, Weekend, Monthly,Annually) precum si posibilitatea de personalizare a acestora.
Astfel, cu ajutorul aplicatiei, administratorul va putea gestiona instructorii, clientii, clasele sustinute precum si abonamentele prin:
actualizari de date pentru clienti(numarul de telefon mobil), instructori(Id-ul acestora), abonamente(data de inregistrare a abonamentului), clase(numarul de
locuri disponibile intr-o clasa, durata unei clase).
cautarea dupa codul unic alocat a unui client, instructor sau clasa.
verificarea dupa o valoare data a instructorilor(avand pretul/ora mai mic decat val.data), a abonamentelor (cu pretul mai mic decat val. data), a claselor
(dupa numarul de clienti permisi, dupa o anumita zi din saptamana sau dupa locatie si activitatea sustinuta).
filtrarea listelor ce au in vedere: clientii(vizualizarea tuturor abonamentelor achizitionate de un client), instructorii(vizualizarea tuturor claselor sustinute de un
instructor intr-o anumita locatie, sau vizualizarea tuturor claselor sustinute de acesta in toate locatiile Fitness AGC), abonamentele (vizualizarea abonamentelor
cuprinse intre doua preturi date, vizualizarea abonamentelor dupa tipul abonamentului, sau vizualizarea abonamentelor ce nu au inceput inca), clasele
(vizualizarea claselor dintr-o anumita locatie sau cu o numita activitate sustinuta precum si vizualizarea claselor cu un numar mai mare de clienti decat val.data).
extragerea datelor din listele de: abonamente (vizualizarea unei liste de abonamente in functie de client) si clase(vizualizarea locatiilor cu cele mai multe clase
sustinute, vizualizarea unei liste de clase in functie de locatia salii, precum si vizualizarea numarului de clase sustinute de un anumit instructor.)
ClientManager clientManager = new ClientManager(); In main vom crea un nou obiect de tipul ClientManager,
iar pentru acesta vom folosi operatorul de
System.out.println("updateClientMobile method below: "+ "\n");
dereferentierea pentru a apela metoda
clientManager.updateClientMobile(clientList,"0755125325",5); updateClientMobile unde folosim ca parametri lista de
clienti, noul numarul de telefon frunizat de client si id-ul
System.out.println(clientList + "\n");
acestuia.”
Exemplificarea unor metode utilizate in proiect: 4
metoda filterListOfGymClassByTrainer – vizualizarea listei de clase sustinute de un
anumit instructor
Metoda creata in clasa TrainerManager:
Metoda filterListOfGymClassByTrainer este o
public List<GymClass> filterListOfGymClassByTrainer(List<GymClass> gymClassList, int givenTrainerID) { metoda publica de tipul List (va avea un rezultat
List<GymClass> resultListOfGymClassByTrainer = new ArrayList<>(); returnat de tipul List). Parametrii metodei sunt: lista
de clase de tipul List de obiecte GymClass, si id-ul
for (GymClass gymClass : gymClassList) { instructorului pentru care executam filtrarea, de
tipul integer. Aceasta metoda va cauta atributul
if (gymClass.getTrainerID() == givenTrainerID) {
id-ul instructorului dat in obiectele din lista de
resultListOfGymClassByTrainer.add(gymClass); GymClass si va adauga clasele rezultate intr-o lista
de clase sustinute de instructorul cu ID-ul cautat.
}
} “Am creat o noua lista de obiecte GymClass care
va fi lista rezultat returnata de metoda. Astfel, am
return resultListOfGymClassByTrainer; parcurs lista de gymclass si, daca atributul id-ul
trainer-ului din instanta este egal cu id-ul
}
trainerului dat, atunci instanta gymClass gasita va fi
adaugata in lista rezultat.
Apelarea metodei in main:
In main vom crea un nou obiect de tipul
TrainerManager trainerManager1 = new TrainerManager(); TrainerManager, iar pentru acesta vom folosi
operatorul de dereferentiere pentru a apela
List<GymClass> result2 = trainerManager1.filterListOfGymClassByTrainer(gymClassList, 1); metoda filterListOfGymClassByTrainer unde folosim
ca parametri lista de gymClass, si id-ul
System.out.println("filterListOfGymClassByTrainer method below: " + "\n" + result2+ "\n"); instructorului.”
Exemplificarea unor metode utilizate in proiect:
5
metoda searchMembershipCheaperThanGivenValue – verificarea
existentei unui abonament cu o valoarea mai mica decat cea
cautata.
Metoda creata in clasa MembershipManager:
Metoda searchMembershipCheaperThanGivenValue
public boolean searchMembershipCheaperThanGivenValue(List<Membership> membershipList,
double givenMembershipValue){ este o metoda publica de tipul boolean (va avea un
rezultat returnat de tipul true sau false). Parametrii
boolean foundedMembership = false; metodei sunt: lista de abonamente de tipul List de
obiecte Membership, si valoarea cautata, de tipul
for(Membership membership:membershipList){
double. Aceasta metoda va compara valoarea data
if(membership.getPrice() < givenMembershipValue){ cu preturile din obiectele din lista de Membership si va
returna rezultatul sub forma booleana de true sau false.
foundedMembership = true;
} “Am creat un rezultat de tip boolean initializat cu
valoarea false. Apoi am parcurs lista de abonamente
} si, daca atributul price din instanta este mai mica
decat valoarea cautata, atunci rezultatul boolean
return foundedMembership;
initializat mai devreme va primi valoarea true, iar
} metoda va returna acest rezultat.
System.out.println(resultBooleanSearch4 + "\n");
Exemplificarea unor metode utilizate in proiect: 6
metoda addGymClassToListOfGymClass – adaugarea unei noi clase
in lista de clase sustinute
Membership data
<<class>> private String code;
Client private String description; <<class>>
private int id; private double price; Trainer <<class>> <<class>>
private String cnp; private Date registrationDate; private int id; <<class>>
private String firstName; private Date startDate; private String name; DataCreator DataReader GenerateOutputFile
private String lastName; private MembershipType private String email; readListOfClients
membershipType; createListOfClients Email confirmation sent to client
private String mobile; private String mobile; createListOfTrainers readListOfGymClasses
private String address; private int clientID; readListOfTrainer after purchasing a membership
private double pricePerHour; createListOfMembership
private List<GymClass> gymClassList;
@Override @Override
hashCode(),equals(),toString() @Override hashCode(),equals(),toString()
hashCode(),equals(),toString()
Structura proiectului consta in 4 pachete (model, data, manager, main) prezentate mai jos.
❑ Clasele:
1. Client - avand atributele: private int id; private String cnp; private String firstName; private String lastName; private String mobile;
private String address; constructorul Client si metodele @Override: hashCode, equals, respectiv toString;
2. Trainer – avand atributele: private int id; private String name; private String email; private String mobile; private double pricePerHour;
constructorul Trainer si metodele @Override: hashCode, equals, respectiv toString;
3. Membership (supraclasa pentru CustomizedMembership) – avand atributele: private String code; private String description; private
double price; private Date registrationDate; private Date startDate; private MembershipType membershipType; private int clientID; private
List<GymClass> gymClassList; constructorul Membership si metodele @Override: hashCode, equals, respectiv toString;
4. CustomizedMembership(subclasa pentru clasa Membership, implementeaza interfata Discountable); - avand 3 atribute in plus fata
de clasa mostenita: private Trainer trainer; private int noOfPrivateHours; private GymLocation location; constructorul CustomizedMembership
si metodele @Override getPrice() si applyDiscount();
5. GymClass – avand atirbutele: private String code; private Activity activity; private int noOfClients; private TrainingLevel trainingLevel;
private int classDuration; private GymLocation location; private String classDescription; private double trainingClassTime; private
DayOfWeek dayOfWeek; private int trainerID; constructorul GymClass si metodele @Override: hashCode, equals, respectiv toString;
❑ Clasele Enum
1. Activity – reprezinta activitatile specifice claselor, avand constantele: SPINNING, KANGOO_JUMPS , BAG_BOXING, BODY_COMBAT, AQUA;
2. GymLocation – reprezinta locatiile unde sunt sustinute clasele, avand constantele: AVIATIEI, MILITARI, TITAN;
3. DayOfWeek – reprezinta zilele cu acces in sala, avand constantele: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FIRDAY, SATURDAY, SUNDAY;
4. TrainingLevel – reprezinta nivelul de antrenament specific clasei, avand constantele: BEGGINNER, INTERMEDIATE, ADVANCED;
5. MembershipType – reprezinta tipul de abonament oferit, avand constantele: WEEKDAY, WEEKEND, MONTHLY, ANNUALLY;
Pachetul data contine clasele folosite pentru lucrul cu fisiere (precum excel, word, etc.).
- searchTrainerByCheaperPricePerHourThanGivenValue() – Verificarea existentei instructorilor ce solicita pretul mai mic pe ora decat o valoare
specificata.
- filterListOfGymClassOfGivenTrainerByLocation() - Filtrarea unei listei de clase disponibile sustinute de un anumit instructor intr-o locatie specificata.
- filterListOfGymClassByTrainer() - Filtrarea unei listei de clase disponibile sustinute de un anumit instructor indiferent de locatie.
11
Pachetul manager
Clasele ClientManager, MembershipManager
❑ ClientManager – contine metodele:
- filterListOfMembershipByClient() - Vizualizarea unei liste de abonamente achizitionate de un anumit client (in functie de ID-ul alocat acestuia).
- searchMembershipCheaperThanGivenValue() – Verificarea existentei abonamentelor cu o valoare mai mica decat o valoarea specificata.
- filterListOfMembershipsBetweenGivenValues()- Filtrarea unei liste de abonamente cu valori cuprinse intre doua valori specificate(min –max).
- filterListOfMembershipWithFutureStartDate() - Filtrarea unei liste de abonamente cu data de incepere din viitor (lista de abonamente care nu au
inceput inca).
- searchGymClassWithGivenNoOfClientsPermitted() –Verificarea existentei claselor sustinute in toate locatiile, cu un anumit numar de clienti permis.
- searchGymClassByLocationAndActivity() - Filtrarea unei liste de clase sustinute intr-o anumita locatie in functie de tipul de activitate desfasurata.
- filterListOfGymClassByActivity() - Filtrarea unei liste de clase sustinute in functie de tipul de activitate desfasurata.
- filterListOfGymClassWithNoOfClientsBiggerThanGivenValue() - Vizualizarea unei liste de clase cu un numar de clienti mai mare decat val. specificata.
- removeGymClassFromListOfGymClass() -Inlaturarea unei clase din lista de c;ase sustinute indiferent de locatie.
13
Pachetul main. Clasa Main
Pachetul main contine clasa Main care reprezinta clasa in care am verificat
functionalitatea metodelor. Mai exact, aici este locul unde se citesc de la tastatura
valorile constructorilor pentru care vrem sa testam prin apelare metodele avute in
clasele TrainerManager, ClientManager, MembershipManager and
GymClassManager.