PROBLEMA:
dovrei realizzare una classe TriengoloDiAsterischi che estende la classe RettangoloDiAsterischi in modo da produrre un triangolo rettangolo (di varie misure) con cateti orizzontale e verticale.
Esempio di triangolo
base 5 altezza 3 ---> (3X5):
*
***
*****
base 4 altezza 12
*
*
*
**
**
**
***
***
***
****
****
****
Codice PHP:
/**
* Class di visualizzazione rectangolo di asterischi
*/
class RettangoloDiAsterischi {
/**
*
* @var Integer $base = asterischi orrizzontale di n numero,
* $height = asterischi verticale di n numero;
*/
private $base, $height;
/**
* costruttore
* iniazializza height e base con default
*/
function __construct() {
$this-> height = 5;
$this->base = new LineaDiAsterischi();
$this-> base->setNum(5);
}
/**
*setta l'attributo base
* @param Integer $num = numero da settare all'attributo base
*/
function Setbase($num) {
$this->base-> setNum($num);
}
function getbase(){
return $this->base->getnum();
}
/**
*setta l'attributo height
* @param Integer $val = numero da settare all'attributo height
*/
function Setheight($val) {
$this ->height = $val;
}
function getheight(){
return $this->height;
}
/**
* stampa l'output
*/
function visualizza() {
$h=$this->height;
for(;$h!=0; $h--) {
$this->base-> scriviBr();
}
}
}
/**
* Classe di visualizzazione di linee di asterischi
*/
class LineaDiAsterischi {
/**
*
* @var Integer $num il numero di asterischi da visualizzare
*/
private $num;
/**
* costruttore dell'oggetto
* inizializza num con defult
*
*/
function __construct() {
$this->setNum(10);
}
/**
* setta l'attributo $num
* @param Integer $val numero di asterischi da settare all'attributo $num
*/
function setNum($val) {
$this->num=$val;
}
/**
* Visualizza una linea di asterischi con lunghezza variabile determinata dall'attributo della classe
*
*/
function scrivi() {
for($i=0;$i<$this->num;$i++) {
echo "*";
}
}
/**
* Visualizza line di asterischi (vedi metodo scrivi) seguita da
*/
function scriviBr() {
$this->scrivi();
echo "
";
}
function setnum($y){
$this->num=$y;
}
function getnum(){
return $this->num;
}
}
class TriengoloDiAsterischi extends RettangoloDiAsterischi {
private $x;
function triangolo() {
$this ->x=$this->base->getnum();
for ($i = $x; $i >= 1; $i--) {
for ($j = $x - $i + 1; $j <= $x; $j++) {
$this->base-> scriviBr();
}
echo("
");
}
}
}
$a = new RettangoloDiAsterischi();
$a ->Setbase(3);
$a -> Setheight(5);
$a-> visualizza();
mi sono fermato su questa e non so più come andar avanti... qualcuno mi saprebbe aiutare?..
aggiungo anche.. come Rappresentazione con UML del diagramma delle classi LineaDiAsterischi, RettangoloDiAsterischi, TriangoloDiAsterischi.. avete un'idea?
scusate...