arv1=$a1;
$this->arv2=$a2;
$this->eesliide=$eesliide;
$this->tehe="+";
$this->loeSaabuvadAndmed();
}
function kysiTulemus(){
return $this->arv1+$this->arv2;
}
function kysiHTML(){
return " $this->tehe
".$this->kysiTulemus()." ";
}
function loeSaabuvadAndmed(){
if(isset($_REQUEST[$this->eesliide."_a1txt"])){
$this->arv1=intval($_REQUEST[$this->eesliide."_a1txt"]);
$this->arv2=intval($_REQUEST[$this->eesliide."_a2txt"]);
}
}
}
class Korrutaja extends Arvutaja{
function __construct($a1, $a2, $eesliide){
Arvutaja::__construct($a1, $a2, $eesliide);
$this->tehe="x";
}
function kysiTulemus(){
return $this->arv1*$this->arv2;
}
}
class PealkirjagaKuvaja implements Kuvatav{
protected $kuvatav, $pealkiri;
function __construct(Kuvatav $k, $p){
$this->kuvatav=$k;
$this->pealkiri=$p;
}
function kysiHTML(){
return "
$this->pealkiri
".
$this->kuvatav->kysiHTML()." ";
}
}
/*
Looge klass TabelisKuvaja, millel määratakse ette tabeli veergude arv.
Klassi põhjal loodud objektile saab lisada Kuvatavaid, käsuga kuvaHTML
väljastatakse sisse pandud andmed HTML-tabelis.
*/
class TabelisKuvaja implements Kuvatav{
protected $kuvatavad=array(), $veergudearv;
function __construct($v){
$this->veergudearv=$v;
}
function lisaKuvatav(Kuvatav $k){
array_push($this->kuvatavad, $k);
}
function kysiHTML(){
$t="
";
$veerg=0;
foreach($this->kuvatavad as $k){
if($veerg==0){$t.="
\n";
$veerg=0;
}
}
while($veerg>0 and $veerg < $this->veergudearv){
$t.="
x
";
$veerg++;
}
$t.="
";
return $t;
}
}
/*
Looge klass VeebiTekst, mis oleks Kuvatav ning näitaks välja tema
sisse pandud teksti.
Kujundage kaheveerulise TabelisKuvaja abil veebileht,
kus vasakul TabelisKuvajas üksteise all on mitmesugused Arvutajad
ning paremal servas TabelisKuvajas üksteise all
on pealkirjadega VeebiTekstid
*/
$a=new Arvutaja(3, 5, "a");
$b=new Korrutaja(0, 0, "b");
$arvutajad=array($a, new PealkirjagaKuvaja($b, "Palun korruta"),
new Arvutaja(2, 4, "c"));
$tk=new TabelisKuvaja(3);
foreach($arvutajad as $kuvatav){
$tk->lisaKuvatav($kuvatav);
}
?>
Arvutamine