Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:polimorfism [2024/10/27 18:33]
valentin.carauleanu
poo-ca-cd:laboratoare:polimorfism [2024/10/27 18:45] (current)
valentin.carauleanu [Summary]
Line 184: Line 184:
  
 </​note>​ </​note>​
 +
 +** Task 1 [1p] **
 +
 +In clasa Employee adaugati 3 parametri `private`: name (String), salary (double)
 +si age (int). Adaugati constructor cu toti cei 3 parametri si getteri si setteri
 +pentru fiecare parametru.
 +
 +In fiecare clasa-copil (`Manager`, `Developer`) adaugati un constructor care sa apeleze
 +constructorul din clasa de baza (`super`).
 +
 +In toate cele 3 clase adaugati metoda `toString` astfel:
 +
 +- pentru `Employee` va afisa: Name: `name`, Salary: `salary`, Age: `age`
 +- pentru `Manager` va afisa: Name: `name`, Salary: `salary`, Age: `age`
 +[Position: Manager]
 +- pentru `Developer` va afisa: Name: `name`, Salary: `salary`, Age: `age`
 +[Position: Developer]
 +
 +** Task 2 [1p] **
 +
 +Implementati metoda `calculateBonus` in clasa `Employee` care va salariul * 0.05.
 +
 +Suprascrieti metoda in cele doua clase copil astfel:
 +- pentru `Manager` bonusul va fi salariul * 0.2
 +- pentru `Developer` bonusul va fi salariul * 0.15
 +
 +** Task 3 [1p] **
 +
 +Implementati metoda `validateEmployee` in clasa `Employee` care va verifica daca
 +salariul este mai mare decat 0 si varsta este intre 18. Metoda va returna ​
 +`Salary cannot be negative.` cand salariul este mai mic de 0 si `Employee age must
 +be 18 or older.` cand varsta este mai mica de 18.
 +
 +** Task 4 [2p] **
 +
 +Pentru clasele `Manager` si `Developer` adaugati un parametru `private`
 +care sa reprezinte numarul de angajati pe care il are fiecare manager, respectiv
 +numarul de proiecte pe care le are fiecare developer. Adaugati getteri si setteri
 +pentru acesti parametri. Adaugati un constructor care sa primeasca si acesti parametri
 +si sa apeleze constructorul din clasa de baza.
 +
 +In clasa `Employee` adaugati o metoda showDetails care sa afiseze mesajul
 +`Employee details: `.
 +
 +In clasele copil suprascrieti metoda astfel:
 +- pentru `Manager` va afisa: `Employee details: Manager of X employees.`
 +- pentru `Developer` va afisa: `Employee details: Developer with Y projects.`
 +
 +** Task 5 [2p] **
 +
 +Suprascrieti metoda `validateEmployee` in clasele copil astfel:
 +- pentru `Manager` va verifica daca numarul de angajati este mai mare decat 1. Daca nu
 +va afisa mesajul `Number of employees managed must be 1 or greater.`.
 +- pentru `Developer` va verifica daca numarul de proiecte este mai mare decat 1. Daca nu
 +va afisa mesajul `Number of projects must be 1 or greater.`.
 +
 +** Task 6 [2p] **
 +
 +Supraincarcati metoda `calculateBonus` in clasele copil astfel incat sa primeasca un
 +parametru de tip int care sa reprezinte bonusul per angajat/​proiect. Metoda va calcula
 +astfel: ​
 +- pentru `Manager` bonusul va fi salariul * 0.2 + bonus * numarul de angajati
 +- pentru `Developer` bonusul va fi salariul * 0.15 + bonus * numarul de proiecte
 +
 +** Task 7 [1p] **
 +
 +Adugati metoda compareSalary in clasa `Employee` care va primi un obiect de tip Employee.
 +Aceasta va returna un int astfel:
 +- 1 daca salariul obiectului curent este mai mare decat salariul obiectului
 +primit ca parametru
 +- 0 daca salariul obiectului curent este egal cu salariul obiectului primit ca
 +parametru
 +- -1 daca salariul obiectului curent este mai mic decat salariul obiectului
 +primit ca parametru
 +
 +Mesajul de afisare:
 +- 1 sau -1 -> "​Name"​ has a higher salary.
 +- 0 -> Both employees have the same salary.
 +
 +
 +** Example: **
 +
 +**Input:**
 +1
 +
 +**Expected Output**
 +Name: John, Salary: 5000.0, Age: 35 [Position: Manager]
 +
  
  
poo-ca-cd/laboratoare/polimorfism.1730046827.txt.gz · Last modified: 2024/10/27 18:33 by valentin.carauleanu
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