Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Принципы объектно-ориентированного програм-мирования



Принципы абстрагирования, ограничения доступа, модульности, иерархии, типизации, параллелизма и устойчивости.

Объектная модель имеет четыре главных принципа:

Без любого из этих принципов модель не будет объектно-ориентированной. Кроме главных, имеется три дополнительных принципа:

· сохраняемость или устойчивость

Эти принципы полезны в объектной модели, но не обязательны.

Абстрагирование - это выделение таких существенных характеристик объекта, которые отличают его от всех других видов объектов и таким образом чётко опреде­ляются особенности данного объекта с точки зрения дальнейшего его рассмотрения. Абстрагирование позволяет отделить самые существенные особенности поведения от несущественных. Абстракция определяет существенные характеристики некоторого объекта, которые отличают его от всех других видов объектов и четко очерчивает кон­цептуальную границу объекта с точки зрения наблюдателя.

Выделяют целый спектр абстракций: абстракция сущности, поведения, абстрак­ция виртуальной машины, произвольная абстракция.

Выбор достаточного множества абстракций, для заданной предметной области, является главной проблемой в объектном проектировании.

Инкапсуляция - это процесс разделения элементов объекта, определяющих его устройство и поведение. Элементы объекта могут быть отнесены к общедоступной, обособленной и защищенной части.

Абстракция и ограничение доступа дополняют друг друга: абстрагирование на­правлено на наблюдаемое поведение объекта, а инкапсуляция занимается внутрен­ним устройством. Практически это означает наличие двух частей в классе: интер­фейса и реализации, Интерфейс отражает внешнее поведение объекта, описывая аб­стракцию поведения всех объектов данного класса. Внутренняя реализация описыва­ет представ­ление этой абстракции и механизмы достижения желаемого поведения объекта. Разде­ление интерфейса и реализации позволяет защитить объекты от дета­лей реализации объектов более низкого уровня. Инкапсуляция позволяет вносить в программу измене­ния, сохраняя ее надежность и минимизируя затраты на этот про­цесс.

Модульность - это свойство системы, связанное с возможностью декомпозиции на ряд внутренне связанных, но слабо связанных между собой модулей. В языке C++ под модулями понимается раздельно компилируемые файлы.

Модульность - это разделение программы на раздельно компилируемые фраг­менты, имеющие между собой средства сообщения. Традиционным в C++ является помещение интерфейсной части модулей в отдельные файлы с расширением.h.

