![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Принципы абстрагирования, ограничения доступа, модульности, иерархии, типизации, параллелизма и устойчивости.
Объектная модель имеет четыре главных принципа:
Без любого из этих принципов модель не будет объектно-ориентированной. Кроме главных, имеется три дополнительных принципа:
· сохраняемость или устойчивость
Эти принципы полезны в объектной модели, но не обязательны.
Абстрагирование - это выделение таких существенных характеристик объекта, которые отличают его от всех других видов объектов и таким образом чётко определяются особенности данного объекта с точки зрения дальнейшего его рассмотрения. Абстрагирование позволяет отделить самые существенные особенности поведения от несущественных. Абстракция определяет существенные характеристики некоторого объекта, которые отличают его от всех других видов объектов и четко очерчивает концептуальную границу объекта с точки зрения наблюдателя.
Выделяют целый спектр абстракций: абстракция сущности, поведения, абстракция виртуальной машины, произвольная абстракция.
Выбор достаточного множества абстракций, для заданной предметной области, является главной проблемой в объектном проектировании.
Инкапсуляция - это процесс разделения элементов объекта, определяющих его устройство и поведение. Элементы объекта могут быть отнесены к общедоступной, обособленной и защищенной части.
Абстракция и ограничение доступа дополняют друг друга: абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается внутренним устройством. Практически это означает наличие двух частей в классе: интерфейса и реализации, Интерфейс отражает внешнее поведение объекта, описывая абстракцию поведения всех объектов данного класса. Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения объекта. Разделение интерфейса и реализации позволяет защитить объекты от деталей реализации объектов более низкого уровня. Инкапсуляция позволяет вносить в программу изменения, сохраняя ее надежность и минимизируя затраты на этот процесс.
Модульность - это свойство системы, связанное с возможностью декомпозиции на ряд внутренне связанных, но слабо связанных между собой модулей. В языке C++ под модулями понимается раздельно компилируемые файлы.
Модульность - это разделение программы на раздельно компилируемые фрагменты, имеющие между собой средства сообщения. Традиционным в C++ является помещение интерфейсной части модулей в отдельные файлы с расширением.h.
Иерархия - ранжированная (упорядоченная) система абстракций. Основными видами иерархических структур, применительно к сложным системам, является структура классов (иерархия "is -а") и структура объектов (иерархия "part of”). Принцип наследования позволяет упростить выражения абстракции, делая проект менее громоздким и более выразительным.
Наследование - это такая иерархичность абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. В подклассе, кроме того, могут быть определены дополнительные атрибуты и методы. Суперклассы отражают наиболее общие, а подклассы более специализированные абстракции. Различают случаи простого и множественного наследования. Если в языке или системе поддерживается единичное наследование классов, набор классов образует древовидную иерархию. При поддержании множественного наследования классы связаны в ориентированный граф с корнем, называемый решеткой классов.
Дополнительные элементы:
Типизация – ограничение, накладываемое на класс объектов, препятствующих взаимозаменяемости различных классов или сильно сужающее возможность такую возможность. Типизация позволяет защититься от использования объектов одного класса вместо другого или, по крайней мере, управлять таким использованием.
Параллелизм – свойство объектов находиться в активном или пассивном состоянии и различать активные и пассивные объекты между собой.
Сохраняемость /устойчивость - это свойство объекта существовать во времени и/или пространстве, вне зависимости от процессов, породивших данный объект. Выделяют следующие виды объектов, которые обладают различной степенью сохраняемости или устойчивости:
· Промежуточные результаты вычисления выражений.
· Локальные переменные вызова процедур.
· Собственные переменные (глобальные).
· Данные, сохраняющиеся между вызовами основной программы.
· Данные, которые переживают создавшую их программу.
Традиционно языки программирования реализовывают первые три уровня, а последние три связываются с технологией БД. Введение сохраняемости приводит нас к объектно-ориентированным базам данных.
43. Понятие объекта. Отношения между объектами.
Объект представляет собой особый опознаваемый предмет или сущность (реальную или абстрактную), имеющий четко определенное функциональное назначение в данной предметной области. Объект характеризуется состоянием, поведением, индивидуальностью. Структура и поведение одинаковых объектов описывается в общем для них классе. Термины ``экземпляр класса'' и ``объект класса'' взаимозаменяемы. Состояние объекта характеризуется перечнем всех его возможных свойств (обычно статических) и текущими значениями (обычно динамическими). Поведение объекта характеризуется изменением его состояний в процессе взаимодействия с другими объектами посредством передачи сообщения.
Операцией называется определенное воздействие одного объекта над другим, с целью вызова соответствующей реакции. Выделяют пять основных видов операций над объектами:
· Модификатор, изменяющий состояние объекта.
· Селектор, даёт доступ для определения состояния объекта без его изменения.
· Итератор, доступ к содержанию объекта по частям в определённой последовательности.
· Конструктор - создание и/или инициализация объекта.
· Деструктор - удаление объекта и/или освобождение занимаемой им памяти.
Индивидуальность - свойство, отличающее один объект от другого.
Сами по себе объекты не представляют интереса, цель системы реализуется только в процессе взаимодействие объектов между собой. Отношения между объектами: отношение двух любых объектов основывается на предположении, что каждый объект имеет информацию о другом объекте, операциях, которые над ним можно выполнить и об ожидаемом поведении.
Для объектно-ориентированного проектирования представляет интерес два типа отношений между объектами:
· Отношение использование/ связь, которое подразумевает возможность обмена сообщениями между объектами. В зависимости от того, как объект действует, он выполняет одну из трех ролей: actor (актер, деятель), объект, воздействующий на другие объекты, server (сервер), объект, подвергающий воздействию со стороны других объектов, agent (агент), объект, который может быть как (1) так и (2).
· Отношение включения/агрегации существует, когда один объект включает в себя другой объект. Т.е. один объект является элементом состояния другого объекта. По отношению к таким объектам применяются термины сложный, составной, агрегированный. Между отношениями включения и использования существует взаимосвязь. Включение одних объектов в другие предпочтительнее в том плане, что при этом уменьшается число объектов, с которыми приходится оперировать на данном уровне описания. С другой стороны, использование одних объектов другими имеет преимущество, так как не возникает сильной зависимости между объектами, как в случае включения.
44. Сущность «класс». Отношения между классами.
Класс - множество объектов, связанных общностью структуры и поведением. Существует явное разделение внутреннего и внешнего описания класса. Интерфейсная часть описания класса соответствует его внешнему проявлению, подчёркивает его абстрактность, но скрывает структуру и особенности поведения.
Реализация составляет его внутреннее проявление и определяет особенности поведения.
Известно три основных типа отношений между классами:
· Обобщение/специализация
· Агрегирование объектов или отношение целое/часть
· Отношение ассоциативности отражает семантическую связь между классами, которые не связаны никакими другими типами отношений.
Языки программирования реализуют несколько общих способов для отражения трех типов отношений между классами. ОО языки реализуют в разных комбинациях следующие механизмы отношений классов:
· Ассоциация (association), наиболее общий и неопределённый вид отношений. Обычно в процессе детализации проекта, детализация превращается в какую-то специализированную связь.
· Наследование (inheritance) или обобщение (generalization), наиболее эффективный тип отношений, который используется, как для отражения общности, так и для отражения ассоциативности.
· Агрегация (aggregation), описание одного класса включает описание другого.
· Зависимостью (dependence) называют отношение использования, согласно которому изменение спецификации одного элемента может повлиять на другой элемент его использующий. Чаще всего зависимости применяются при работе с классами, чтобы отразить тот факт, что один класс использует другой в качестве аргумента.
· Инстанцирование (instantiation). Этот тип отношений, охватывает так же обобщение и ассоциативность, но другим способом. В данном случае используется механизм конкретизации обобщения, за счёт использования классов-контейнеров, экземпляры которых состоят из наборов других объектов и могут быть, либо однородными, или неоднородными, состоящие из объектов разных классов, имеющие разный суперкласс.
Дата публикования: 2015-01-25; Прочитано: 618 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!