Объектно-ориентированный подход

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 и даже Swift. Не могут обойтись без объектов веб-технологии, ведь они используют JavaScript, Python и PHP. Именно поэтому Мэтт Вайсфельд советует выработать объектно-ориентированное мышление и только потом приступать к объектно-ориентированной разработке на конкретном языке программирования. Эта книга написана разработчиком для разработчиков и позволяет выбрать оптимальные подходы для решения конкретных задач. Вы узнаете, как правильно применять наследование и композицию, поймете разницу между агрегацией и ассоциацией и перестанете путать интерфейс и реализацию. Технологии программирования непрерывно меняются и развиваются, но объектно-ориентированные концепции не зависят от платформы и остаются неизменно эффективными. В этом издании основное внимание уделяется фундаментальным основам ООП: паттернам проектирования, зависимостям и принципам SOLID, которые сделают ваш код понятным, гибким и хорошо сопровождаемым.

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

Language: Russian
Commentary: Vector PDF
Pages: 256
City: СПб.
Tags: Design Patterns; Best Practices; Object-Oriented Programming; SOLID; Error Handling; User Interface; UML; Programming Paradigms; Polymorphism; Inheritance; Code Reusability; Composition; Abstract Thinking; Class Design; Java; C#

Благодарности
Об авторе
Авторские права на иллюстрации
От издательства
Введение
Что нового в пятом издании
Целевая аудитория
Подход, примененный в этой книге
Глава 1. Введение в объектно-ориентированные концепции
Фундаментальные концепции
Объекты и унаследованные системы
Процедурное программирование в сравнении с объектно-ориентированным
Переход с процедурной разработки на объектно-ориентированную
Процедурное программирование
Объектно-ориентированное программирование
Что же такое объект?
Данные объектов
Поведения объектов
Что такое класс?
Создание объектов
Атрибуты
Методы
Сообщения
Использование диаграмм классов в качестве визуального средства
Инкапсуляция и сокрытие данных
Интерфейсы
Реализации
Реальный пример парадигмы «интерфейс/реализация»
Модель парадигмы «интерфейс/реализация»
Наследование
Суперклассы и подклассы
Абстрагирование
Отношения «является экземпляром»
Полиморфизм
Композиция
Абстрагирование
Отношения «содержит как часть»
Резюме
Глава 2. Как мыслить объектно
Разница между интерфейсом и реализацией
Интерфейс
Реализация
Пример интерфейса/реализации
Использование абстрактного мышления при проектировании классов
Обеспечение минимального интерфейса пользователя
Определение пользователей
Поведения объектов
Ограничения, налагаемые средой
Определение открытых интерфейсов
Определение реализации
Резюме
Ссылки
Глава 3. Прочие объектно-ориентированные концепции
Конструкторы
Когда осуществляется вызов конструктора?
Что находится внутри конструктора?
Конструктор по умолчанию
Использование множественных конструкторов
Перегрузка методов
Использование UML для моделирования классов
Как сконструирован суперкласс?
Проектирование конструкторов
Обработка ошибок
Игнорирование проблем
Проверка на предмет проблем и прерывание выполнения приложения
Проверка на предмет проблем и попытка устранить неполадки
Выбрасывание исключений
Важность области видимости
Локальные атрибуты
Атрибуты объектов
Атрибуты классов
Перегрузка операторов
Множественное наследование
Операции с объектами
Резюме
Ссылки
Глава 4. Анатомия класса
Имя класса
Комментарии
Атрибуты
Конструкторы
Методы доступа
Методы открытых интерфейсов
Методы закрытых реализаций
Резюме
Ссылки
Глава 5. Руководство по проектированию классов
Моделирование реальных систем
Определение открытых интерфейсов
Минимальный открытый интерфейс
Сокрытие реализации
Проектирование надежных конструкторов (и, возможно, деструкторов)
Внедрение обработки ошибок в класс
Документирование класса и использование комментариев
Создание объектов с прицелом на взаимодействие
Проектирование с учетом повторного использования
Проектирование с учетом расширяемости
Делаем имена описательными
Абстрагирование непереносимого кода
Обеспечение возможности осуществлять копирование и сравнение
Сведение области видимости к минимуму
Проектирование с учетом сопровождаемости
Использование итерации в процессе разработки
Тестирование интерфейса
Использование постоянства объектов
Сериализация и маршалинг объектов
Резюме
Ссылки
Глава 6. Проектирование с использованием объектов
Руководство по проектированию
Проведение соответствующего анализа
Составление технического задания
Сбор требований
Разработка прототипа интерфейса пользователя
Определение классов
Определение ответственности каждого класса
Определение взаимодействия классов друг с другом
Создание модели классов для описания системы
Прототипирование интерфейса пользователя
Объектные обертки
Структурированный код
Обертывание структурированного кода
Обертывание непереносимого кода
Обертывание существующих классов
Резюме
Ссылки
Глава 7. Наследование и композиция
Повторное использование объектов
Наследование
Обобщение и конкретизация
Проектные решения
Композиция
Почему инкапсуляция является фундаментальной объектно-ориентированной концепцией
Как наследование ослабляет инкапсуляцию
Подробный пример полиморфизма
Ответственность объектов
Абстрактные классы, виртуальные методы и протоколы
Резюме
Ссылки
Глава 8. Фреймворки и повторное использование: проектирование с применением интерфейсов и абстрактных классов
Код: использовать повторно или нет?
Что такое фреймворк?
Что такое контракт?
Абстрактные классы
Интерфейсы
Связываем все воедино
Код, выдерживающий проверку компилятором
Заключение контракта
Системные «точки расширения»
Пример из сферы электронного бизнеса
Проблема, касающаяся электронного бизнеса
Подход без повторного использования кода
Решение для электронного бизнеса
Объектная модель UML
Резюме
Ссылки
Глава 9. Создание объектов и объектно-ориентированное проектирование
Отношения композиции
Поэтапное создание
Типы композиции
Агрегации
Ассоциации
Использование ассоциаций в сочетании с агрегациями
Избегание зависимостей
Кардинальность
Ассоциации, включающие множественные объекты
Необязательные ассоциации
Связываем все воедино: пример
Резюме
Ссылки
Глава 10. Паттерны проектирования
Чем хороши паттерны проектирования?
Схема «Модель — Представление — Контроллер» в языке Smalltalk
Типы паттернов проектирования
Порождающие паттерны
Структурные паттерны
Паттерны поведения
Антипаттерны
Заключение
Ссылки
Глава 11. Избегание зависимостей и тесно связанных классов
Композиция против наследования и внедрения зависимостей
1. Наследование
2. Композиция
Внедрение зависимостей
Внедрение с помощью конструктора
Заключение
Ссылки
Глава 12. Принципы объектно-ориентированного проектирования SOLID
Принципы объектно-ориентированной разработки SOLID
1. SRP: принцип единственной ответственности
2. OCP: принцип открытости/закрытости
3. LSP: принцип подстановки Лисков
4. ISP: принцип разделения интерфейса
5. DIP: принцип инверсии зависимостей
Заключение
Ссылки
Об обложке