<html>
<head>
<style>
body {font : 12px verdana: font-weight:bold;}
td {font : 11px verdana;}
</style>
</head>
<body>
<?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->instrument);
}
public function hasChildren() {
return(bool) (count($this->instruments) > 0);
}
}
class Cymbal extends AbstractInstrument {
function __construct($name) {
parent::setName($name);
parent::setCategory("тарелки");
}
}
$drums = new DrumSet("ударные");
$drums->add(new SnareDrum("барабан высокого звучания"));
$drums->add(new BaseDrum("большой барабан низкого звучания"));
$cymbals = new Cymbal("набор тарелок");
$cymbals->add(new Cymbal"маленькая тарелка");
$cymbals->add(new Cymbal"большая высокая шлаяп");
$drums->add($cymbals);
$guitar = new Guitar("гибсон ле поль");
$drums->getDescription();
$guitar->getDescription();
echo "Список инструментов: <p>";
?>
</body>
</html>
немогу понять как используют
$drums = new DrumSet("ударные"); и $guitar = new Guitar("гибсон ле поль"); абстрактный класс, и почему в учебнике сказанно что $drums переопределяет метод getDescription, а $guitar нет, хотя в абстракном классе я необнаружил что этот метод определен.
$drums->getDescription();
$guitar->getDescription();