English version
    Главная Новинки Новости Рейтинг продаж Файлы/Download Клуб Профессионал Партнерская программа
Ваш кабинет
Если вы уже зарегистрированы, введите ваши данные:
Логин  
Пароль

Библиотека: Т. Бадд. Объектно-ориентированное программирование в действии


Содержание

    Введение
  1. Объектно-ориентированное мышление
    1. Почему ООП так популярно?
    2. Язык и мышление
      Эскимосы и снегПример из области программированияПринцип Чёрча и гипотеза Ворфа
    3. Новая парадигма
    4. Способ видения мира
      Агенты, обязанности, сообщения и методыОбязанности и ответственностиКлассы и экземплярыИерархии классов и наследованиеСвязывание и переопределение методовКраткое изложение принципов
    5. Вычисление и моделирование
      Сила метафорКак избежать бесконечной регрессии
    6. Барьер сложности Нелинейное увеличение сложностиМеханизмы абстрагирования
    7. Многократно используемое программное обеспечение
    8. Резюме
      Что читать дальше
      Упражнения
  2. Объектно-ориентированное проектирование
    1. Ответственность подразумевает невмешательство
    2. Программирование «в малом» и «в большом»
    3. Почему надо начинать с функционирования?
    4. Учебный пример: проектирование на основе обязанностей
      Интерактивный разумный кухонный помощник Работа по сценариюИдентификация компонент
    5. CRC-карточка — способ записи обязанностей
      Дайте компонентам физический образЦикл «что/кто»Документирование
    6. Компоненты и поведение
      Отложенные решенияГотовность к изменениямПродолжение работы со сценариемДиаграммы взаимодействия
    7. Компоненты программы
      Поведение и состояниеЭкземпляры и классыЗацепление и связностьИнтерфейс и реализация модуля — принципы Парнаса
    8. Формализация интерфейса
      Выбор имен
    9. Выбор представления данных
    10. Реализация компонент
    11. Интеграция компонент
    12. Сопровождение и развитие
      Упражнения
  3. Классы и методы
    1. Инкапсуляция
    2. Разновидности классов
    3. Пример: игра в карты
    4. Интерфейс и реализация
    5. Классы и методы в ООП
      Классы и методы в языке Object PascalКлассы и методы в языке SmalltalkКлассы и методы в языке Objective-CКлассы и методы в языке C++ Классы и методы в языке Java
      Упражнения
  4. Сообщения, экземпляры и инициализация
    1. Синтаксис пересылки сообщений
      Синтаксис пересылки сообщений в Object PascalСинтаксис пересылки сообщений в C++Синтаксис пересылки сообщений в JavaСинтаксис пересылки сообщений в SmalltalkСинтаксис пересылки сообщений в Objective-C
    2. Способы создания и инициализации
      Стек против «кучи»Восстановление памяти • Указатели • Создание неизменяемого экземпляра объекта
    3. Механизмы создания и инициализации
      Создание и инициализация в C++Создание и инициализация в JavaСоздание и инициализация в Objective-CСоздание и инициализация в Object PascalСоздание и инициализация в Smalltalk
      Упражнения
  5. Учебный пример: задача о восьми ферзях
    1. Задача о восьми ферзях
      Создание объектов, решающих «самих себя»
    2. Использование генераторов
      Инициализация Нахождение решенияПродвижение на следующую позицию
    3. Задача о восьми ферзях в различных языках программирования
      Задача о восьми ферзях: Object PascalЗадача о восьми ферзях: C++Задача о восьми ферзях: JavaЗадача о восьми ферзях: Objective-CЗадача о восьми ферзях: Smalltalk
      Упражнения
  6. Учебный пример: игра «Бильярд»
    1. Элементы бильярда
    2. Графические объекты
      Графический объект Wall (стенка)Графический объект Hole (луза)Графический объект Ball (шар)
    3. Основная программа
    4. Использование наследования
      Упражнения
  7. Наследование
    1. Интуитивное описание наследования
    2. Подкласс, подтип и принцип подстановки
      Подтипы и строгий контроль типов данных
    3. Формы наследования
      Порождение подклассов для специализации (порождение подтипов) • Порождение подкласса для спецификацииПорождение подкласса с целью конструирования • Порождение подкласса для обобщенияПорождение подкласса для расширения • Порождение подкласса для ограниченияПорождение подкласса для варьированияПорождение подкласса для комбинирования Краткое перечисление форм наследования
    4. Наследование в различных языках программирования
      Наследование в языке Object PascalНаследование в языке SmalltalkНаследование в языке Objective-CНаследование в языке C++Наследование в языке Java
    5. Преимущества наследования
      Повторное использование программИспользование общего кодаСогласование интерфейсаПрограммные компоненты • Быстрое макетированиеПолиморфизм и структураМаскировка информации
    6. Издержки наследования Скорость выполненияРазмер программНакладные расходы на посылку сообщенийСложность программ
      Упражнения
  8. Учебный пример: пасьянс
    1. Класс игральных карт Card
    2. Связные списки
    3. Правила пасьянса
    4. Стопки карт — наследование в действии
      Основание SuitPileКолода DeckPileПромежуточная стопка DiscardPileСтопка расклада TablePile
    5. Полиморфная игра
    6. Создание более сложной игры
      Упражнения
  9. Повторное использование кода
    1. Наследование и принцип подстановки
      «Быть экземпляром» и «включать как часть»
    2. Композиция и наследование: описание
      Использование композицииПрименение наследованияЗакрытое наследование в языке C++
    3. Противопоставление композиции и наследования
    4. Повторное использование кода: реальность?
      Упражнения
  10. Подклассы и подтипы
    1. Связывание методов и сообщения
      Связывание методов • Проблема обращения полиморфизма
    2. Связывание в языках программирования
      Связывание в языке Object Pascal Связывание в языке SmalltalkСвязывание в языке Objective-CСвязывание в языке C++Связывание в языке Java
    3. Как связывать: статически или динамически?
      Упражнения
  11. Замещение и уточнение
    1. Добавление, замещение и уточнение
      Американская и скандинавская семантики
    2. Замещение методов
      Замещение методов и принцип подстановки • Уведомление о замещении
    3. Замещение в разных языках
      Замещение в C++ • Замещение методов в Object PascalЗамещение в Smalltalk и Objective-CЗамещение в Java
    4. Уточнение методов
      Уточнение в языках Simula и Beta Методы-оболочки в языке CLOS
    5. Уточнение в разных языках
      Уточнение в Object PascalУточнение в C++ Уточнение в Smalltalk, Java и Objective-C
      Упражнения
  12. Следствия наследования
    1. Выделение памяти
      Размещение минимальной статической памятиРазмещение максимальной статической памятиДинамическое выделение памяти
    2. Присваивание
      Присваивание в C++Присваивание в Object Pascal и JavaПрисваивание в SmalltalkПрисваивание в Objective-C
    3. Проверка на равенство
      Ковариация и контрвариацияРавенство в Objective-C, Java и Object PascalРавенство в Smalltalk • Равенство в C++
    4. Преобразование типов
      Упражнения
  13. Множественное наследование
    1. Комплексные числа
    2. Всплывающие меню
    3. Двусмысленность имен
      Наследование через общих предков
    4. Множественное наследование в C++
    5. Множественное наследование в Java
      Литература для дальнейшего чтения
      Упражнения
  14. Полиморфизм
    1. Полиморфизм в языках программирования
      Полиморфные функции в динамических языкахАбстракции низкого и высокого уровней
    2. Разновидности полиморфизма
    3. Полиморфные переменные
    4. Перегрузка
      Перегрузка в реальной жизниПерегрузка и приведение типа • Перегрузка не подразумевает сходствоПараметрическая перегрузка
    5. Переопределение
      Переопределение в классе Magnitude
    6. Отложенные методы
    7. Чистый полиморфизм
    8. Обобщенные функции и шаблоны
    9. Полиморфизм в различных языках
      Полиморфизм в C++ Полиморфизм в JavaПолиморфизм в Object PascalПолиморфизм в Objective-CПолиморфизм в Smalltalk
    10. Эффективность и полиморфизм
      Упражнения
  15. Учебный пример: контейнерные классы
    1. Использование традиционных подходов
    2. Контейнеры в динамических языках
    3. Контейнеры в языках со строгим контролем типа данных
    4. Скрытое приведение типа данных при наследовании
    5. Параметризованные классы
      Циклы и итерации в C++
      Упражнения
  16. Пример: STL
    1. Итераторы
    2. Объекты-функции
    3. Пример программы: инвентаризация
    4. Пример программы: графы
    5. Пример программы: алфавитный указатель
    6. Будущее ООП
      Упражнения
  17. Видимость и зависимость
    1. Зацепление и связность
      Разновидности зацепленияРазновидности связностиЗацепление и связность в ООПЗакон ДеметераВидимость: на уровне классов и на уровне объектовАктивные значения
    2. Клиенты-подклассы и клиенты-пользователи
    3. Управление доступом и видимостью Видимость в SmalltalkВидимость в Object PascalВидимость в C++Видимость в JavaВидимость в Objective-C
    4. Преднамеренное зацепление
      Упражнения
  18. Среды и схемы разработки
    1. Среда разработки
      Java APIСреда моделирования
    2. Схемы разработки
      Схемы с посредником Схемы обходаСхема двойной диспетчеризацииКлассификация схем разработок
      Упражнения
  19. Учебный пример: среда разработки
    1. Компоненты GUI
    2. Выполнение, управляемое событиями
    3. Настройка через наследование
    4. Классы в среде LAF
    5. Класс application
      Класс buttonКлассы menu и menuItem
    6. Резюме
      Упражнения
  20. Новый взгляд на классы
    1. Классы как типы
      Как наследование усложняет понятие типа Наследование и память
    2. Классы как объекты
      Фабрики по созданию объектовКласс ClassМетаклассы и класс-методыИнициализация объектовПодстановки в Objective-C
    3. Данные класса
      Переменные класса в SmalltalkПеременные класса в C++Переменные класса в JavaПеременные класса в Objective-C
    4. Нужны ли классы?
      Что такое знание?Делегирование полномочий
      Упражнения
  21. Реализация объектно-ориентированных языков
    1. Компиляторы и интерпретаторы
    2. Компиляторы
      Проблема «срезки»Соответствие между методами и сообщениямиТаблицы виртуальных методовКодирование именТаблицы диспетчеризации
    3. Интерпретаторы
      Литература для дальнейшего чтения
      Упражнения
    Приложение A. Исходный код программ для задачи «Восемь ферзей»
  1. «Задача о восьми ферзях» на языке Apple Object Pascal
  2. «Задача о восьми ферзях» на языке С++
  3. «Задача о восьми ферзях» на языке Java
    HTML-файл для апплета Java
  4. «Задача о восьми ферзях» на языке Objective-C
  5. «Задача о восьми ферзях» на языке Smalltalk
    Приложение Б. Исходный код игры «Бильярд»
  1. Версия без использования наследования
  2. Версия с использованием наследования
    Приложение В. исходный код программ для карточного пасьянса
  1. HTML-файл для апплета
  2. Файл Solitare.java

