- •220400 «Программное обеспечение вычислительных комплексов и автоматизированных систем»
- •Глава 1. Понятие и сущность моделирования. Место компьютерного моделирования в задачах изучения процессов и явлений
- •§ 1. Понятие модели. Функции моделей и их классификация
- •1.1. Понятие и функции моделей
- •1.2. Классификация моделей
- •§ 2. Структура моделей
- •2.1. Структура модели и ее основные составляющие
- •2.2. Анализ и синтез
- •§ 3. Виды моделирования. Понятие и сущность компьютерного моделирования
- •3.1. Виды моделирования
- •2.3. Требования к модели
- •3.2. Понятие и сущность компьютерного моделирования
- •3.3. Искусство моделирования. Действия, выполняемые в процессе моделирования
- •§ 4. Моделирование как искусство. Этапы процесса моделирования
- •4.1. Этапы процесса моделирования
- •4.2. Постановка задачи и определение типа модели
- •4.3. Формулирование модели
- •4.4. Проверка модели
- •4.5. Стратегическое и тактическое планирование
- •4.6. Экспериментирование и анализ чувствительности
- •4.7. Реализация замысла и документирование
- •Глава 2. Объектно-ориентированная технология как современная парадигма компьютерного моделирования. Основные сведения о языке uml
- •§ 5. Объектно-ориентированная технология как современная парадигма компьютерного моделирования
- •5.1. Обстоятельства и причины появления объектно-ориентированной технологии. Основные термины
- •В общем случае объекты обладают двумя качествами:
- •5.2. Принципы объектно-ориентированной технологии
- •§ 6. Назначение и цели унифицированного языка моделирования. Основные концепции uml
- •6.1. Назначение и цели uml
- •6.2. Основные концепции uml
- •§ 7. Статическое представление модели
- •7.1. Классификаторы
- •Типы классификаторов
- •7.2. Отношения
- •7.3. Ограничения
- •§ 8. Структурные представления модели
- •8.1. Представление вариантов использования
- •Виды отношений вариантов использования
- •8.2. Представления программной реализации и развертывания
- •§ 9. Представление в виде конечного автомата как один из видов динамического представления модели
- •9.1. Понятие конечного автомата. Определение события и состояния
- •9.2. Понятие и структура перехода. Типы переходов
- •§ 10. Представления деятельности и взаимодействия как виды динамического представления модели
- •10.1. Представление деятельности
- •10.2. Представление взаимодействия
- •§ 11. Представление управления моделью и дополнительные возможности языка uml
- •11.1. Представление управления моделью
- •11.2. Расширение возможностей языка uml
- •Глава 3. Понятие и виды имитационного моделирования. Инструментарий имитационного моделирования: назначение и краткий обзор
- •§ 12. Понятие и виды имитационного моделирования. Роль языков имитационного моделирования в решении задач компьютерного моделирования
- •12.1. Понятие и виды имитационного моделирования
- •12.2. Роль языков имитационного моделирования в решении задач компьютерного моделирования
- •§ 13. Классификация и краткая характеристика языков имитационного моделирования. Среда и функциональная структура языка моделирования gpss
- •13.1. Классификация языков имитационного моделирования
- •13.2. Принципы организации системы gpss
- •Глава 4. Общие понятия о графическом моделировании и геоинформационных системах
- •§ 14. Способы представления и принципы обработки графических данных на персональных эвм
- •14.1. Представление в компьютере графической информации. Растровая и векторная графика
- •14.2. Модели представления цвета в графических изображениях
- •14.3. Форматы графических файлов
- •14.4. Принципы обработки графических данных на персональных компьютерах
- •§ 15. Геоинформационные системы и особенности моделирования земной поверхности
- •15.1. Основные понятия и организация гис
- •15.2. Проблемы качества векторных цифровых карт для гис
- •§ 16. Классификация программного обеспечения гис и реализация гис-проектов
- •16.1. Классификация и краткая характеристика программного обеспечения гис
- •16.2. Порядок создания гис-проектов
- •Компьютерные модели в информационных технологиях на железнодорожном транспорте
- •127994, Москва, ул.Образцова, 15
5.2. Принципы объектно-ориентированной технологии
Главные принципы объектно-ориентированного подхода: абстрагирование, инкапсуляция, модульность, иерархичность. Дополнительные принципы - типизация, параллелизм и сохраняемость. Называя их дополнительными, мы имеем в виду, что они полезны в объектной модели, но не обязательны. Каждый из перечисленных принципов сам по себе не нов, но в объектной модели они впервые применены в совокупности.
Абстрагирование является одним из основных принципов, используемых для решения сложных задач. Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя.
Инкапсуляция. Если абстрагирование направлено на наблюдаемое поведение объекта, то за его внутреннюю организацию отвечает инкапсуляция. Инкапсуляция — это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации. Таким образом, абстракция и инкапсуляция дополняют друг друга. Абстракция работает только вместе с инкапсуляцией. Практически это означает наличие двух частей в классе: интерфейса и реализации. Интерфейс отражает внешнее поведение объекта, описывая абстракцию поведения всех объектов данного класса. Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения объекта. Принцип разделения интерфейса и реализации соответствует сути вещей: в интерфейсной части собрано все, что касается взаимодействия данного объекта с любыми другими объектами; реализация скрывает от других объектов все детали, не имеющие отношения к процессу взаимодействия объектов.
Модульность. Разделение программы на модули позволяет уменьшить ее сложность, однако гораздо важнее тот факт, что внутри модульной программы создаются множества хорошо определенных и документированных интерфейсов, которые важны для исчерпывающего понимания программы в целом. Модули в программе выполняют роль физических контейнеров, в которые помещаются определения классов и объектов. Правильное разделение программы на модули является почти такой же сложной задачей, как выбор правильного набора абстракций. Модули следует стремиться строить таким образом, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями.
Иерархия — это упорядочение абстракций, расположение их по уровням. Как показывает практика, почти всегда число абстракций в системе намного превышает умственные возможности человека. В какой-то степени устранить это препятствие позволяет инкапсуляция, убрав из поля зрения внутреннее содержание абстракций. Модульность также упрощает задачу, объединяя логически связанные абстракции в группы. Но этого часто оказывается недостаточно. Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархических структур. Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия «is a») и структура объектов (иерархия «part of»).
Важным элементом объектно-ориентированных систем и основным видом иерархии «is a» является концепция наследования. Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование). Иными словами, наследование создает такую иерархию абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Часто подкласс достраивает или переписывает компоненты вышестоящего класса. Таким образом, наследование порождает иерархию «обобщение-специализация», в которой подкласс представляет собой специализированный частный случай своего суперкласса. Отношение «part of» (часть), в отличие от иерархии «is а», вводит иерархию агрегации. Агрегация позволяет физически сгруппировать логически связанные структуры, а наследование копирует эти общие группы в различные абстракции.
Типизация — это способ защититься от использования объектов одного класса вместо другого, или, по крайней мере, управлять таким использованием. Типизация заставляет разработчика прикладной системы выражать абстракции так, чтобы инструментальное средство, используемое в реализации, поддерживало соблюдение принятых проектных решений. Большую гибкость при этом разработчику придает механизм полиморфных операций. Полиморфизм определяет, что одно и то же имя может означать объекты разных типов, но, имея общего предка, все они имеют и общее подмножество операций, которые можно над ними выполнять. Противоположность полиморфизму называется мономорфизмом.
Параллелизм. Существуют задачи, в которых автоматизированные системы должны обрабатывать много событий одновременно. В других случаях потребности в вычислительной мощности превышает ресурсы одного процессора. В каждой из таких ситуаций естественно использовать несколько компьютеров для решения задачи или задействовать многозадачность на многопроцессорном компьютере. Процесс (поток управления) — это фундаментальная единица действия в системе. Каждая программа имеет по крайней мере один поток управления, параллельная система имеет много таких потоков. Но как только в систему введен параллелизм, сразу возникает вопрос о том, как синхронизировать отношения активных объектов друг с другом, а также с остальными объектами, действующими последовательно. Например, если два объекта посылают сообщения третьему, должен быть какой-то механизм, гарантирующий, что объект, на который направлено действие, не разрушится при одновременной попытке двух активных объектов изменить его состояние. В параллельных системах недостаточно определить поведение объекта, надо еще принять меры, гарантирующие, что он не будет разрушен несколькими независимыми процессами.
Сохраняемость – это способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства. Любой программный объект существует в памяти и живет во времени.
Спектр сохраняемости объектов во времени охватывает:
промежуточные результаты вычисления выражений;
локальные переменные в вызове процедур;
собственные переменные, глобальные переменные и динамически создаваемые данные;
данные, сохраняющиеся между сеансами выполнения программы;
данные, сохраняемые при переходе на новую версию программы;
данные, которые вообще переживают программу.
Традиционно, первыми тремя уровнями занимаются языки программирования, а последними — базы данных. Введение сохраняемости привело к объектно-ориентированным базам данных (OODB, object-oriented databases). В OODB имеет смысл сохранять не только данные, но и классы, так, чтобы программы могли правильно интерпретировать данные. Это создает большие трудности по мере увеличения объема данных, особенно, если класс объекта потребовалось изменить.
Что касается вопросов сохраняемости объектов в пространстве, то в большинстве систем объектам при их создании отводится место в памяти, которое не изменяется и в котором объект находится всю свою жизнь. Однако для распределенных систем желательно обеспечивать возможность перенесения объектов в пространстве, так, чтобы их можно было переносить с машины на машину и даже при необходимости изменять форму представления объекта в памяти.
