Объектно-ориентированное программирование

Т. Бадд

Введение.

  1. Введение и общий замысел. Глава 1 дает неформальное определение базовых концепцийобъектно-ориентированного программирования. Глава2 вводит принцип разработки на основе обязанностей. Эти две главы являются фундаментальными, и их следует изучить подробно. В частности, я настоятельно рекомендую выполнить по крайней мере одно упражнение сCRC-карточками из главы2. Техника CRC-карточек, по моему мнению, является одной из лучших для определения функциональности, ответственности и инкапсуляции при базовой разработке проекта.
  2. Классы, методы и сообщения Главы 3 и4 определяют синтаксис, используемый в языках Smalltalk, C++, Java, Objective-C иObject Pascal для задания классов,

методов и посылки сообщений. Глава3 заостряет внимание на статических свойствах (классах и методах), в то время как глава4 описывает динамические аспекты(создание объектов и пересылку сообщений). Главы5 и6 развивают эти идеи. Здесь же начинаются обучающие примеры— образцы программ, разработанных в объектно-ориентированной манере и иллюстрирующих различные черты объектной техники.

III. Наследование и повторное использование кода Главы 7, 8 и9 вводят концепцию

наследования и объясняют ее применение для обеспечения повторного использования кода. Пример из главы8, написанный на языке Java, иллюстрирует также применение стандартного прикладного программного интерфейса(API —

application program interface). В главе9 противопоставляются наследование и

композиция в качестве альтернативных техник обеспечения повторного использования кода.

  1. Более подробно о наследовании. В главах с10 по13 концепция наследования анализируется более детально. Введение наследования оказывает влияние на почти все аспекты языка программирования, которое зачастую не сразу очевидно для начинающего. В главе10 обсуждается поиск методов и их связывание с сообщениями. Там же иллюстрируется тот факт, что подклассы и подтипы— это не одно и то же. В главе11 обсуждается семантика переопределения методов и отмечаются две совершенно различные интерпретации этого понятия. В главе12

продолжается тема переопределения и исследуются некоторые следствия наследования применительно к механизмам управления памятью, присваивания и сравнения. Наконец, в главе13 изучается множественное наследование.

  1. Полиморфизм. В значительной степени мощь объектно-ориентированного программирования проистекает из применения различных форм полиморфизма. В главе14 читатель знакомится с основными механизмами полиморфизма в объектно-ориентированных языках и двумя показательными обучающими примерами. Первый пример в главе15 рассматривает создание библиотек общего назначения. Конкретная библиотека, а именно недавно разработанная стандартная

библиотека шаблонов (STL — Standard Template Library)для языка С++,

обсуждается в главе 16.

  1. Разработка программного обеспечения. В главе17 обсуждается ряд стандартных тем компьютерной инженерии в контексте объектно-ориентированного программирования. Глава18 знакомит с несколькими относительно новыми концепциями— средой разработки приложений и шаблонами разработки. Оба подхода основаны на использовании наборов классов. Наконец, в главе19 приводится конкретный пример среды разработки.

VII. Продвинутое изучение. Концепция классов при внимательном рассмотрении не столь проста, как нас пытались убедить в главе 3. В главе 20 рассмотрены более глубокие аспекты объектно-ориентированного программирования. Там же обсуждаются делегирование (являющееся примером объектно-ориентированного программирования без классов) и понятие метакласса(на уровне собственно языка программирования). В главе 21 в общих чертах описаны разнообразные техники реализации, применяющиеся при создании объектно-ориентированных языков. Читать далее «Объектно-ориентированное программирование»