This shows you the differences between two versions of the page.
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] | ||
+ | |||