b = abs($base); if ($alcada == 0) $this->h = $this->b; else $this->h = abs($alcada); self::$qRectanglesCreats++; self::$qRectanglesQueden++; } /** * Retorna la base del Rectangle * * @return int */ public function getBase() { return $this->b; } /** * Retorna l'alçada del Rectangle * * @return int */ public function getAlcada() { return $this->h; } /** * Permet assignar la base del Rectangle * * @parameter int $base la base del rectangle * * @return void */ public function setBase($base) { $this->b = abs($base); } /** * Permet assignar l'alçada del Rectangle * * @parameter int $alcada l'alçada del rectangle * * @return void */ public function setAlcada($alcada) { $this->h = abs($alcada); } /** * Permet assignar la base i l'alçada del Rectangle a la vegada * * @parameter int $base la base del rectangle * * @parameter int $alcada l'alçada del rectangle. Si no la passem assigna el mateix que la base * * @return void */ public function setTamany($base, $alcada=0) { $this->b = abs($base); if ($alcada == 0) $this->h = $b; else $this->h = abs($alcada); } /** * Retorna el perímetre del Rectangle * * @return int */ public function getPerimetre() { return (2 * ($this->b + $this->h)); } /** * Retorna l'àrea del Rectangle * * @return int */ public function getArea() { return ($this->b * $this->h); } /** * Retorna el nombre de rectangles que tenim creats i no eliminats * * @return int */ public static function getQuantsRectanglesQueden() { return self::$qRectanglesQueden; } /** * Retorna el nombre de rectangles s'han creat des de l'inici * * @return int */ public static function getQuantsRectanglesCreats() { return self::$qRectanglesCreats; } /** * Retorna un string per a mostrar per pantalla en texte o html amb les dades del rectangle * * @parameter bool $html valor booleà que indica si volem les dades en format texte (cert) o html (fals). * En cas de no passar el paràmetre, s'entén que és false. * * @return string */ public function mostraDades($html=false) { if ($html) $return = "
\n"; else $return = "\n"; echo "*** " . get_class($this) . $return; echo "************************************************" . $return; echo "Base : " . $this->getBase() . $return; echo "Alcada : " . $this->getAlcada() . $return; echo "Perimetre : " . $this->getPerimetre() . $return; echo "Area : " . $this->getArea() . $return; echo "************************************************" . $return; } /* * Funció que s'executa al eliminar o deixar de tenir assignat un Rectangle. * Mostra un missatge dien que s'ha mort. * * @return void */ public function __destruct() { echo "M'he mort " . get_class($this) . " --> " . $this->getBase() . " x " . $this->getAlcada() . "\tQuedem " . --self::$qRectanglesQueden . "\n"; } } /** * Aquesta classe representa un punt (x,y) d'un color determinat */ Class Dibuixable { /** @var int Representa el valor x de l'eix de coordenades */ public $x; /** @var int Representa el valor y de l'eix de coordenades */ public $y; /** @var int Representa el color del punt. */ public $color; /** * * Inicialitza el rectangle a partir d'una base i alçada. * En cas de no passar alçada aquesta serà la mateixa que la base * En cas de no passar la base aquesta serà 10 * * @parameter int $base representa la base. En cas de no posar-hi valor serà 10 * * @parameter int $alcada representa l'alçada. En cas de no posar-hi valor serà el mateix que la base * * @return Dibuixable */ public function __construct($posX = 0, $posY = 0, $quinColor = 0) { $this->x = $posX; $this->y = $posY; $this->color = $quinColor; } /** * Assignem color * * @return void */ public function setColor($quinColor) { $this->color = $quinColor; } /** * Retorna les dades del Dibuixable en format string. * * @param bool $html Indica si volem el retorn en format **html** o **txt** * * Quan el valor és true, el resultat serà en *html* * * Quan el valor és false, el resultat serà en *txt* * * @return string */ public function mostraDades($html=false) { if ($html) $return = "
\n"; else $return = "\n"; echo "*** " . get_class($this) . $return; echo "************************************************" . $return; echo "(x, y): (" . $this->x . ", " . $this->y . ")" . $return; echo "Color : #" . substr("000000".dechex($this->color), -6) . $return; echo "************************************************" . $return; } } echo "Total de rectangles creats: " . Rectangle::getQuantsRectanglesCreats() . "\n"; echo "Total de rectangles creats: " . Rectangle::getQuantsRectanglesQueden() . "\n"; $r = new Rectangle(4,3); $r->mostraDades(); $d = new Dibuixable(3,5,255); $d->mostraDades(); $d->setColor(0x00ff00); $d->mostraDades(); echo "Total de rectangles creats: " . Rectangle::getQuantsRectanglesCreats() . "\n"; for($i = 1; $i < 10; $i++) $s[] = new Rectangle($i,$i*2); echo "Total de rectangles creats: " . $s[0]::getQuantsRectanglesCreats() . "\n"; $s = null; echo "Total de rectangles queden: " . Rectangle::getQuantsRectanglesQueden() . "\n"; echo "Total de rectangles creats: " . Rectangle::getQuantsRectanglesCreats() . "\n"; $r1 = new Rectangle(); $r2 = new Rectangle(); $r3 = new Rectangle(2,3); echo "r1 == r2 : " . (($r1 == $r2)?"SI":"NO") . "\n"; echo "r1 === r2 : " . (($r1 === $r2)?"SI":"NO") . "\n"; echo "r1 == r3 : " . (($r1 == $r3)?"SI":"NO") . "\n"; echo "r1 === r3 : " . (($r1 == $r3)?"SI":"NO") . "\n"; $r1 = $r3; echo "Agignem r1 = r3 \n"; echo "r1 == r3 : " . (($r1 == $r3)?"SI":"NO") . "\n"; echo "r1 === r3 : " . (($r1 == $r3)?"SI":"NO") . "\n"; ?>