<html> <body> <?php abstract class AbstractInstrument { private $name; private $category; public function add(AbstractInstrument $instrument) { } public function hasChildren() { } public function getChild($i) { return $instruments[$i]; } public function getDescription() { if ($this->hasChildren()) { foreach ($this->instruments as $instrument) { $instrument->getDescription(); } } } 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 zildian'); $cymbals->add(new Cymbal('Mały talerz')); $cymbals->add(new Cymbal('Duży talerz')); $drums->add($cymbals); $guitar = new Guitar('Gibson les paul'); $drums->getDescription(); $cymbals->getDescription(); $guitar->getDescription(); ?> </body> </html>
A teraz bardzo Was proszę o przeanalizowanie go ze mną, bo nie wiem czy dobrze łapie.
<?php 1. $drums = new DrumSet('Zestaw tama maple'); 2. $drums->add(new SnareDrum('Werbel')); 3. $drums->add(new BaseDrum('Duży bęben')); ?>
Ad 1. Tworzymy instancję klasy DrumSet. Właściwość $name = 'Zestaw tama maple', $category = 'perkusje'
Ad 2. Do tablicy $instruments dodajemy instancję klasy SnareDrum
Ad 3. Do tablicy $instruments dodajemy instancję klasy BaseDrum
Czyli teraz wygląda to tak:
drums
$name - Zestaw tamla maple
$category - perkusje
$instruments - [ ($name - werbel, $category - werble), ($name - bęben, $category - bębny) ]
<?php 1. $cymbals = new Cymbal('Zestaw talerzy zildian'); 2. $cymbals->add(new Cymbal('Mały talerz')); 3. $cymbals->add(new Cymbal('Duży talerz')); 4. $drums->add($cymbals); ?>
Ad 1. Tworzymy instancję klasy Cymbal. Właściwość $name = 'Zestaw talerzy zilidjian', $category='talerze'
Ad 2. Do tablicy $instruments dodajemy instancję klasy Cymbal
Ad 3. Do tablicy $instruments dodajemy instancję klasy Cymbal
cymbals
$name - Zestaw talerzy zilidjian
$category - talerze
$instruments - [ ($name - Maly talerz, $category - talerze), ($name - Duży talerz, $category - talerze) ]
Do tego miejsca rozumiem. Ale za cholere nie mogę pojąć Ad 4. Jak do tablicy $instruments, która przechowuje pary name-category mogę dodać obiekt, który dodatkowo przechowuje kolejną tablicę instruments?