Главная » Просмотр файлов » Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5

Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 31

Файл №1124147 Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5) 31 страницаЮ. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147) страница 312019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 31)

Рассмотрим, как можно обратиться к различным обьектам модели из объекта хоос, если его структура определена рис. 7.9 и 7.12. Объект косе содержит Глава 7. Сведения о языие )ауа, необходимые для разработки моделей ко Длу( одс (б( реплицированное включение (набор) из 5 экземпляров класса лдепп, к ним можно обратиться по номеру так: адове.ъеее(о), адепе, 'петп(1), аде е.геетп(а). Заметьте, что последний элемент набора имеет номер, на 1 меньший количества элементов в наборе. Например, можно записать в объекте тооп следующее присваивание: адепе,ьееп~(З).аде = 5бп К объекту еепюту четвертого агента в списке можно обратиться так: адепе. зпеап (3 ) .ппепюту; а переменной папе объекта тпе(поту можно присвоить конкретное значение из объекта топе так: адепе.ьпепп(3).еепюпу.даве = 1974; Во многих моделях количество экземпляров активных объектов, объявленных как реплицированный обьект, может динамически изменяться.

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

язве( ) -1 ).тпепоту Привелем несколько полезных функций лля работы с реплицированными активными объектами, число элементов которых динамически меняется. Пусть этот реплицированный объект называется адепе. П Обращение к случайному элементу вектора агентов из включающего активного объекта: адепс.папоое! ) П Добавление нового элемента к массиву: ветер адепе( пеи лдепп( ), 1 ) Здесь лдепе — это имя класса активных объектов, реплицированный набор экземпляров которого назван именем адове (можно узнать в функции хдепе () конструктор класса лдепе, 1 — это номер, с которым объект вставляется в список). Если объект вставляется в список последним, то можно вызвать эту функция) так: вепир адепе( пеи Адепе( ), адепп.яхве( ) ) П Уничтожение элемента массива: п)гврове адове( <удаляемый ялемене массива адепг> ) Отметим, что при использовании динамических массивов активных объектов, когда объекты могут порождаться и исключаться в процессе работы модели, любой просмотр всех элементов массива должен выполняться с использованием метода я' ееы.

который возвращает текущее значение размера вектора агентов. и зэк. 4248 Часть!I. Средства длуьодГс для имитационного моделирования систем 7.7. Доступ к объектам модели по иерархии ее структуры В модели на Апу1оя(с из любого активного объекта можно обратиться к любому другому объекту модели. Рассмотрим технику такого доступа подробнее. 7,7.1. Доступ к переменным и параметрам объектов класса Некоторая трудность в понимании того, как организовать обрагцение к одним обьектам модели из других объектов, состоит в том, что такое обращение будет выполняться по структуре объектов работаюшей модели, а код такого обрашения нужно писать в процессе построения модели, когда разработчик определяет классы активных обьектов.

Поэтому уже при построении модели разработчик должен иметь некоторое представление о будушей структуре модели. Кроме корневого объекта с предопределенным именем тоос, который является единственным экземпляром корневого класса, все другие классы активных объектов будут представлены в работающей модели одним или несколькими экземплярами, включенными в другие экземпляры активных объектов. Окно гоо1 рис. 7.12 показывает, что из объекта хоос доступны абсолютно все обьекты модели, являюшиеся экземплярами других классов.

Например, к объекту иоты можно из объекта тоос обратиться просто иоты, к таймеру сгхгаса объекта иох16 так: иох16.ироасе, к переменной рори1асгоп объекта иох10 так: иот16. рори1асьоп, нап1зимер: х иот1о.роро1аг готц Очевидно, что для того, чтобы этот код выполнялся в обьекте тоос, он дол- жЕН бЫтЬ ОПрсдЕЛЕН В КЛаССЕ Моаа1. Зтс, КОНЕЧНО, СПраВЕЛЛИВО дЛя ОбраШЕ- ния к любому объекту, включенному в данный объект.

Например, из класса хдалс можно обратиться для чглания значений переменных включенного в него экземпляра класса иа оту, например: аде = достав( ) — тпепату.дасе; Изменение переменных и параметров внутри обьекта, вложенного в данный класс, тоже возможно, например (см.

рис. 7.12) из корневого объекта мог1в1 можно изменить переменную: иат16.рори1асъоо = 10000т Такое присваивание вызовет изменение значения в поле памяти, отведенном для этой переменной, и далее будет использовано ее новое значение. Если же эта переменная включена в гард (дивта, защиту) перехода из некоторого состояния стейтчарта, то в момент модификации переменной все Глава 7. Сведения о языке.1ие, неосходимыедля рвзрагкяки моделей на Дпу(оус (53 условия, содержащие ее, будут пересчитываться, только если вслед за моди- фикацией переменной выполнить функцию весмоцьг)еа(). Методы ве$ РагатОи опСЬапде РаттО Похожая ситуация с изменением параметров экземпляров активных объектов.

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

Значение параметра яехев объекта можно устанавливать не простым присваиванием, а вызывая функцию вег ввхв к(р) у этого объекта. В результате выполнения этой функции, во-первых, значение параметра вехеж станет равным р, и, во-вторых, после этого в объекте будет вызвана функция опсьесяе гехах (), которую разработчик может определить так, как этого требует логика функционирования модели. Если функция сссьесяе вехмв() не определена в классе, экземпляром которого является объект, то результатом выполнения функции вес ье.ат(р) будет простое присваивание. 7.7.2. Доступ к переменным и объектам включающего объекта.

Функция де$0и)пегО Новые классы в языке Заха могут быть определены лвумя различными способами. Первый — это независимое определение, когда при определении одних классов в их теле могут использоваться только экземпляры других классов. В Апу) оя)с новые классы пктиеных объектов опрелеляются с помощью визуальных средств и включений фрагментов программного кода именно так: в проекте объявляется новый класс активного объекта, в данный класс добавляются свои переменные, методы и т.

