Книга «Ruby. Объектно-ориентированное проектирование»
Книга посвящена проектированию объектно-ориентированных программ. Это не учебник, а рассказ программиста о том, как следует создавать программный код. Книга научит вас, как скомпоновать программное обеспечение, чтобы его высокая продуктивность не снижалась ни через месяц, ни через год. В ней показано, как создаются приложения, которые могут пользоваться успехом сегодня и адаптироваться к требованиям будущего.
Внимательно изучив это руководство, вы сможете: • Понять, как писать на Ruby качественный код в духе ООП • Решать, что должно входить в состав класса Ruby • Не допускать тесной связи между объектами в тех случаях, когда требуется разграничить функциональность • Определять гибкие интерфейсы между объектами • Освоить утиную типизацию • Эффективно задействовать наследование, композицию и полиморфизм • Разрабатывать экономные тесты • Доводить до совершенства любой legacy-код Ruby.
Кому эта книга будет полезна
Предполагается, что читатели имеют хотя бы начальный опыт создания объектно-ориентированных программ. При этом неважно, считаете ли вы свой опыт успешным, главное, чтобы у вас была практика работы с каким-либо объектно-ориентированным языком. В главе 1 дается краткий обзор объектно-ориентированного программирования и приводятся общие понятия.
Если вы еще не занимались объектно-ориентированным проектированием, но хотите научиться, то перед тем, как приступить к чтению, нужно пройти хотя бы начальный курс программирования. Примеры, приведенные в книге, предполагают, что вам уже приходилось сталкиваться с чем-то подобным. Опытные программисты могут пропустить этот этап, но большинству читателей мы рекомендуем получить начальный опыт написания объектно-ориентированного кода.
Для обучения объектно-ориентированному проектированию в этой книге используется язык Ruby, но для усвоения изложенных концепций знать Ruby совсем не обязательно. В издании приводятся примеры кода, и они предельно просты. При наличии опыта программирования на любом объектно-ориентированном языке разобраться с Ruby будет нетрудно.
Если вы привыкли работать с объектно-ориентированными языками со статической типизацией, например с Java или C++, значит, у вас уже есть необходимый багаж знаний, чтобы извлечь пользу из чтения данной книги. Ruby является языком с динамической типизацией, что упрощает синтаксис примеров и позволяет отразить самую суть проектирования. Каждое понятие из книги может быть напрямую переведено в код объектно-ориентированного языка со статической типизацией.
Как следует читать книгу
В главе 1 описываются общие задачи объектно-ориентированного проектирования и обстоятельства, требующие его применения, дается краткий обзор объектно-ориентированного программирования (ООП). Эта глава как бы стоит особняком. Ее можно прочитать первой, последней или пропустить, но если вы в настоящий момент столкнулись с плохо спроектированным приложением, то обязательно прочитайте эту главу.
Если у вас есть опыт написания объектно-ориентированных приложений и вы не хотите терять время на повторение той информации, которая вам уже и так известна, можете смело начинать с главы 2. Если столкнетесь с непонятным термином, вернитесь назад и бегло просмотрите раздел «Краткое введение в объектно-ориентированное программирование» главы 1, где приводятся общие понятия ООП, используемые в данной книге.
В главах 2–9 объясняются премудрости объектно-ориентированного проектирования.
В главе 2 «Проектирование классов с единственной обязанностью» описывается, как решить, что должно принадлежать отдельно взятому классу.
В главе 3 «Управление зависимостями» показано, как объекты сотрудничают друг с другом. В главах 2 и 3 основное внимание уделяется объектам, а не сообщениям.
В главе 4 «Создание гибких интерфейсов» акценты смещаются с проектирования, где все построено на базе объектов, к проектированию, основанному на обмене сообщениями. Эта глава посвящена определению интерфейсов; основное внимание в ней уделяется тому, как объекты общаются друг с другом.
Глава 5 «Снижение затрат за счет неявной типизации» посвящена неявной («утиной») типизации. В главе рассматривается идея о том, что объекты различных классов могут играть общие роли.
Глава 6 «Получение поведения через наследование» учит применять технологии классического наследования.
В главе 7 «Разделение ролевого поведения с помощью модулей» технологии классического наследования применяются для создания ролей с неявной типизацией.
Глава 8 «Объединение объектов путем составления композиции» раскрывает приемы создания объектов посредством композиций и предоставляет руководство по выбору между композицией, наследованием и совместным использованием ролей с применением неявной типизации.
Глава 9 «Проектирование экономически эффективных тестов» посвящена в основном проектированию тестов; при этом в качестве иллюстраций используется код из предыдущих глав книги.
Каждая из глав основана на понятиях, раскрываемых в предыдущих главах, поэтому читать их лучше по порядку.
В чем польза этого издания
Читателям с разными уровнями подготовки книга окажется по-разному полезна. Тем, кто уже знаком с объектно-ориентированным проектированием, будет о чем поразмышлять; возможно, они по-новому посмотрят на уже привычные вещи и, вполне вероятно, с чем-то будут не согласны. Поскольку в объектно-ориентированном проектировании нет истины в последней инстанции, оспаривание принципов (и спор с автором данной книги) только улучшит общее понимание предмета. В конце концов, именно вы должны оценивать собственные конструкции кода, проводить эксперименты и делать правильный выбор.
Хотя издание должно представлять интерес для читателей с различными уровнями подготовки, оно выпускалось с прицелом на новичков. Если вы новичок, то эта часть введения — именно для вас. Усвойте простую истину: объектно-ориентированное проектирование не магия. Это всего лишь еще не освоенная вами сфера. И раз вы читаете эти строки, это говорит о вашей заинтересованности, а тяга к знаниям — единственное условие получения пользы от прочтения данной книги.
В главах 2–9 объясняются принципы объектно-ориентированного проектирования и приводятся четкие правила программирования, значение которых для новичка будет отличаться от значения для опытных программистов. Новичкам нужно следовать этим правилам, не сомневаясь в их важности. Безоговорочное выполнение правил поможет избежать крупных неприятностей, пока не будет накоплен опыт, позволяющий принимать собственные решения. К тому времени, когда правила станут вас раздражать, у вас уже будет достаточно опыта для составления своих правил, и вы начнете двигаться по карьерной лестнице в качестве проектировщика.
Об авторе
Сэнди Метц 30 лет работает над такими проектами, качество которых позволяет им расширяться и совершенствоваться. Она разработчик структур программного обеспечения в Университете Дьюка, где ее команда решает реальные задачи для клиентов, имеющих крупные объектно-ориентированные приложения, сопровождение и развитие которых ведется на протяжении 15 и более лет. Сэнди стремится создавать полезные, нетривиальные программы исключительно практичными способами. Книга «Ruby. Объектно-ориентированное проектирование» — продукт обобщения множества разработок и итог многолетних дебатов на тему объектно-ориентированного проектирования.
» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 25% по купону — Ruby
Комментарии (2)
13 декабря 2016 в 12:47
0↑
↓
Добрый день. Нигде нет, на какой версии Ruby идет повествование в этой книге. Не подскажите?13 декабря 2016 в 13:44
0↑
↓
Спасибо, купил.