Объектно-ориентированный подход. Объектно_ориентированный_подход. Объектно ориентированный подход Мэтт Вайсфельд 5е международное издание ббк 32. 973. 2018
Скачать 5.43 Mb.
|
Boston • Columbus • New York • San Francisco • Amsterdam • Cape Town Dubai • London • Madrid • Milan • Munich • Paris • Montreal • Toronto • Delhi Mexico City • São Paulo • Sydney • Hong Kong • Seoul • Singapore • Taipei • Tokyo The Object-Oriented Thought Process Fifth Edition Matt Weisfeld Объектно- ориентированный подход Мэтт Вайсфельд 5-е международное издание ББК 32.973.2-018 УДК 004.42 В14 Вайсфельд Мэтт В14 Объектно-ориентированный подход. 5-е межд. изд. — СПб.: Питер, 2020. — 256 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-4461-1431-3 Объектно-ориентированное программирование (ООП) лежит в основе языков C++, Java, C#, Visual Basic .NET, Ruby, Objective-C и даже Swift. Не могут обойтись без объектов веб-технологии, ведь они используют JavaScript, Python и PHP. Именно поэтому Мэтт Вайсфельд советует выработать объектно-ориентированное мышление и только потом приступать к объектно-ориентированной разработке на конкретном языке про- граммирования. Эта книга написана разработчиком для разработчиков и позволяет выбрать оптимальные подходы для решения конкретных задач. Вы узнаете, как правильно применять наследование и композицию, поймете разницу между агрегацией и ассоциацией и перестанете путать интер- фейс и реализацию. Технологии программирования непрерывно меняются и развиваются, но объектно-ориен- тированные концепции не зависят от платформы и остаются неизменно эффективными. В этом издании основное внимание уделяется фундаментальным основам ООП: паттернам проектиро- вания, зависимостям и принципам SOLID, которые сделают ваш код понятным, гибким и хорошо сопровождаемым. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018 УДК 004.42 Права на издание получены по соглашению с Pearson Education Inc. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступ- ность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были действующими. ISBN 978-0135181966 англ. © 2019 Pearson Education, Inc. ISBN 978-5-4461-1431-3 © Перевод на русский язык ООО Издательство «Питер», 2020 © Издание на русском языке, оформление ООО Издательство «Питер», 2020 © Серия «Библиотека программиста», 2020 СОДЕРЖАНИЕ Введение........................................................................................................... 16 Глава 1. Введение.в.объектно-ориентированные.концепции............................. 21 Глава 2. Как.мыслить.объектно.......................................................................... 53 Глава 3. Прочие.объектно-ориентированные.концепции................................... 71 Глава 4. Анатомия.класса.................................................................................. 94 Глава 5. Руководство.по.проектированию.классов...........................................106 Глава 6. Проектирование.с.использованием.объектов.....................................123 Глава 7. Наследование.и.композиция...............................................................139 Глава 8. Фреймворки.и.повторное.использование:.проектирование. с.применением.интерфейсов.и.абстрактных.классов........................................162 Глава 9. Создание.объектов.и.объектно-ориентированное.проектирование....189 Глава 10. Паттерны.проектирования................................................................205 Глава 11. Избегание.зависимостей.и.тесно.связанных.классов........................222 Глава 12. Принципы.объектно-ориентированного.проектирования.SOLID........234 ОГЛАВЛЕНИЕ Благодарности .............................................................................. 14 Об авторе ..................................................................................... 15 Авторские.права.на.иллюстрации.................................................................. 15 От.издательства............................................................................................ 15 Введение ..................................................................................... 16 Что.нового.в.пятом.издании.......................................................................... 18 Целевая.аудитория....................................................................................... 19 Подход,.примененный.в.этой.книге............................................................... 20 Глава 1. Введение.в.объектно-ориентированные.концепции............................. 21 Фундаментальные.концепции....................................................................... 22 Объекты.и.унаследованные.системы............................................................. 23 Процедурное.программирование.в.сравнении.. с.объектно-ориентированным....................................................................... 24 Переход.с.процедурной.разработки.на.объектно-ориентированную............. 29 Процедурное.программирование............................................................. 29 Объектно-ориентированное.программирование...................................... 29 Что.такое.объект?.......................................................................................... 30 Данные.объектов..................................................................................... 30 Поведение.объектов................................................................................ 31 Что.такое.класс?............................................................................................ 35 Создание.объектов.................................................................................. 35 7 .Оглавление Атрибуты.................................................................................................. 37 Методы.................................................................................................... 37 Сообщения.............................................................................................. 38 Использование.диаграмм.классов.в.качестве.визуального.средства............. 38 Инкапсуляция.и.сокрытие.данных................................................................. 39 Интерфейсы............................................................................................. 39 Реализации.............................................................................................. 40 Реальный.пример.парадигмы.«интерфейс/реализация».......................... 41 Модель.парадигмы.«интерфейс/реализация».......................................... 41 Наследование............................................................................................... 43 Суперклассы.и.подклассы........................................................................ 44 Абстрагирование..................................................................................... 45 Отношения.«является.экземпляром»........................................................ 46 Полиморфизм............................................................................................... 47 Композиция.................................................................................................. 51 Абстрагирование..................................................................................... 51 Отношения.«содержит.как.часть»............................................................. 52 Резюме......................................................................................................... 52 Глава 2. Как.мыслить.объектно.......................................................................... 53 Разница.между.интерфейсом.и.реализацией................................................ 54 Интерфейс............................................................................................... 56 Реализация.............................................................................................. 57 Пример.интерфейса/реализации............................................................. 57 Использование.абстрактного.мышления.при.проектировании.. классов......................................................................................................... 63 Обеспечение.минимального.интерфейса.пользователя................................ 65 Определение.пользователей................................................................... 66 Поведения.объектов................................................................................ 67 Ограничения,.налагаемые.средой............................................................ 67 Определение.открытых.интерфейсов....................................................... 68 Определение.реализации........................................................................ 69 Резюме......................................................................................................... 70 Ссылки.......................................................................................................... 70 .Оглавление 8 Глава 3. Прочие.объектно-ориентированные.концепции................................... 71 Конструкторы................................................................................................ 71 Когда.осуществляется.вызов.конструктора?............................................ 72 Что.находится.внутри.конструктора?........................................................ 72 Конструктор.по.умолчанию...................................................................... 73 Использование.множественных.конструкторов........................................ 74 Перегрузка.методов................................................................................. 75 Использование.UML.для.моделирования.классов.................................... 76 Как.сконструирован.суперкласс?............................................................. 78 Проектирование.конструкторов............................................................... 79 Обработка.ошибок........................................................................................ 79 Игнорирование.проблем.......................................................................... 80 Проверка.на.предмет.проблем.и.прерывание.выполнения.приложения.....80 Проверка.на.предмет.проблем.и.попытка.устранить.неполадки............... 80 Выбрасывание.исключений...................................................................... 81 Важность.области.видимости........................................................................ 84 Локальные.атрибуты................................................................................ 84 Атрибуты.объектов................................................................................... 86 Атрибуты.классов..................................................................................... 88 Перегрузка.операторов................................................................................. 89 Множественное.наследование...................................................................... 90 Операции.с.объектами.................................................................................. 91 Резюме......................................................................................................... 93 Ссылки.......................................................................................................... 93 Глава 4. Анатомия.класса.................................................................................. 94 Имя.класса.................................................................................................... 94 Комментарии................................................................................................ 95 Атрибуты....................................................................................................... 97 Конструкторы................................................................................................ 98 Методы.доступа...........................................................................................101 Методы.открытых.интерфейсов...................................................................103 Методы.закрытых.реализаций......................................................................104 Резюме........................................................................................................105 Ссылки.........................................................................................................105 9 Оглавление. . Глава 5. Руководство.по.проектированию.классов...........................................106 Моделирование.реальных.систем................................................................106 Определение.открытых.интерфейсов...........................................................108 Минимальный.открытый.интерфейс........................................................108 Сокрытие.реализации.............................................................................109 Проектирование.надежных.конструкторов.(и,.возможно,.деструкторов)......110 Внедрение.обработки.ошибок.в.класс..........................................................111 Документирование.класса.и.использование.комментариев....................111 Создание.объектов.с.прицелом.на.взаимодействие................................112 Проектирование.с.учетом.повторного.использования..................................113 Проектирование.с.учетом.расширяемости...................................................113 Делаем.имена.описательными................................................................114 Абстрагирование.непереносимого.кода..................................................115 Обеспечение.возможности.осуществлять.копирование.. и.сравнение............................................................................................116 Сведение.области.видимости.к.минимуму..............................................116 Проектирование.с.учетом.сопровождаемости..............................................117 Использование.итерации.в.процессе.разработки...................................118 Тестирование.интерфейса......................................................................118 Использование.постоянства.объектов..........................................................120 Сериализация.и.маршалинг.объектов.....................................................121 Резюме........................................................................................................122 Ссылки.........................................................................................................122 Глава 6. Проектирование.с.использованием.объектов.....................................123 Руководство.по.проектированию..................................................................123 Проведение.соответствующего.анализа.................................................128 Составление.технического.задания........................................................128 Сбор.требований....................................................................................129 Разработка.прототипа.интерфейса.пользователя...................................129 Определение.классов.............................................................................129 Определение.ответственности.каждого.класса.......................................130 Определение.взаимодействия.классов.друг.с.другом.............................130 Создание.модели.классов.для.описания.системы...................................130 Прототипирование.интерфейса.пользователя........................................130 10 Оглавление Объектные.обертки......................................................................................131 Структурированный.код..........................................................................132 Обертывание.структурированного.кода..................................................133 Обертывание.непереносимого.кода........................................................135 Обертывание.существующих.классов.....................................................136 Резюме........................................................................................................137 Ссылки.........................................................................................................138 Глава 7. Наследование.и.композиция...............................................................139 Повторное.использование.объектов............................................................139 Наследование..............................................................................................141 Обобщение.и.конкретизация...................................................................145 Проектные.решения................................................................................146 Композиция.................................................................................................148 Почему.инкапсуляция.является.фундаментальной.. объектно-ориентированной.концепцией......................................................151 Как.наследование.ослабляет.инкапсуляцию............................................151 Подробный.пример.полиморфизма........................................................154 Ответственность.объектов......................................................................154 Абстрактные.классы,.виртуальные.методы.и.протоколы..........................158 Резюме........................................................................................................160 Ссылки.........................................................................................................160 |