sisu=$sisu; } function kysiHTML(){ return htmlspecialchars($this->sisu); } function __toString(){ return $this->kysiHTML(); } } class PealkirjagaUudis implements VeebisKuvatav{ private $pealkiri; private $sisu; function __construct($pealkiri, VeebisKuvatav $sisu){ if(gettype($pealkiri)!='string'){ throw new Exception("Pealkiri pole string"); } $this->pealkiri=new Tekst($pealkiri); $this->sisu=$sisu; } function kysiHTML(){ return "

{$this->pealkiri}

{$this->sisu->kysiHTML()}
"; } } class AarejooneLisaja implements VeebisKuvatav{ private $sisu; private $toon; function __construct(VeebisKuvatav $sisu, $toon="black"){ $this->sisu=$sisu; $this->toon=$toon; } function kysiHTML(){ return " {$this->sisu->kysiHTML()} "; } } class TabelisKuvaja implements VeebisKuvatav{ private $ridu; private $veerge; private $andmed=array(); private $loendur=0; function __construct($ridu, $veerge){ $this->ridu=$ridu; $this->veerge=$veerge; } function lisa(VeebisKuvatav $plokk){ if($this->loendur>=$this->ridu*$this->veerge){ throw new Exception("Ei mahu enam"); } $this->andmed[$this->loendur++]=$plokk; } function kysiHTML(){ if($this->loendur!=$this->ridu*$this->veerge){ throw new Exception("TabelisKuvaja pole täis"); } $t=""; for($rida=0; $rida<$this->ridu; $rida++){ $t.=""; for($veerg=0; $veerg<$this->veerge; $veerg++){ $t.=""; } $t.="\n"; } $t.="
".$this->andmed[$rida*$this->veerge+$veerg]->kysiHTML()."
\n"; return $t; } } $avaldis= new Tekst("3<5"); //echo $avaldis->kysiHTML(); $uudis=new PealkirjagaUudis("< ja > märgid", $avaldis); $tabel2=new TabelisKuvaja(5, 5); $tabel1=new TabelisKuvaja(2, 2); $tabel1->lisa($avaldis); $tabel1->lisa($uudis); // $tabel1->lisa(new Tekst("x")); // $tabel1->lisa(new Tekst("x")); $tabel1->lisa($tabel2); $tabel1->lisa($tabel2); for($rida=1; $rida<=5; $rida++){ for($veerg=1; $veerg<=5; $veerg++){ $tabel2->lisa(new Tekst($rida*$veerg)); } } echo $tabel1->kysiHTML(); //Pange siiani tööle //Lisage tabeli alla vasakusse nurka 5*5 korrutustabel //Koostage uus klass, millele saab anda ette ühe VeebisKuvatava objekti //, määrata ära lehe pealkirja (title) ning lehel kasutatavad CSS-failid //Kasuta seda veebilehe kuvamiseks. //Loo ülesande jaoks omaette kataloog, //paiguta iga klass/liides omaette faili //Lisage VeebisKuvatav Tekst, mis vaid väljastabki konstruktoris //etteantud teksti. //Lisage VeebisKuvatav TabelisKuvaja, millele konstruktoris antakse //ette ridade ja veergude arv. Sinna saab ükshaaval lisada VeebisKuvatavaid //plokke. Kujunda olemasolevate klasside abil mitmekülgne lehekülg.