Объектно-ориентированное мышление
Мэтт Вайсфельд
Объектно-ориентированное программирование - это фундамент современных языков программирования, включая 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 Ссылки
- 52 Разница между интерфейсом и реализацией
- 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 Примеры кода, использованного в этой главе
- 67 Конструкторы
- 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 Ссылки
- 117 Руководство по проектированию
- 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 совершенно бесплатно.