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 00:18]
raluca.birladeanu
poo-ca-cd:laboratoare:polimorfism [2024/10/27 18:45] (current)
valentin.carauleanu [Summary]
Line 1: Line 1:
 ===== Laboratorul 4: Polimorfism ===== ===== Laboratorul 4: Polimorfism =====
- 
-**Video introductiv:​** [[https://​www.youtube.com/​watch?​v=_mfLYYInv6c| link ]] 
  
 ==== Obiective ==== ==== Obiective ====
Line 180: Line 178:
  
 {{:​poo-ca-cd:​laboratoare:​lab7.png?​600|}} {{:​poo-ca-cd:​laboratoare:​lab7.png?​600|}}
 +
 +=== Exercitii ===
 +<note important>​
 +Pentru a încărca soluția, va trebui să accesați link-ul https://​code.devmind.ro/​login,​ să intrați pe tab-ul Contests, unde veți găsi laboratorul grupei voastre.
 +
 +</​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]
 +
 +
 +
 + 
  
 ==== Referințe ==== ==== Referințe ====
     - Kathy Sierra, Bert Bates. //SCJP Sun Certified Programmer for Java™ 6 - Study Guide//. Chapter 2 - Object Orientation ([[http://​firozstar.tripod.com/​_darksiderg.pdf|available online]]) - moștenire, polimorfism,​ overriding, overloading + exemple de întrebări     - Kathy Sierra, Bert Bates. //SCJP Sun Certified Programmer for Java™ 6 - Study Guide//. Chapter 2 - Object Orientation ([[http://​firozstar.tripod.com/​_darksiderg.pdf|available online]]) - moștenire, polimorfism,​ overriding, overloading + exemple de întrebări
-  - Vlissides, John, et al. //Design patterns: Elements of reusable object-oriented software//. Addison-Wesley (1995) ([[http://​index-of.co.uk/​Software-Engineering/​Design%20Patterns%20-%20Elements%20Of%20Reusable%20Object-Oriented%20Software%20-%20Addison%20Wesley.pdf|available online]]) 
- 
poo-ca-cd/laboratoare/polimorfism.1729977508.txt.gz · Last modified: 2024/10/27 00:18 by raluca.birladeanu
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