fork(1) download
  1. <?php
  2.  
  3. class Employee
  4. {
  5. public $rank;
  6. public $rate;
  7. public $isBoss;
  8. public $profession;
  9. public function __construct($rank, $rate, $isBoss, $profession)
  10. {
  11. $this->rank = $rank;
  12. $this->rate = $rate;
  13. $this->isBoss = $isBoss;
  14. $this->profession = $profession;
  15. }
  16.  
  17. public function GetSalary()
  18. {
  19. switch ($this->rank) {
  20. case 1:
  21. $salary=$this->rate;
  22. break;
  23. case 2:
  24. $salary=$this->rate*1.25;
  25. break;
  26. case 3:
  27. $salary=$this->rate*1.5;
  28. break;
  29. }
  30.  
  31.  
  32. $salary=($this->isBoss==1)? $salary*1.5 : $salary;
  33. return $salary;
  34. }
  35.  
  36. public function GetCoffe()
  37. {
  38. $coffe=($this->isBoss==1)? get_class($this)::COFFE*2 : get_class($this)::COFFE;
  39. return $coffe;
  40. }
  41.  
  42. public function GetPages()
  43. {
  44. $pages=($this->isBoss==1)? get_class($this)::PAGES*0 : get_class($this)::PAGES;
  45. return $pages;
  46. }
  47. }
  48.  
  49. class Manager extends Employee
  50. {
  51. const COFFE=20;
  52. const PAGES=200;
  53. }
  54.  
  55. class Marketer extends Employee
  56. {
  57. const COFFE=15;
  58. const PAGES=150;
  59. }
  60.  
  61. class Engineer extends Employee
  62. {
  63. const COFFE=5;
  64. const PAGES=50;
  65. }
  66.  
  67. class Analyst extends Employee
  68. {
  69. const COFFE=75;
  70. const PAGES=5;
  71. }
  72.  
  73. //////////////////////////////////////////////////////////////////////////////////////////////////
  74.  
  75.  
  76. abstract class AbstractDepartment
  77. {
  78. public $numberOfWorkers;
  79. public $rank;
  80. public $rate;
  81. public $isBoss;
  82. public $profession;
  83.  
  84. public function __construct($numberOfWorkers, $rank, $rate, $isBoss, $profession)
  85. {
  86. $this->numberOfWorkers = $numberOfWorkers;
  87.  
  88. switch ($profession) {
  89. case 'Менеджер':
  90. $empl=new Manager($rank, $rate, $isBoss, $profession);
  91. $this->rank = $empl->rank;
  92. $this->rate = $empl->rate;
  93. $this->isBoss = $empl->isBoss;
  94. $this->profession = $empl->profession;
  95. $this->obj = $empl; break;
  96. case 'Маркетолог':
  97. $empl=new Marketer($rank, $rate, $isBoss, $profession);
  98. $this->rank = $empl->rank;
  99. $this->rate = $empl->rate;
  100. $this->isBoss = $empl->isBoss;
  101. $this->profession = $empl->profession;
  102. $this->obj = $empl; break;
  103. case 'Инженер':
  104. $empl=new Engineer($rank, $rate, $isBoss, $profession);
  105. $this->rank = $empl->rank;
  106. $this->rate = $empl->rate;
  107. $this->isBoss = $empl->isBoss;
  108. $this->profession = $empl->profession;
  109. $this->obj = $empl; break;
  110. case 'Аналитик':
  111. $empl=new Analyst($rank, $rate, $isBoss, $profession);
  112. $this->rank = $empl->rank;
  113. $this->rate = $empl->rate;
  114. $this->isBoss = $empl->isBoss;
  115. $this->profession = $empl->profession;
  116. $this->obj = $empl; break;
  117.  
  118.  
  119. }
  120. }
  121.  
  122.  
  123. public function GetTotalWorkers($dep)
  124. {
  125. $totalWorkers=0;
  126. foreach ($dep as $depUnit) {
  127. $totalWorkers+=$depUnit->numberOfWorkers;
  128.  
  129. }
  130. return $totalWorkers;
  131. }
  132. public function GetTotalSalary($dep)
  133. {
  134. $totalSalary=0;
  135. foreach ($dep as $depUnit) {
  136.  
  137. $totalSalary+=($depUnit->obj->GetSalary()*$depUnit->numberOfWorkers);
  138.  
  139. }
  140. return $totalSalary;
  141. }
  142.  
  143. public function GetTotalCoffe($dep)
  144. {
  145. $totalCoffe=0;
  146. foreach ($dep as $depUnit) {
  147.  
  148. $totalCoffe+=($depUnit->obj->GetCoffe()*$depUnit->numberOfWorkers);
  149.  
  150. }
  151. return $totalCoffe;
  152. }
  153.  
  154. public function GetTotalPages($dep)
  155. {
  156. $totalPages=0;
  157. foreach ($dep as $depUnit) {
  158. $totalPages+=($depUnit->obj->GetPages()*$depUnit->numberOfWorkers);
  159.  
  160.  
  161. }
  162. return $totalPages;
  163. }
  164.  
  165. public function GetSalaryPerPage($dep)
  166. { $salaryPerPage=0;
  167. $salaryPerPage=round($this->GetTotalSalary($dep)/$this->GetTotalPages($dep),2);
  168.  
  169. return $salaryPerPage;}
  170.  
  171.  
  172. }
  173.  
  174.  
  175. class BuyDepartment extends AbstractDepartment
  176. {
  177. public $depName='Департамент закупок';
  178. }
  179.  
  180. class SalesDepartment extends AbstractDepartment
  181. {
  182. public $depName='Департамент продаж';
  183. }
  184.  
  185. class AdvDepartment extends AbstractDepartment
  186. {
  187. public $depName='Департамент рекламы';
  188. }
  189.  
  190. class LogDepartment extends AbstractDepartment
  191. {
  192. public $depName='Департамент логистики';
  193. }
Success #stdin #stdout 0.02s 23736KB
stdin
Standard input is empty
stdout
Standard output is empty