русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Принципы объектно-ориентированной технологии


Дата добавления: 2013-12-24; просмотров: 2115; Нарушение авторских прав


Главные принципы объектно-ориентированного подхода: абстрагирование, инкапсуляция, модульность, иерархичность. Дополнительные принципы - типизация, параллелизм и сохраняемость. Называя их дополнительными,мы имеем в виду, что они полезны в объектной модели, но не обязательны. Каждый из перечисленных принципов сам по себе не нов, но в объектной модели они впервые применены в совокупности.

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

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

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



Иерархия — это упорядочение абстракций, расположение их по уровням. Как показывает практика, почти всегда число абстракций в системе намного превышает умственные возможности человека. В какой-то степени устранить это препятствие позволяет инкапсуляция, убрав из поля зрения внутреннее содержание абстракций. Модульность также упрощает задачу, объединяя логически связанные абстракции в группы. Но этого часто оказывается недостаточно. Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархических структур. Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия «is a») и структура объектов (иерархия «part of»).

Важным элементом объектно-ориентированных систем и основным видом иерархии «is a» является концепция наследования. Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование). Иными словами, наследование создает такую иерархию абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Часто подкласс достраивает или переписывает компоненты вышестоящего класса. Таким образом, наследование порождает иерархию «обобщение-специализация», в которой подкласс представляет собой специализированный частный случай своего суперкласса. Отношение «part of» (часть), в отличие от иерархии «is а», вводит иерархию агрегации. Агрегация позволяет физически сгруппировать логически связанные структуры, а наследование копирует эти общие группы в различные абстракции.

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

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

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

Спектр сохраняемости объектов во времени охватывает:

– промежуточные результаты вычисления выражений;

– локальные переменные в вызове процедур;

– собственные переменные, глобальные переменные и динамически создаваемые данные;

– данные, сохраняющиеся между сеансами выполнения программы;

– данные, сохраняемые при переходе на новую версию программы;

– данные, которые вообще переживают программу.

Традиционно, первыми тремя уровнями занимаются языки программирования, а последними — базы данных. Введение сохраняемости привело к объектно-ориентированным базам данных (OODB, object-oriented databases). В OODB имеет смысл сохранять не только данные, но и классы, так, чтобы программы могли правильно интерпретировать данные. Это создает большие трудности по мере увеличения объема данных, особенно, если класс объекта потребовалось изменить.

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

§ 6. Назначение и цели унифицированного языка моделирования. Основные концепции UML



<== предыдущая лекция | следующая лекция ==>
Обстоятельства и причины появления объектно-ориентированной технологии. Основные термины | Назначение и цели UML


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.