РЕЦЕНЗИИ

Лафоре Р. Объектно-ориентированное программирование в С++. Классика Computer Science. 4-е изд. СПб.: Питер, 2003. - 928 с.

Этот без преувеличения классический труд по С++ будет полезен каждому, кто хочет хорошо изучить данный язык программирования. Хотя работа с такой книгой подразумевает наличие у читателя знания базовых понятий программирования, вполне достаточно общего представления о переменных и функциях.

Автор раскрывает все темы очень подробно и наглядно, с множеством примеров, иллюстраций и хорошо прокомментированных исходных текстов разной сложности. Особое внимание он уделяет объяснению, как различные данные и структуры располагаются в физической памяти (в стиле, напоминающем легендарное "Неформальное введение в Алгол 68"), что, безусловно, способствует глубокому усвоению материала. Первые пять глав отведены базовым понятиям языка, операторам, описаниям, типам данных, выражениям, циклам, условным операторам, структурам данных и функциям. Постоянно затрагиваются вопросы форматирования листингов, прививая читателю правильный подход к подготовке исходных текстов. В 6-7-й главах происходит плавный и естественный переход к ключевым понятиям классов и объектов, а также к массивам и строкам.

Далее автор объясняет принципы перегрузки операторов - важнейшую и очень мощную особенность объектно-ориентированного программирования (ООП), которая фактически превращает программу в систему логического вывода. К сожалению, используется она в прикладных проектах редко. Вообще, в последние годы отношение к широко разрекламированным возможностям ООП заметно изменилось - этот подход достаточно сложен в изучении и серьезно практиковаться в объектном программировании труднее, нежели, например, в структурном. В сложности самой по себе ничего плохого нет, проблема заключается в повышенных расходах крупных компаний на организацию технологичного процесса разработки ПО на базе ООП. Знаю несколько московских офшорных компаний, которые так и не сумели перевести труд сотен разработчиков на объектные рельсы, а типовые структурные подходы и использование чистого Си по-прежнему работают очень хорошо в проектах любых масштабов. Недаром, видимо, последние методологические наработки таких софтверных гигантов, как IBM, представляются порой как шаг назад, когда одной из целей ставится минимизация взаимосвязей между модулями, что легче достигается как раз структурными технологиями. А на первый план выходит задача оптимизации взаимодействий между разработчиками.

Неспроста и автор данной книги рассматривает принципы объектного наследования не до понятия перегрузки операторов, а следом за ними. А понятия виртуальных функций он объединил с дружественными, статическими и перегружаемыми.

Указателям отведена отдельная глава. Данные возможности рекомендуется применять в основном для оптимизации и повышения скорости кода. По одной главе пришлось на ввод-вывод (потоки и файлы), многофайловые проекты (отечественному читателю привычнее, наверное, понятие многомодульности), шаблоны и исключения (опять-таки, по смыслу точнее термин "исключительные ситуации") и стандартную библиотеку шаблонов STL. В последней, 16-й главе книги описаны основные методологические подходы к ведению проектов на базе ООП и принципы UML-моделирования. Все главы сопровождаются десятками упражнений, к которым прилагаются исходные тексты их решений.

Данная книга, без сомнения, будет полезна всем, кто изучает С++.

Версия для печати