Абстрагирование - это выделение таких существенных характеристик объекта, которые отличают его от всех других видов объектов и таким образом чётко определяются особенности данного объекта с точки зрения дальнейшего его рассмотрения. Абстракция определяет существенные характеристики некоторого объекта, которые отличают его от всех других видов объектов и четко очерчивает концептуальную границу объекта с точки зрения наблюдателя.
Выделяют целый спектр абстракций: абстракция сущности, поведения, абстракция виртуальной машины, произвольная абстракция.
Выбор достаточного множества абстракций, для заданной предметной области, является главной проблемой в объектном проектировании.
Инкапсуляция - это процесс разделения элементов объекта, определяющих его устройство и поведение. Элементы объекта могут быть отнесены к общедоступной, обособленной и защищенной части.
Абстракция и ограничение доступа дополняют друг друга: абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается внутренним устройством. Практически это означает наличие двух частей в классе: интерфейса и реализации, Интерфейс отражает внешнее поведение объекта, описывая абстракцию поведения всех объектов данного класса. Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения объекта. Разделение интерфейса и реализации позволяет защитить объекты от деталей реализации объектов более низкого уровня. Инкапсуляция позволяет вносить в программу изменения, сохраняя ее надежность и минимизируя затраты на этот процесс.
Модульность - это свойство системы, связанное с возможностью декомпозиции на ряд внутренне связанных, но слабо связанных между собой модулей. В языке C++ под модулями понимается раздельно компилируемые файлы.
Модульность - это разделение программы на раздельно компилируемые фрагменты, имеющие между собой средства сообщения. Традиционным в C++ является помещение интерфейсной части модулей в отдельные файлы с расширением .h.
Иерархия - ранжированная (упорядоченная) система абстракций. Основными видами иерархических структур, применительно к сложным системам, является структура классов (иерархия "is -а") и структура объектов (иерархия "part of”). Принцип наследования позволяет упростить выражения абстракции, делая проект менее громоздким и более выразительным.
Наследование - это такая иерархичность абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. В подклассе, кроме того, могут быть определены дополнительные атрибуты и методы. Суперклассы отражают наиболее общие, а подклассы более специализированные абстракции. Различают случаи простого и множественного наследования. Если в языке или системе поддерживается единичное наследование классов, набор классов образует древовидную иерархию. При поддержании множественного наследования классы связаны в ориентированный граф с корнем, называемый решеткой классов.
Дополнительные элементы:
Типизация – ограничение, накладываемое на класс объектов, препятствующих взаимозаменяемости различных классов или сильно сужающее возможность такую возможность. Типизация позволяет защититься от использования объектов одного класса вместо другого или, по крайней мере, управлять таким использованием.
Параллелизм – свойство объектов находиться в активном или пассивном состоянии и различать активные и пассивные объекты между собой.
Сохраняемость /устойчивость - это свойство объекта существовать во времени и/или пространстве, вне зависимости от процессов, породивших данный объект. Выделяют следующие виды объектов, которые обладают различной степенью сохраняемости или устойчивости:
· Промежуточные результаты вычисления выражений.
· Локальные переменные вызова процедур.
· Собственные переменные (глобальные).
· Данные, сохраняющиеся между вызовами основной программы.
· Данные остающиеся без изменений в различных версиях программы.
· Данные, которые переживают создавшую их программу.
Дата: 2019-12-10, просмотров: 305.