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.="".$this->andmed[$rida*$this->veerge+$veerg]->kysiHTML()." | ";
}
$t.="
\n";
}
$t.="
\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.