Глоссарий

ПОМОЩЬ

Оплата и доставка
Вопросы и ответы
Карта сайта
Обратная связь






ПОДПИСКА

Хотите быть в курсе событий?
Подпишитесь на еженедельную рассылку Издательского дома «Питер» о новинках, акциях, скидках. подробнее


ЗАКАЗ КНИГ
ПО ТЕЛЕФОНУ

Доставка по России и всему миру:
        почтой — (812) 703-73-74

Доставка по Петербургу:
    курьером — (812) 703-73-74



ГЛАС ЧИТАТЕЛЯ
отзыв на книгу:
Как составить личный финансовый план. Путь к финансовой независимости
В том числе и при помощи данной книги составил финансовый план для одного из своих первых клиентов. Почитайте книгу - и вы такое сможете!
Евгений


ПАРТНЕРЫ


 

    Главная | Новинки | Новости | Рейтинг продаж | Файлы | Клуб Профессионал | Партнерская программа

Авторские права охраняются.
Воспроизведение материалов или их частей в любом виде без письменного разрешения запрещено!
© 1997-2008, Издательский дом «Питер»

Rambler's Top100   Яндекс цитирования        
Санкт-Петербург
Б. Сампсониевский пр., 29а
тел.: (812) 703-73-74,
(812) 703-73-73
e-mail: postbook@piter.com
sales@piter.com
http://www.piter.com