ebook img

The Object-Oriented Thought Process PDF

304 Pages·2013·8.597 MB·English
by  WeisfeldMatt
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview The Object-Oriented Thought Process

ББК 32.988.02-018.1 УДК 004.43 В1 Вайсфельд М. В1 Объектно-ориентированное мышление. — СПб.: Питер, 2014. — 304 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-496-00793-1 Объектно-ориентированное программирование — это фундамент современных языков програм- мирования, включая C++, Java, C#, Visual Basic, .NET, Ruby и Objective-C. Кроме того, объекты лежат в основе многих веб-технологий, например JavaScript, Python и PHP. Объектно-ориентированное программирование обеспечивает правильные методики проектирова- ния, переносимость кода и его повторное использование, однако для того, чтобы все это полностью понять, необходимо изменить свое мышление. Разработчики, являющиеся новичками в сфере объектно- ориентированного программирования, не должны поддаваться искушению перейти непосредственно к конкретному языку программирования (например, Objective-C, VB .NET, C++, C#, .NET или Java) или моделирования (например, UML), а вместо этого сначала уделить время освоению того, что автор книги Мэтт Вайсфельд называет объектно-ориентированным мышлением. Несмотря на то что технологии программирования изменяются и эволюционируют с годами, объектно-ориентированные концепции остаются прежними — при этом не важно, какой именно является платформа. 12+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.988.02-018.1 УДК 004.43 Права на издание получены по соглашению с Addison-Wesley Longman. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения вла- дельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как на- дежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-0321861276 англ. Copyright © 2013 by Pearson Education, Inc. ISBN 978-5-496-00793-1 © Перевод на русский язык ООО Издательство «Питер», 2014 © Издание на русском языке, оформление ООО Издательство «Питер», 2014 Краткое содержание Об авторе ..............................................................................................................13 Благодарности .....................................................................................................14 От издательства ...................................................................................................14 Введение ..............................................................................................................15 Глава 1. Введение в объектно-ориентированные концепции .................................20 Глава 2. Как мыслить объектно ..............................................................................51 Глава 3. Продвинутые объектно-ориентированные концепции ..............................67 Глава 4. Анатомия класса ......................................................................................88 Глава 5. Руководство по проектированию классов................................................100 Глава 6. Проектирование с использованием объектов .........................................117 Глава 7. Наследование и композиция ...................................................................131 Глава 8. Фреймворки и повторное использование: проектирование с применением интерфейсов и абстрактных классов ............................................153 Глава 9. Создание объектов и объектно-ориентированное проектирование ........180 Глава 10. Создание объектных моделей ...............................................................194 Глава 11. Объекты и переносимые данные: XML и JSON ......................................208 Глава 12. Постоянные объекты: сериализация, маршалинг и реляционные базы данных ..................................................................................229 Глава 13. Объекты в веб-службах, мобильных и гибридных приложениях .............246 Глава 14. Объекты и клиент-серверные приложения ............................................272 Глава 15. Шаблоны проектирования ....................................................................285 Оглавление Об авторе ..............................................................................................................13 Благодарности .....................................................................................................14 От издательства ...................................................................................................14 Введение ..............................................................................................................15 Что нового в четвертом издании .............................................................................17 Целевая аудитория ................................................................................................17 Подход, использованный в этой книге ....................................................................18 Соглашения, принятые в книге ...............................................................................19 Глава 1. Введение в объектно-ориентированные концепции .................................20 Фундаментальные концепции ................................................................................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 Оглавление 7 Глава 2. Как мыслить объектно ..............................................................................51 Разница между интерфейсом и реализацией .........................................................52 Интерфейс .......................................................................................................54 Реализация ......................................................................................................54 Пример интерфейса/реализации .....................................................................55 Использование абстрактного мышления при проектировании классов ..................59 Обеспечение самого минимального интерфейса пользователя из возможных .......62 Определение пользователей ............................................................................63 Поведения объектов ........................................................................................64 Ограничения, налагаемые средой ....................................................................64 Определение открытых интерфейсов ...............................................................64 Определение реализации ................................................................................65 Резюме ..................................................................................................................66 Ссылки ...................................................................................................................66 Глава 3. Продвинутые объектно-ориентированные концепции ..............................67 Конструкторы .........................................................................................................67 Когда осуществляется вызов конструктора ......................................................68 Что находится внутри конструктора ..................................................................68 Конструктор по умолчанию...............................................................................68 Использование множественных конструкторов ................................................69 Перегрузка методов .........................................................................................70 Использование UML для моделирования классов ............................................71 Как сконструирован суперкласс .......................................................................73 Проектирование конструкторов .......................................................................73 Обработка ошибок .................................................................................................74 Игнорирование проблем ..................................................................................74 Проверка на предмет проблем и прерывание выполнения приложения ...........75 Проверка на предмет проблем и попытка устранить неполадки .......................75 Выбрасывание исключений ..............................................................................76 Важность области видимости .................................................................................78 Локальные атрибуты ........................................................................................78 Атрибуты объектов ...........................................................................................80 Атрибуты классов .............................................................................................82 Перегрузка операторов ..........................................................................................83 Множественное наследование ...............................................................................84 Операции с объектами ...........................................................................................85 Резюме ..................................................................................................................86 Ссылки ...................................................................................................................86 Примеры кода, использованного в этой главе ........................................................87 Глава 4. Анатомия класса ......................................................................................88 Имя класса .............................................................................................................88 Комментарии .........................................................................................................90 Атрибуты ................................................................................................................90 Конструкторы .........................................................................................................92 Методы доступа .....................................................................................................94 Методы открытых интерфейсов..............................................................................96 Методы закрытых реализаций ................................................................................97 Резюме ..................................................................................................................97 8 Оглавление Ссылки ...................................................................................................................97 Примеры кода, использованного в этой главе ........................................................98 Глава 5. Руководство по проектированию классов................................................100 Моделирование реальных систем .........................................................................100 Определение открытых интерфейсов ....................................................................101 Минимальный открытый интерфейс ................................................................101 Скрытие реализации .......................................................................................102 Проектирование надежных конструкторов (и, возможно, деструкторов) ...............103 Внедрение обработки ошибок в класс ...................................................................104 Документирование класса и использование комментариев ............................104 Создание объектов с прицелом на взаимодействие ........................................105 Проектирование с учетом повторного использования ...........................................106 Проектирование с учетом расширяемости ............................................................106 Делаем имена описательными ........................................................................106 Абстрагирование непереносимого кода ..........................................................107 Обеспечение возможности осуществлять копирование и сравнение ..............108 Сведение области видимости к минимуму ......................................................108 Класс должен отвечать за себя ........................................................................109 Проектирование с учетом сопровождаемости .......................................................111 Использование итерации в процессе разработки ...........................................111 Тестирование интерфейса ..............................................................................112 Использование постоянства объектов ...................................................................114 Резюме .................................................................................................................115 Ссылки ..................................................................................................................115 Примеры кода, использованного в этой главе .......................................................116 Глава 6. Проектирование с использованием объектов .........................................117 Руководство по проектированию ...........................................................................117 Проведение соответствующего анализа .........................................................121 Составление технического задания .................................................................121 Сбор требований ............................................................................................122 Разработка прототипа интерфейса пользователя ...........................................122 Определение классов .....................................................................................123 Определение ответственности каждого класса ...............................................123 Определение взаимодействия классов друг с другом .....................................123 Создание модели классов для описания системы ...........................................123 Прототипирование интерфейса пользователя ................................................123 Объектные обертки ...............................................................................................124 Структурированный код ..................................................................................125 Обертывание структурированного кода ..........................................................126 Обертывание непереносимого кода ................................................................128 Обертывание существующих классов .............................................................129 Резюме .................................................................................................................130 Ссылки ..................................................................................................................130 Глава 7. Наследование и композиция ...................................................................131 Повторное использование объектов......................................................................131 Наследование .......................................................................................................133 Обобщение и конкретизация ...........................................................................135 Проектные решения ........................................................................................136 Оглавление 9 Композиция ..........................................................................................................138 Почему инкапсуляция является фундаментальной объектно-ориентированной концепцией ...........................................................................................................141 Как наследование ослабляет инкапсуляцию ....................................................142 Подробный пример полиморфизма ................................................................144 Ответственность объектов ..............................................................................144 Абстрактные классы, виртуальные методы и протоколы ..................................148 Резюме .................................................................................................................150 Ссылки ..................................................................................................................150 Примеры кода, использованного в этой главе .......................................................151 Глава 8. Фреймворки и повторное использование: проектирование с применением интерфейсов и абстрактных классов ............................................153 Код: использовать повторно или нет? ....................................................................153 Что такое фреймворк ............................................................................................154 Что такое контракт ................................................................................................156 Абстрактные классы ........................................................................................157 Интерфейсы ....................................................................................................160 Связываем все воедино ..................................................................................162 Код, выдерживающий проверку компилятором ...............................................165 Заключение контракта.....................................................................................165 Системные «точки расширения» ......................................................................168 Пример из сферы электронного бизнеса...............................................................168 Проблема, касающаяся электронного бизнеса ...............................................168 Подход без повторного использования кода ...................................................169 Решение для электронного бизнеса ................................................................172 Объектная модель UML ...................................................................................172 Резюме .................................................................................................................176 Ссылки ..................................................................................................................177 Примеры кода, использованного в этой главе .......................................................177 Глава 9. Создание объектов и объектно-ориентированное проектирование ........180 Отношения композиции ........................................................................................180 Поэтапное создание ..............................................................................................182 Типы композиции ..................................................................................................184 Агрегации .......................................................................................................185 Ассоциации .....................................................................................................186 Использование ассоциаций в сочетании с агрегациями ..................................186 Избегание зависимостей ......................................................................................187 Кардинальность ....................................................................................................188 Ассоциации, включающие множественные объекты ........................................190 Необязательные ассоциации ..........................................................................191 Связываем все воедино: пример ...........................................................................191 Резюме .................................................................................................................193 Ссылки ..................................................................................................................193 Глава 10. Создание объектных моделей ...............................................................194 Что такое UML .......................................................................................................194 Структура диаграммы класса ................................................................................195 Атрибуты и методы ................................................................................................197 10 Оглавление Атрибуты .........................................................................................................197 Методы ...........................................................................................................197 Обозначения доступа ............................................................................................198 Наследование .......................................................................................................199 Интерфейсы ..........................................................................................................200 Композиция ..........................................................................................................201 Агрегации .......................................................................................................202 Ассоциации .....................................................................................................202 Кардинальность ....................................................................................................204 Резюме .................................................................................................................206 Ссылки ..................................................................................................................206 Глава 11. Объекты и переносимые данные: XML и JSON ......................................208 Переносимые данные............................................................................................209 XML ......................................................................................................................210 XML в противопоставлении с HTML .......................................................................211 XML и объектно-ориентированные языки программирования ...............................212 Обмен данными между двумя компаниями ............................................................213 Валидация документа с определением типа документа (DTD) ...............................214 Включение определения типа документа в XML-документ .....................................216 Использование CSS ..............................................................................................221 JavaScript Object Notation (JSON) ...........................................................................223 Резюме .................................................................................................................228 Ссылки ..................................................................................................................228 Глава 12. Постоянные объекты: сериализация, маршалинг и реляционные базы данных ..................................................................................229 Основные положения, касающиеся постоянных объектов .....................................229 Сохранение объекта в плоском файле ...................................................................231 Сериализация файла ......................................................................................232 Еще раз о реализации и интерфейсе ...............................................................234 А как насчет методов? .....................................................................................235 Использование XML в процессе сериализации .....................................................236 Запись в реляционную базу данных .......................................................................238 Резюме .................................................................................................................242 Ссылки ..................................................................................................................242 Примеры кода, использованного в этой главе .......................................................243 Глава 13. Объекты в веб-службах, мобильных и гибридных приложениях .............246 Эволюция распределенных вычислений ................................................................246 Основанные на объектах языки сценариев ............................................................247 Пример валидации с использованием JavaScript...................................................250 Объекты на веб-странице ......................................................................................253 JavaScript-объекты ..........................................................................................253 Элементы управления веб-страницы ..............................................................255 Аудиопроигрыватели ......................................................................................256 Видеопроигрыватели ......................................................................................257 Flash ................................................................................................................257 Распределенные объекты и корпоративные вычисления .......................................258 Common Object Request Broker Architecture (CORBA) .......................................259 Определение веб-служб .................................................................................264

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.