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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Мэтт Вайсфельд
Series: Библиотека программиста
Publisher: Питер
Year: 2014

Language: Russian
Pages: 304
Tags: Информатика и вычислительная техника;Информатика (программирование);

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