Koenig, 12345abc [0-7] - да, это в десятичном будет как от 0 до 7.
$n = new Number(5); // задаем число в 5 разрядов. Оно сейчас имеет вид 11111
for($i=0; $i<10; $i++){ // Десять итераций
echo $n->showNumber()."\n"; // Выводит текущее число
$n->increment(); // Добавляем к числу 1
}
echo $n->showNumber()."\n"; // Выводим последнее число
Связь в том, что класс Discharge представляет один разряд числа, а Number представляет совокупность всех разрядов числа.
Discharge отвечает за контроль текущего символа в разряде и его инкрементацию. Если текущий символ равен последнему возможному, то он обнуляется.
Number отвечает за хранение всех разрядов числа (объектов класса Discharge) и за их инкрементацию. Если при добавлении единицы смещается разряд и обнуляется младший разряд, то этот класс так же отвечает за инкрементацию следующего разряда.
На пример вот работа класса Discharge:
$d = new Discharge;
echo $d->getNumber(); // 1
$d->plus();
echo $d->getNumber(); // 2
$d->plus();
echo $d->getNumber(); // 3
$d->plus();
echo $d->getNumber(); // 4
$d->plus();
echo $d->getNumber(); // 5
$d->plus();
echo $d->getNumber(); // A
$d->plus();
echo $d->getNumber(); // B
$d->plus();
echo $d->getNumber(); // C
$d->plus(); // метод вернет false так как произойдет сброс разряда
echo $d->getNumber(); // 1Как видно этот класс отвечает только за работу одного разряда.
А вот пример работы класса Number:
$n = new Number(5); // Пяти разрядное число - 11111
$n->increment(); // число станет 11112
$n->increment(); // 11113
$n->increment(); // 11114
$n->increment(); // 11115
$n->increment(); // 1111A
$n->increment(); // 1111B
$n->increment(); // 1111C
$n->increment(); // 11121 - за сброс первого разряда отвечает объект Discharge, а за инкремент второго разряда уже класс NumberВот кусок кода класса Number, ответственного за инкремент разряда при сбросе:
if(!$this->number[$discharge]->plus()){ // Если метод инкрементации разряда вернет false, значит надо инкрементировать следующий разряд
$this->incrementDischarge($discharge+1);
}Как видно данный класс уже отвечает за взаимодействие разрядов. Классу Discharge нет необходимости знать о том, как его будут использовать.