Your comments

Всеволод, спасибо за предложение!

Все обновления по сей день касались только исправления ошибок и неточностей, поэтому я не видел смысла отдельно об этом говорить. Если книга будет обновляться по контенту, думаю, я добавлю информацию об изменениях где-то рядом со ссылками на скачку.

Кстати, я не уверен как на андроиде, но в iBooks горизонтально пролистать код можно очень неочевидным жестом — двумя пальцами. Если листать одним пальцем, то срабатывает листание страниц.

Сергей, спасибо за видео! Честно сказать, про Lithium я даже не знал, но в нём всё выглядит очень достойно. 

Да, это она. На смартфонах, где я тестировал книгу, она шла предустановленной. PDF — это конечно компромис, но вы бы знали сколько сил было потрачено, чтобы и в ePUB всё выглядело круто.

У меня действительно iPhone и не холивара ради хочу сказать, что iBooks действительно пока лидирует по качеству поддержки стандарта ePUB, хоть и там тоже косяков хватает.

Добрый день!

Как автор, могу ответить, что ближе всего к тому как я хотел, книга выглядит в читалке Google Play. Все остальные читалки на Андроиде очень и очень далеки от идеала, особенно когда дело подходит к чтению книги с иллюстрациями, кодом и прочими штуками, которых нет в обычных книгах аля Война и Мир.

Антон, спасибо за то, что нашли время написать об этом. По первой проблеме, в диаграмме ошибочно отсутствовал второй параметр в методе addItem. По второй, я явно добавил обычный конструктор в класс прототипа. Исправления уже доступны на сайте и в книге, ещё раз спасибо!

Спасибо, добавил в планы на будущее.

Здравствуйте!

Спасибо за хороший вопрос. Я понимаю, почему может возникнуть путаница. Думаю, следует воспринимать вещи, описанные в структуре как роли. Особенно это касается довольно расплывчатой роли _клиента_, которым может выступать любой класс. В идеале каждой роли соотвествует свой класс. Но в реальной жизни один класс вполне может отыгрывать обе роли сразу. Если эти роли начинают слишком сильно переплетаться, программист может разделить класс, выделив роли в собственные классы.

В данном случае, мы вполне могли бы отделить создание команд в какой-то другой класс, но я не хотел этого делать, чтобы не усложнять пример без надобности.