no message
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
/*
|
||||
MODEL
|
||||
// kalkulačka
|
||||
// 4 základní operace
|
||||
//tj. sčítání, odčítání, násobení a dělení
|
||||
|
||||
//trida CalculatorManager (class)
|
||||
//1. pouziva php trait Nette/SmartObject ()
|
||||
//TRAITS: mechanism for code reuse in single inheritance
|
||||
//intended to reduce some limitations of single inheritance
|
||||
//by enabling a developer to reuse sets of methods freely in
|
||||
//several independent classes living in different class hierarchies
|
||||
//*similar to a class,but only intended to group functionality in a fine-grained and consistent way
|
||||
//e.g:
|
||||
/*
|
||||
trait ezcReflectionReturnInfo {
|
||||
function getReturnType() { }
|
||||
function getReturnDescription() { }
|
||||
}
|
||||
class ezcReflectionMethod extends ReflectionMethod {
|
||||
use ezcReflectionReturnInfo;
|
||||
}
|
||||
//2. definuje 4 operace: sčítání, odčítání, násobení a dělení
|
||||
|
||||
*/
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
use Nette\SmartObject;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Model operací kalkulačky.
|
||||
* @package App\Model
|
||||
*/
|
||||
class CalculatorManager{
|
||||
|
||||
use SmartObject;
|
||||
|
||||
/** Definice konstant pro operace. */
|
||||
const
|
||||
ADD = 1,
|
||||
SUBTRACT = 2,
|
||||
MULTIPLY = 3,
|
||||
DIVIDE = 4;
|
||||
|
||||
/**
|
||||
* Getter pro existující operace.
|
||||
* @return array asociativní pole konstant pro operace a jejich slovního pojmenování
|
||||
*/
|
||||
public function getOperations(){
|
||||
return array(
|
||||
self::ADD => 'Sčítání',
|
||||
self::SUBTRACT => 'Odčítání',
|
||||
self::MULTIPLY => 'Násobení',
|
||||
self::DIVIDE => 'Dělení'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Zavolá zadanou operaci a vrátí její výsledek.
|
||||
* @param int $operation zadaná operace
|
||||
* @param int $x první číslo pro operaci
|
||||
* @param int $y druhé číslo pro operaci
|
||||
* @return int|null výsledek operace nebo null, pokud zadaná operace neexistuje
|
||||
*/
|
||||
public function calculate($operation, $x, $y){
|
||||
switch ($operation) {
|
||||
case self::ADD:
|
||||
return $this->add($x, $y);
|
||||
case self::SUBTRACT:
|
||||
return $this->subtract($x, $y);
|
||||
case self::MULTIPLY:
|
||||
return $this->multiply($x, $y);
|
||||
case self::DIVIDE:
|
||||
return $this->divide($x, $y);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sečte daná čísla a vrátí výsledek.
|
||||
* @param int $x první číslo
|
||||
* @param int $y druhé číslo
|
||||
* @return int výsledek po sčítání
|
||||
*/
|
||||
public function add($x, $y){
|
||||
return $x + $y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Odečte druhé číslo od prvního a vrátí výsledek.
|
||||
* @param int $x první číslo
|
||||
* @param int $y druhé číslo
|
||||
* @return int výsledek po odčítání
|
||||
*/
|
||||
public function subtract($x, $y)
|
||||
{
|
||||
return $x - $y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vynásobí daná čísla a vrátí výsledek.
|
||||
* @param int $x první číslo
|
||||
* @param int $y druhé číslo
|
||||
* @return int výsledek po násobení
|
||||
*/
|
||||
public function multiply($x, $y)
|
||||
{
|
||||
return $x * $y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vydělí první číslo druhým bezezbytku a vrátí výsledek.
|
||||
* @param int $x první číslo
|
||||
* @param int $y druhé číslo; nesmí být 0
|
||||
* @return int výsledek po dělení bezezbytku
|
||||
*/
|
||||
public function divide($x, $y)
|
||||
{
|
||||
return round($x / $y);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user