инкапсуляция (encapsulation);
наследование (inheritance);
115
полиморфизм (polymorphism);
абстрагирование (abstraction);
модульность (modularity);
иерархия (hierarchy).
Инкапсуляция — свойство, при котором объекты содержат описание
атрибутов и действий одновременно [2]. Инкапсуляция — это процесс
отделения друг от друга отдельных элементов объекта, определяющих его
устройство и поведение [1]. Инкапсуляция служит для того, чтобы
изолировать интерфейс объекта, отражающий его внешнее поведение, от
внутренней реализации объекта. Объектный подход предполагает, что
собственные ресурсы, которыми могут манипулировать только операции
самого объекта, скрыты от внешней среды. Абстрагирование и инкапсуляция
являются взаимодополняющими: абстрагирование фокусирует внимание на
внешних особенностях объекта, а инкапсуляция (или, иначе, ограничение
доступа) не позволяет объектам-пользователям различать внутреннее
устройство объекта.
Наследование — метод определения объектов, при котором производные
объекты (потомки) наследуют свойства (атрибуты и действия) от своих
родителей [2]. Наследование свойств в объектно- ориентированном подходе
понимается как наследование атрибутов и методов, т. е. возможность
использования в производном объекте атрибутов и методов базового объекта.
Полиморфизм — свойство объектов, при котором действие с
одинаковыми именами вызывает различное поведение для различных
объектов. Полиморфизм предполагает возможность одинакового именования
разных действий. Эта особенность имеет два аспекта:
возможность одинакового именования статических методов;
возможность одинакового именования динамических методов.
В UML для описания полиморфизма вводятся понятия операции и
метода. У классов есть операции, которые определяют его поведение. В
116
некотором смысле операция — это набор общих сведений о поведении класса:
детали реализации никак не специфицированы операцией, но некоторый
комментарий по поводу реализации может быть дан в неформальном виде,
например на естественном языке. При этом каждый потомок класса может
предоставить метод, реализующий любую унаследованную операцию,
отличный от соответствующего метода предка.
Операция — это лишь описание какой-либо черты поведения объекта, а
метод — уже конкретная реализация.
Операции обязательно наследуются, т. е. распространяются вдоль
иерархии без каких-либо изменений, а методы могут перекрываться
потомками для реализации конкретных деталей поведения, присущих
объектам класса-потомка.
Абстрагирование — это выделение наиболее важных, существенных
характеристик некоторого объекта, которые отличают его от всех других
видов объектов и, таким образом, четко определяют его концептуальные
границы с точки зрения дальнейшего рассмотрения и анализа, и
игнорирование менее важных или незначительных деталей.
Абстрагирование
позволяет
управлять
сложностью
системы,
концентрируясь на существенных свойствах объекта. Абстрагирование
концентрирует внимание на внешних особенностях объекта и позволяет
отделить самые существенные особенности его поведения от деталей их
реализации. Выбор правильного набора абстракций для заданной предметной
области представляет собой главную задачу объектно-ориентированного
проектирования. Абстракция зависит от предметной области и точки зрения
— то, что важно в одном контексте, может быть не важно в другом. Объекты
и классы — основные абстракции предметной области.
Модульность — это свойство системы, связанное с возможностью ее
декомпозиции на ряд внутренне сильно сцепленных, но слабо связанных
между собой подсистем (модулей). Модульность снижает сложность системы,
117
позволяя выполнять независимую разработку отдельных модулей.
Инкапсуляция и модульность создают барьеры между абстракциями.
Иерархия — это ранжированная или упорядоченная система абстракций,
расположение их по уровням. Основными видами иерархических структур
применительно к сложным системам являются структура классов (иерархия по
номенклатуре) и структура объектов (иерархия по составу). Примерами
иерархии классов являются простое и множественное наследование (один
класс использует структурную или функциональную часть соответственно
одного или нескольких других классов), а иерархии объектов — агрегация [1].
Основные понятия объектно-ориентированного подхода - объект и класс.
Объект определяется как осязаемая реальность (tangible entity) — предмет
или явление, имеющие четко определяемое поведение. Объект обладает
состоянием, поведением и индивидуальностью; структура и поведение схожих
объектов определяют общий для них класс. Термины "экземпляр класса" и
"объект'' являются эквивалентными. Состояние объекта характеризуется
перечнем всех возможных (статических) свойств данного объекта и текущими
значениями (динамическими) каждого из этих свойств. Поведение
характеризует воздействие объекта на другие объекты и наоборот
относительно изменения состояния этих объектов и передачи сообщений.
Иначе говоря, поведение объекта полностью определяется его действиями.
Индивидуальность — это свойства объекта, отличающие его от всех других
объектов.
Определенное воздействие одного объекта на другой с целью вызвать
соответствующую реакцию называется операцией. Как правило, в объектных
и объектно-ориентированных языках операции, выполняемые над данным
объектом, называются методами и являются составной частью определения
класса.
Класс — это множество объектов, связанных общностью структуры и
поведения. Любой объект является экземпляром класса. Определение классов
118
и объектов — одна из самых сложных задач объектно-ориентированного
проектирования.
Следующую группу важных понятий объектного подхода составляют
наследование и полиморфизм. Понятие полиморфизма может быть
интерпретировано как способность класса принадлежать более чем одному
типу.
Наследование означает построение новых классов на основе
существующих с возможностью добавления или переопределения данных и
методов.
Обобщая эти определения, можно отметить, что объект — это типичный
представитель класса, а термины «экземпляр объекта» и «элемент класса»
равнозначны. На рис. 7.2 показаны отношения между классами, объектами и
предметами реального мира. Связь между объектами (атрибутами) —
информационное отображение функциональной, «родственной», видовой или
иной зависимости (подчиненности).
7.2.
Do'stlaringiz bilan baham: |