4-1.txt

(2 KB) Pobierz
<html>
<body>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<style>
body {font : 12px verdana; font-weight:bold}
td {font : 11px verdana;}
</style>
</head>

<?php

abstract class AbstractInstrument {

   private $name;
   private $category;
   private $instruments = array();

   public function add(AbstractInstrument $instrument) {
      array_push($this->instruments, $instrument);
   }

   public function remove(AbstractInstrument $instrument) {
      array_pop($this->instruments);
   }

   public function hasChildren() {
      return (bool)(count($this->instruments) > 0);
   }

   public function getChild($i) {
      return $instruments[$i];
   }

   public function getDescription() {
      echo "- jeden " . $this->getName();
      if ($this->hasChildren()) {
         echo " z?o?ony z:<br>";
         foreach($this->instruments as $instrument) {
            echo "<table cellspacing=5 border=0><tr><td>&nbsp;&nbsp;&nbsp;</td><td>-";
            $instrument->getDescription();
            echo "</td></tr></table>";
         }
      }
   }

   public function setName($name) {
      $this->name = $name;
   }

   public function getName() {
      return $this->name;
   }

   public function setCategory($category) {
      $this->category = $category;
   }

   public function getCategory() {
      return $this->category;
   }
}

class Guitar extends AbstractInstrument {
   function __construct($name) {
      parent::setName($name);
      parent::setCategory("gitary");
   }
}

class DrumSet extends AbstractInstrument {
   function __construct($name) {
      parent::setName($name);
      parent::setCategory("perkusje");
   }
}

class SnareDrum extends AbstractInstrument {
   function __construct($name) {
      parent::setName($name);
      parent::setCategory("werble");
   }
}

class BaseDrum extends AbstractInstrument {
   function __construct($name) {
      parent::setName($name);
      parent::setCategory("b?bny");
   }
}

class Cymbal extends AbstractInstrument {
   function __construct($name) {
      parent::setName($name);
      parent::setCategory("talerze");
   }
}

$drums = new DrumSet("zestaw tama maple");
$drums->add(new SnareDrum("werbel"));
$drums->add(new BaseDrum("du?y b?ben"));

$cymbals = new Cymbal("zestaw talerzy zildjian");
$cymbals->add(new Cymbal("ma?y talerz")); 
$cymbals->add(new Cymbal("du?y talerz"));
$drums->add($cymbals);

$guitar = new Guitar("gibson les paul");

echo "Lista instrument?w: <p>";
$drums->getDescription();
$guitar->getDescription();

?>

</body>
</html>
Zgłoś jeśli naruszono regulamin