Иерархия - ранжированная (упорядоченная) система абстракций. Основными видами иерархических структур, применительно к сложным системам, является структура классов (иерархия "is -а") и структура объектов (иерархия "part of”). Прин­цип наследования позволяет упростить выражения абстракции, делая проект менее громоздким и более выразительным.

Наследование - это такая иерархичность абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. В подклассе, кроме того, мо­гут быть определены дополнительные атрибуты и методы. Суперклассы отражают наи­более общие, а подклассы более специализированные абстракции. Различают слу­чаи простого и множественного наследования. Если в языке или системе поддержи­вается единичное наследование классов, набор классов образует древовидную иерар­хию. При поддержании множественного наследования классы связаны в ориентиро­ванный граф с корнем, называемый решеткой классов.

Дополнительные элементы:

Типизация – ограничение, накладываемое на класс объектов, препятствующих взаимозаменяемости различных классов или сильно сужающее возможность такую возможность. Типизация позволяет защититься от использования объектов одного класса вместо другого или, по крайней мере, управлять таким использованием.

Параллелизм – свойство объектов находиться в активном или пассивном со­стоя­нии и различать активные и пассивные объекты между собой.

Сохраняемость /устойчивость - это свойство объекта существовать во вре­мени и/или пространстве, вне зависимости от процессов, породивших данный объ­ект. Выде­ляют следующие виды объектов, которые обладают различной степенью со­храняе­мости или устойчивости:

· Промежуточные результаты вычисления выражений.

· Локальные переменные вызова процедур.

· Собственные переменные (глобальные).

· Данные, сохраняющиеся между вызовами основной программы.

· Данные, которые переживают создавшую их программу.

Традиционно языки программирования реализовывают первые три уровня, а по­следние три связываются с технологией БД. Введение сохраняемости приводит нас к объектно-ориентированным базам данных.

43. Понятие объекта. Отношения между объектами.

Объект представляет собой особый опознаваемый предмет или сущность (реаль­ную или абстрактную), имеющий четко определенное функциональное назначение в данной предметной области. Объект характеризуется состоянием, поведением, инди­видуальностью. Структура и поведение одинаковых объектов описывается в общем для них классе. Термины ``экземпляр класса'' и ``объект класса'' взаимозаменяе­мы. Состояние объекта характеризуется перечнем всех его возможных свойств (обычно статических) и текущими значениями (обычно динамическими). Поведение объекта характеризуется изменением его состояний в процессе взаимодействия с другими объ­ектами посредством передачи сообщения.

Операцией называется определенное воздействие одного объекта над другим, с целью вызова соответствующей реакции. Выделяют пять основных видов опера­ций над объектами:

· Модификатор, изменяющий состояние объекта.

· Селектор, даёт доступ для определения состояния объекта без его изменения.

· Итератор, доступ к содержанию объекта по частям в определённой последователь­но­сти.

· Конструктор - создание и/или инициализация объекта.

· Деструктор - удаление объекта и/или освобождение занимаемой им памяти.

Индивидуальность - свойство, отличающее один объект от другого.

Сами по себе объекты не представляют интереса, цель системы реализуется только в процессе взаимодействие объектов между собой. Отношения между объек­тами: отношение двух любых объектов основывается на предположении, что каждый объект имеет информацию о другом объекте, операциях, которые над ним можно вы­полнить и об ожидаемом поведении.

Для объектно-ориентированного проектирования представляет интерес два типа отношений между объектами:

· Отношение использование/ связь, которое подразумевает возможность обмена сооб­щениями между объектами. В зависимости от того, как объект действует, он выполняет одну из трех ролей: actor (актер, деятель), объект, воздействующий на другие объекты, server (сервер), объект, подвергающий воздействию со стороны других объектов, agent (агент), объект, который может быть как (1) так и (2).

· Отношение включения/агрегации существует, когда один объект включает в себя другой объект. Т.е. один объект является элементом состояния другого объек­та. По отношению к таким объектам применяются термины сложный, составной, агрегированный. Между отношениями включения и использования существует взаимосвязь. Включение одних объектов в другие предпочтительнее в том плане, что при этом уменьшается число объектов, с которыми приходится оперировать на данном уровне описания. С другой стороны, использование одних объектов други­ми имеет преимущество, так как не возникает сильной зависимости между объек­тами, как в случае включения.

44. Сущность «класс». Отношения между классами.

Класс - множество объектов, связанных общностью структуры и поведением. Су­ществует явное разделение внутреннего и внешнего описания класса. Интерфейс­ная часть описания класса соответствует его внешнему проявлению, подчёркивает его аб­страктность, но скрывает структуру и особенности поведения.

Реализация составляет его внутреннее проявление и определяет особенности по­ведения.

Известно три основных типа отношений между классами:

· Обобщение/специализация

· Агрегирование объектов или отношение целое/часть

· Отношение ассоциативности отражает семантическую связь между классами, ко­торые не связаны никакими другими типами отношений.

Языки программирования реализуют несколько общих способов для отражения трех типов отношений между классами. ОО языки реализуют в разных комбинациях следующие механизмы отношений классов:

· Ассоциация (association), наиболее общий и неопределённый вид отношений. Обычно в процессе детализации проекта, детализация превращается в какую-то специализированную связь.

· Наследование (inheritance) или обобщение (generalization), наиболее эффектив­ный тип отношений, который используется, как для отражения общно­сти, так и для отражения ассоциативности.

· Агрегация (aggregation), описание одного класса включает описание другого.

· Зависимостью (dependence) называют отношение использования, согласно кото­рому изменение спецификации одного элемента может повлиять на другой элемент его использующий. Чаще всего зависимости применяются при работе с классами, чтобы отразить тот факт, что один класс использует другой в качестве аргумента.

· Инстанцирование (instantiation). Этот тип отношений, охватывает так же обоб­ще­ние и ассоциативность, но другим способом. В данном случае используется ме­ханизм конкретизации обобщения, за счёт использования классов-контейнеров, экземпляры которых состоят из наборов других объектов и могут быть, либо одно­родными, или неоднородными, состоящие из объектов разных классов, имеющие разный суперкласс.





Дата публикования: 2015-01-25; Прочитано: 581 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...