Užduotis 1

Sukurkite įmonės darbuotojų ir algų mokėjimams skirtai sistemai klases:

Staff - personalo valdymui skirta klasė ji turi turėti:

StaffMember[] staffList - atributas saugantis darbuotojus (naudokite masyvą)
void addStaffMember(StaffMember staff) - prideda prie įmonės darbuotojų sąrašo darbuotoją
double payDay() - metodas išvedantis kiek ir kam sumokama, bei grąžinantis bendrą pinigų kiekį sumokėtą darbuotojams


StaffMember - klasė darbuotojams saugoti

protected String name - darbuotojo vardas
protected String surname - darbuotojo pavardė
protected String phone - darbuotojo telefono nr.

Konstruktorius turi būti su trimis atributais: name, surname, phone
public String toString metodas turi gražinti darbuotojo duomenis (Name: vardas, Surname: pavardė ....)
public double pay() - turi būti metodas, kuris grazins 0 (pagal nutylejima)


Toliau realizuokite skirtingus darbuotojų tipus:

  • Trainee (praktikantas),
  • Employee (darbuotojas),
  • Executive (vadovas),
  • Hourly(valandininkas).

Visos šios klasės turi paveldėti klasę StaffMember ir realizuoti metodą pay();

Praktikantas turi turėti tokį pat konstruktorių kaip ir tėvinė klasė (su keturiais parametrais), jo metodas pay() turi gražinti 0 (kadangi jam nemokamas atlyginimas)

Darbuotojas turi turėti du papildomus atributus: socDraudimoNr ir mėnesinį atlyginimą, pay() metodas turi gražinti mėnesinį atlyginimą. Jo konstruktorius turi turėti du papildomus parametrus socDraudimoNr ir mėnesinį atlyginimą

Vadovas turi paveldėti klasę Darbuotojas (Employee), be papildomų laukų kuriuos turi darbuotojas jis taip pat turi turėti atributą double bonus kuris pradžioje būtų lygus 0. Konstruktorius turėtų sutapti su darbuotojo konstruktoriumi, tačiau jis turi turėti dar vieną papildomą metodą awardBonus(double bonus) kuris padidintų bonus dydį tokiu skaičiu koks paduotas kaip parametras. Pay metodas turi gražinti atlyginimą + bonus, įvykdžius pay metodą bonus turi būti lygus 0.

Valandininkas (Hourly) turėtų paveldėti darbuotoją, tačiau turėti papildomą atributą int hoursWorked - kiek valandų dirbo. Taip pat metodą addHours(int hours) - kuris padidintų valandų skaičių. Atlyginimas skaičiuotūsi taip: rate * hours (kiek valandų dirbo), po paskaičiavimo hours turi būti nunumlinama.

Testavimui Sukurkite klasės Staff objektą ir į jį pridėti darbuotojus:
2 paprastus darbuotojus,
1 savanorį,
1 vadovą,
2 valandininkus,
padarykite jog vadovas gavo premiją 150 EUR
pirmasis valandininkas dirbo 10 valandų antrasis 20 valandų
Išveskite kiek šį mėnesį reikės mokėti darbuotojams

Padarykite metodą kuris suskaičiuotų kiek iš viso buvo skirta darbo užmokesčiui, bei pateiktų sąrašą kam ir kiek sumokėta.