Объектно-ориентированное мышление

Мэтт Вайсфельд

Объектно-ориентированное программирование - это фундамент современных языков программирования, включая C++, Java, C#, Visual Basic, .NET, Ruby и Objective-C. Кроме того, объекты лежат в основе многих веб-технологий, например JavaScript, Python и PHP.

Объектно-ориентированное программирование обеспечивает правильные методики проектирования, переносимость кода и его повторное использование, однако для того, чтобы все это полностью понять, необходимо изменить свое мышление. Разработчики, являющиеся новичками в сфере объектно-ориентированного программирования, не должны поддаваться искушению перейти непосредственно к конкретному языку программирования (например, Objective-C, VB .NET, C++, C#, .NET или Java) или моделирования (например, UML), а вместо этого сначала уделить время освоению того, что автор книги Мэтт Вайсфельд называет объектно-ориентированным мышлением.

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

Издательство: Питер, 2014 г.

ISBN 978-5-496-00793-1, 978-0321861276

Количество страниц: 304.

Содержание книги «Объектно-ориентированное мышление»:

  • 13 Об авторе
  • 14 Благодарности
  • 14 От издательства
  • 15 Введение
    • 17 Что нового в четвертом издании
    • 17 Целевая аудитория
    • 18 Подход, использованный в этой книге
    • 19 Соглашения, принятые в книге
  • 20 Глава 1. Введение в объектно-ориентированные концепции
    • 20 Фундаментальные концепции
    • 21 Объекты и унаследованные системы
    • 23 Процедурное программирование в сравнении с объектно-ориентированным
    • 27 Переход с процедурной разработки на объектно-ориентированную
      • 27 Процедурное программирование
      • 27 Объектно-ориентированное программирование
    • 28 Что такое объект
      • 28 Данные объектов
      • 28 Поведения объектов
    • 32 Что такое класс
      • 33 Создание объектов
      • 35 Атрибуты
      • 35 Методы
      • 35 Сообщения
    • 36 Использование диаграмм классов в качестве визуального средства
    • 36 Инкапсуляция и скрытие данных
      • 37 Интерфейсы
      • 38 Реализации
      • 38 Реальный пример парадигмы «интерфейс/реализация»
      • 39 Модель парадигмы «интерфейс/реализация»
    • 40 Наследование
      • 41 Суперклассы и подклассы
      • 42 Абстрагирование
      • 43 Отношения «является экземпляром»
    • 44 Полиморфизм
    • 47 Композиция
      • 47 Абстрагирование
      • 48 Отношения «содержит как часть»
    • 48 Резюме
    • 48 Примеры кода, использованного в этой главе
  • 51 Глава 2. Как мыслить объектно
    • 52 Разница между интерфейсом и реализацией
      • 54 Интерфейс
      • 54 Реализация
      • 55 Пример интерфейса/реализации
    • 59 Использование абстрактного мышления при проектировании классов
    • 62 Обеспечение самого минимального интерфейса пользователя из возможных
      • 63 Определение пользователей
      • 64 Поведения объектов
      • 64 Ограничения, налагаемые средой
      • 64 Определение открытых интерфейсов
      • 65 Определение реализации
    • 66 Резюме
    • 66 Ссылки
  • 67 Глава 3. Продвинутые объектно-ориентированные концепции
    • 67 Конструкторы
      • 68 Когда осуществляется вызов конструктора
      • 68 Что находится внутри конструктора
      • 68 Конструктор по умолчанию
      • 69 Использование множественных конструкторов
      • 70 Перегрузка методов
      • 71 Использование UML для моделирования классов
      • 73 Как сконструирован суперкласс
      • 73 Проектирование конструкторов
    • 74 Обработка ошибок
      • 74 Игнорирование проблем
      • 75 Проверка на предмет проблем и прерывание выполнения приложения
      • 75 Проверка на предмет проблем и попытка устранить неполадки
      • 76 Выбрасывание исключений
    • 78 Важность области видимости
      • 78 Локальные атрибуты
      • 80 Атрибуты объектов
      • 82 Атрибуты классов
    • 83 Перегрузка операторов
    • 84 Множественное наследование
    • 85 Операции с объектами
    • 86 Резюме
    • 86 Ссылки
    • 87 Примеры кода, использованного в этой главе
  • 88 Глава 4. Анатомия класса
    • 88 Имя класса
    • 90 Комментарии
    • 90 Атрибуты
    • 92 Конструкторы
    • 94 Методы доступа
    • 96 Методы открытых интерфейсов
    • 97 Методы закрытых реализаций
    • 97 Резюме
    • 97 Ссылки
    • 98 Примеры кода, использованного в этой главе
  • 100 Глава 5. Руководство по проектированию классов
    • 100 Моделирование реальных систем
    • 101 Определение открытых интерфейсов
      • 101 Минимальный открытый интерфейс
      • 102 Скрытие реализации
    • 103 Проектирование надежных конструкторов (и, возможно, деструкторов)
    • 104 Внедрение обработки ошибок в класс
      • 104 Документирование класса и использование комментариев
      • 105 Создание объектов с прицелом на взаимодействие
    • 106 Проектирование с учетом повторного использования
    • 106 Проектирование с учетом расширяемости
      • 106 Делаем имена описательными
      • 107 Абстрагирование непереносимого кода
      • 108 Обеспечение возможности осуществлять копирование и сравнение
      • 108 Сведение области видимости к минимуму
      • 109 Класс должен отвечать за себя
    • 111 Проектирование с учетом сопровождаемости
      • 111 Использование итерации в процессе разработки
      • 112 Тестирование интерфейса
    • 114 Использование постоянства объектов
    • 115 Резюме
    • 115 Ссылки
    • 116 Примеры кода, использованного в этой главе
  • 117 Глава 6. Проектирование с использованием объектов
    • 117 Руководство по проектированию
      • 121 Проведение соответствующего анализа
      • 121 Составление технического задания
      • 122 Сбор требований
      • 122 Разработка прототипа интерфейса пользователя
      • 123 Определение классов
      • 123 Определение ответственности каждого класса
      • 123 Определение взаимодействия классов друг с другом
      • 123 Создание модели классов для описания системы
      • 123 Прототипирование интерфейса пользователя
    • 124 Объектные обертки
      • 125 Структурированный код
      • 126 Обертывание структурированного кода
      • 128 Обертывание непереносимого кода
      • 129 Обертывание существующих классов
    • 130 Резюме
    • 130 Ссылки
  • 131 Глава 7. Наследование и композиция
    • 131 Повторное использование объектов
    • 133 Наследование
      • 135 Обобщение и конкретизация
      • 136 Проектные решения
    • 138 Композиция
    • 141 Почему инкапсуляция является фундаментальной объектно-ориентированной концепцией
      • 142 Как наследование ослабляет инкапсуляцию
      • 144 Подробный пример полиморфизма
      • 144 Ответственность объектов
      • 148 Абстрактные классы, виртуальные методы и протоколы
    • 150 Резюме
    • 150 Ссылки
    • 151 Примеры кода, использованного в этой главе
  • 153 Глава 8. Фреймворки и повторное использование: проектирование с применением интерфейсов и абстрактных классов
    • 153 Код: использовать повторно или нет?
    • 154 Что такое фреймворк
    • 156 Что такое контракт
      • 157 Абстрактные классы
      • 160 Интерфейсы
      • 162 Связываем все воедино
      • 165 Код, выдерживающий проверку компилятором
      • 165 Заключение контракта
      • 168 Системные «точки расширения»
    • 168 Пример из сферы электронного бизнеса
      • 168 Проблема, касающаяся электронного бизнеса
      • 169 Подход без повторного использования кода
      • 172 Решение для электронного бизнеса
      • 172 Объектная модель UML
    • 176 Резюме
    • 177 Ссылки
    • 177 Примеры кода, использованного в этой главе
  • 180 Глава 9. Создание объектов и объектно-ориентированное проектирование
    • 180 Отношения композиции
    • 182 Поэтапное создание
    • 184 Типы композиции
      • 185 Агрегации
      • 186 Ассоциации
      • 186 Использование ассоциаций в сочетании с агрегациями
      • 187 Избегание зависимостей
    • 188 Кардинальность
      • 190 Ассоциации, включающие множественные объекты
      • 191 Необязательные ассоциации
    • 191 Связываем все воедино: пример
    • 193 Резюме
    • 193 Ссылки
  • 194 Глава 10. Создание объектных моделей
    • 194 Что такое UML
    • 195 Структура диаграммы класса
    • 197 Атрибуты и методы
      • 197 Атрибуты
      • 197 Методы
    • 198 Обозначения доступа
    • 199 Наследование
    • 200 Интерфейсы
    • 201 Композиция
      • 202 Агрегации
      • 202 Ассоциации
    • 204 Кардинальность
    • 206 Резюме
    • 206 Ссылки
  • 208 Глава 11. Объекты и переносимые данные: XML и JSON
    • 209 Переносимые данные
    • 210 XML
      • 211 XML в противопоставлении с HTML
      • 212 XML и объектно-ориентированные языки программирования
    • 213 Обмен данными между двумя компаниями
    • 214 Валидация документа с определением типа документа (DTD)
    • 216 Включение определения типа документа в XML-документ
    • 221 Использование CSS
    • 223 JavaScript Object Notation (JSON)
    • 228 Резюме
    • 228 Ссылки
  • 229 Глава 12. Постоянные объекты: сериализация, маршалинг и реляционные базы данных
    • 229 Основные положения, касающиеся постоянных объектов
    • 231 Сохранение объекта в плоском файле
      • 232 Сериализация файла
      • 234 Еще раз о реализации и интерфейсе
      • 235 А как насчет методов?
    • 236 Использование XML в процессе сериализации
    • 238 Запись в реляционную базу данных
    • 242 Резюме
    • 242 Ссылки
    • 243 Примеры кода, использованного в этой главе
  • 246 Глава 13. Объекты в веб-службах, мобильных и гибридных приложениях
    • 246 Эволюция распределенных вычислений
    • 247 Основанные на объектах языки сценариев
    • 250 Пример валидации с использованием JavaScript
    • 253 Объекты на веб-странице
      • 253 JavaScript-объекты
      • 255 Элементы управления веб-страницы
      • 256 Аудиопроигрыватели
      • 257 Видеопроигрыватели
      • 257 Flash
    • 258 Распределенные объекты и корпоративные вычисления
      • 259 Common Object Request Broker Architecture (CORBA)
      • 264 Определение веб-служб
      • 268 Код веб-служб
      • 269 Representational State Transfer (ReST)
    • 270 Резюме
    • 270 Ссылки
  • 272 Глава 14. Объекты и клиент-серверные приложения
    • 272 Подходы «клиент/сервер»
    • 272 Проприетарный подход
    • 273 Сериализованный объектный код
    • 274 Клиентский код
    • 276 Серверный код
    • 277 Выполнение примера «клиент/сервер» на основе проприетарного подхода
    • 278 Непроприетарный подход
    • 279 Код определения объектов
    • 280 Клиентский код
    • 281 Серверный код
    • 283 Выполнение примера «клиент/сервер» на основе непроприетарного подхода
    • 284 Резюме
    • 284 Ссылки
    • 284 Примеры кода, использованного в этой главе
  • 285 Глава 15. Шаблоны проектирования
    • 286 Зачем нужны шаблоны проектирования
    • 287 Парадигма «Модель/Вид/Контроллер» в Smalltalk
    • 289 Типы шаблонов проектирования
      • 289 Порождающие шаблоны
      • 294 Структурные шаблоны
      • 296 Поведенческие шаблоны
    • 297 Антишаблоны
    • 299 Резюме
    • 299 Ссылки
    • 299 Примеры кода, использованного в этой главе

Инструкция как скачать книгу Мэтт Вайсфельд: Объектно-ориентированное мышление в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Объектно-ориентированное мышление
Рейтинг книги:
0 голосов
3541

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: