Prentice Hall, 1997, ISBN 0-13-629155-4, 1254 + xxvii pp. + CD-ROM
Книга Бертрана Мейера "Конструирование объектно-ориентированного программного обеспечения" - это не просто еще один том, который можно - для полноты картины - поставить на длинную полку книг, посвященных разным аспектам объектно-ориентированного программирования (ООП).
Прежде всего - о личности автора. Б.Мейер - основатель и глава фирмы Interactive Software Engineering (ISE) со штаб-квартирой в известной у нас Санта Барбаре (Калифорния). Это одна из первых компаний, полностью сосредоточивших свою деятельность на объектных технологиях. Автор является также изобретателем языка Eiffel и выступает сегодня, пожалуй, в качестве самого активного пропагандиста объектного подхода, которому и посвятил около десяти книг. Под его руководством разработаны тысячи библиотечных классов и промышленные системы, содержащие сотни тысяч строк ОО кода.
Ссылки на предыдущее издание этой книги (1988 г.) сегодня принято сопровождать эпитетом "классическая": это была первая работа, систематически излагающая основы новой дисциплины. И вот - второе, полностью переработанное издание, вышедшее совсем в другом контексте программной индустрии. Десятилетие, прошедшее между двумя изданиями, превратило ООП из просто перспективного направления в программировании в господствующую парадигму, которая, как пишет в предисловии автор "подобно высокой приливной волне накатывает на берега компьютерного мира". Впрочем, он тут же оговаривается, указывая, что если одним этот процесс напоминает своей силой и неотвратимостью тайфун или цунами, то другие называют его бурей в стакане воды.
Подозреваю, что попади в магазине эта книга в руки к нашему достаточно типичному программисту, он бы, чего доброго, воздержался от ее приобретения. Во-первых, изложение "не привязано" ни к С++, ни к Object Pascal (не говоря уже о конкретных средах ОО программирования типа Delphi, Borland или MS Visual C++). Следовательно напрашивается вывод: эта книга не для программиста-практика, а значит, особого смысла изучать ее - нет. Кроме того, пугает ее объем - более тысячи страниц; а мы уже привыкли, что типичное издание с названием "Объектно-ориентированное программирование в ..." посвящает изложению самих принципов ООП лишь несколько десятков страниц, и этого вроде бы вполне достаточно, чтобы, изучив "за 21 день" синтаксис языка, методы работы в используемой среде программирования и имея перед собой описание библиотеки классов типа OWL, с успехом писать объектные программы.
Книгу Б.Мейера стоит прочесть хотя бы для того, чтобы понять, сколь ограничен такой взгляд и насколько полезно для программиста-практика изучить и освоить многообразный современный инструментарий ООП - а он много шире того джентльменского набора, которым владеет чуть ли не каждый. Книга состоит из 36 глав, распределенных по семи разделам, а также пяти приложений, включая "глоссарий объектной технологии" и исчерпывающую библиографию. Вообще, книга образцово структурирована. Каждая глава помимо систематического изложения конкретной темы содержит параграфы "Обсуждение", где критически рассматриваются альтернативные подходы, "Ключевые понятия, введенные в главе", "Библиографические заметки" и "Упражнения".
Первый раздел "А" вводит читателя в тему, представляя обзор основных черт ООП. В разделе "B" подробно рассматриваются методологические основания, на которых стоит ООП - от модульности и возможности повторного использования кода до теории абстрактных типов данных. Следующий раздел "C", систематически излагающий принципы и методы ООП, занимает центральное место в книге. На протяжении полутысячи страниц последовательно рассматриваются классы как статические структуры и объекты как их динамические инкарнации; вопросы управления памятью и типизация; наследование (более десяти разных видов) и полиморфизм. Особое внимание уделяется рассмотрению механизма контрактов, который автор считает ключевым при создании надежного ПО.
В обширном разделе "D" обсуждается методология применения ОО подхода, при этом делается акцент на вопросы анализа и проектирования. Используя несколько совсем не тривиальных примеров, автор вводит такое фундаментальное понятие, как "образцы проектирования" (design patterns), и показывает, как находить классы с разумной наследственной иерархией и строить повторно-используемые библиотеки. Дается обзор всего жизненного цикла ПО при ОО разработке и обсуждаются основные объектные методологии. Наконец, специальная глава посвящена вопросам освоения и преподавания ОО подхода.
В оставшихся разделах "E", "F", "G" обсуждаются более "продвинутые" темы, в частности, параллелизм и построение распределенного ПО (в том числе в рамках архитектуры клиент-сервер и Internet), особенности ООП в СУБД и при создании графических интерфейсов. Представлен обзор ОО языков и сред программирования (специальная глава посвящена Ada).
К книге прилагается CD-ROM, который содержит полный ее текст в формате Adobe Acrobat. Автор называет его "A Book-Wide Web" - это гипертекст с многочисленными перекрестными ссылками, позволяющий передвигаться в пределах "электронной книги" в соответствии с принятыми в WWW правилами. Кроме того, диск включает весьма современную ОО среду разработки для семейства MS Windows.
В целом, книга представляет собой наиболее полное в мировой компьютерной литературе изложением ООП с использованием оригинальной и всесторонне продуманной методологии. Автор знает, что "дьявол - в деталях", и умеет изложить их во всех необходимых программисту-практику подробностях. К тому же Б.Мейер, хотя и француз по происхождению, знаменит своим ясным и остроумным английским литературным языком. На страницах книги можно встретиться - и по делу! - с Декартом и Дарвином, Умберто Эко и Лючано Паваротти, не говоря уже о таких корифеях современного ООП как Буч, Рамбо, Якобсон и многих других, чьи подходы подвергаются внимательному и критическому рассмотрению.
И последнее. Если, как полагают многие, ООП - это новая программистская религия, то именно книга Б.Мейера более других претендует на то, чтобы называться ОО библией. Конечно, можно быть приверженцем (сознательным или, как у нас чаще бывает - стихийным) иной "религии" или вообще атеистом - подозреваю, что таких большинство среди наших программистов, полагающих, что все, что им необходимо - это талант, который от Бога (но не программистского). Но Библию-то читать всегда полезно. И перечитывать - на каждом новом витке профессионального развития, потому как ОО заповеди надо в любом случае знать - и из первых рук.
Книга Мейера будет многие годы пользоваться спросом у студентов и преподавателей, программистов-практиков и ученых-теоретиков - всех, кто серьезно относится к программированию.