Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, and Objective-C. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP. It is of vital importance to learn the fundamental con
The Object-Oriented Thought Process
✍ Scribed by Weisfeld, Matt
- Publisher
- Addison-Wesley Professional
- Year
- 2013
- Tongue
- English
- Leaves
- 304
- Series
- Developer's Library
- Category
- Library
No coin nor oath required. For personal study only.
✦ Synopsis
The Object-Oriented Thought Process, Fourth EditionAn introduction to object-oriented concepts for developers looking to master modern application practices
Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, and Objective-C. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP.
It is of vital importance to learn the fundamental concepts of object orientation before starting to use object-oriented development environments. OOP promotes good design practices, code portability, and reuse-but it requires a shift in thinking to be fully understood. Programmers new to OOP should resist the temptation to jump directly into a particular programming language (such as Objective-C, VB .NET, C++, C# .NET, or Java) or a modeling language (such as UML), and instead first take the time to learn what author Matt Weisfeld calls "the object-oriented thought process."
Written by a developer for developers who want to make the leap to object-oriented technologies,The Object-Oriented Thought Processprovides a solutions-oriented approach to object-oriented programming. Readers will learn to understand the proper uses of inheritance and composition, the difference between aggregation and association, and the important distinction between interfaces and implementations.
While programming technologies have been changing and evolving over the years, object-oriented concepts remain a constant-no matter what the platform. This revised edition focuses on interoperability across programming technologies, whether you are using objects in traditional application design, in XML-based data transactions, in web page development, in mobile apps, or in any modern programming environment.
"Programmers who aim to create high quality software-as all programmers should-must learn the varied subtleties of the familiar yet not so familiar beasts called objects and classes. Doing so entails careful study of books such as Matt Weisfeld'sThe Object-Oriented Thought Process." -Bill McCarty, author of Java Distributed Objects, and Object-Oriented Design in Java
Contents at a Glance
1 Introduction to Object-Oriented Concepts
2 How to Think in Terms of Objects
3 Advanced Object-Oriented Concepts
4 The Anatomy of a Class
5 Class Design Guidelines
6 Designing with Objects
7 Mastering Inheritance and Composition
8 Frameworks and Reuse: Designing with Interfaces and Abstract Classes
9 Building Objects and Object-Oriented Design
10 Creating Object Models
11 Objects and Portable Data: XML and JSON
12 Persistent Objects: Serialization, Marshaling, and Relational Databases
13 Objects in Web Services, Mobile Apps, and Hybrids
14 Objects and Client/Server Applications
15 Design Patterns
✦ Table of Contents
Об авторе......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
✦ Subjects
Computer Science;Programming;Science;Software;Technical;Technology;Computers;Nonfiction;Design
📜 SIMILAR VOLUMES
<p><span>Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, Objective-C, and Swift. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP.</span></p><p><span><br></span></p><p><spa