п, Именно это представлено на рис. 7.)2, где классы мосе1, иохы, не охи и ляесс определяются независимо. Экземпляры так определенных активных объектов могут быть включены в любые другие классы активных объектов (конечно, с соблюдением правил иерархии: построенная структура экземпляров активных Часть Ф. Средства Апу1од(с для имитационного моделирования систем объектов должна быть деревом), поскольку все независимо опрелеленные классы "видят" друг друга.

Пусть необходимо получить доступ из любого обьекта адепс класса вдевай К ПЕрЕМЕННОй х ТОГО Кдаееа Моае1, КстОрмй ВПОСЛЕдотанн ВКЛЮЧИТ ЛаННЫй объект. Для этого в классе лдепс нужно получить указатель на объект, который будет включать объект адепп. Если такой указателыа получен, появляется возможность доступа из объекта адепт к любому объекту (например, к переменной х) во вкл)очаюшем его классе (как .х). В классе лдепт. выполним следующее: Е Объявим в классе лдепп новую переменную (назовем ее и) типа моае1 и инициализируем ее так, чтобы она указыва)а на "владельца" обьекта: Моое1 та = (Моде1)депсипет( 2.

Для установки значения переменной х класса мос)е1 обратимся к ней так: т.х = 1; Функция десоипет дает в результате владельца данного объекта, но тип результата нужно явно привести к типу класса-владельца, лля чего используется явная конверсия типов. В нашем примере зто класс моае1. После этого мы получаем возможность обратиться к любому объекту в классе ноае1. Рассмотрим другой пример. Пусть определен класс лдепс, набор экземпляров которого (реплицированный объект) с именем адепт будет впоследствии ВКЛЮЧЕН В КЛаСС Мос)е1. В КЛаССЕ Лдепп МОЖНО ВЫПОЛНИТЬ СЛЕдуЮщИЕ ОПЕрации, которые будут выполняться в каждом экземпляре этого класса. вклю- ЧЕННОМ В ~ля~~ Мскте1: О определить указатель на включающий объект: Моое1 та = (Моое1)деооипет(); О определить число экземпляров в массиве вдеты 1пе Н = т.адепп.в1ве()т О послать событие "до" стейтчарту агента с номером 0: та.адепс.1сета(0).всасес)тат(.а1хеввепо("до") О определить номер данною экземпляра в наборе адепы ъпс 1=део1пс)ех()) 7.7.3.

Ключевое слово И~в Новый класс можно также определить внутри друп)го класса. Такое определение называется вложенным. В АпуЕоя(с новые классы некоторых объектов, таких, как таймер, стейтчарт, анимация и т. и., опрелеляются именно так. Для того чтобы из обьектов этих типов обратиться к переменным или пара- МЕтраМ КЛаееа, ИХ ВКЛ(ОЧаЮШЕГО, ИСПОЛЬЗустСя КЛЮЧЕВОЕ СЛОВО ПИ1в. Зтс Глава 7. Сведения о язв(ие )аза, необходиьье для разработки мс)делей на А)фоус 155 слово применяется всегда, когда у метода возникает необходимость обратиться к обьекту, который его вызвал. Можно считать, что любой класс содержит переменну)о с именем сь).а, имеющую тип топ) объекта, в котором она находится, и указывавшую на данный объект. Поэтому, например, если из стейтчарта щге, являющегося объектом кчасса лдепс, необходимо обратиться к включающему этот стейтчарт объекту, то нужно записать лдепс.сьхе. Если в стейтчарте использовать просто слово сньа, то мы получим обращение к самому стейтчарту.

Приведем пример использования этого ключевого слова. Пусть, например, при наступлении некоторого события необходимо удалить данного агента, например, если закончилось определенное лля него время жизни. Для этого нужно во включающем классе вызвать функци)о: с(дароае адепп( лдепп.слве ); Это приведет к удалению экземпляра класса лдепс, в котором эта функция вызвана. 7.7.4. Примеры Приведем примеры решения некоторых проблем доступа лля структуры объектов молели, представленной на рис. 7.!2.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее