Pages: 1
Создание собственного класса
Подскажите, пожалуйста.
В сообщения между агентами мне надо передавать не текст, а какую нибудь структуру (например, наименование товара и количество). Я создал для этого новый класс Заявка, состоящий из двух атрибутов: наименование, количество. У агента создал параметр МоёСообщение типа Заявка, чтобы значение этого параметра передавать как параметр в функцию Send(). Но когда начинаю обращаться с атрибутами параметра МоёСообщение в диаграмме состояний, при моделировании выходит сообщение "Ошибка при выполнении дискретного события:
NullPointerExceptionjava.lang.NullPointerException"
Такое ощущение, что надо где то конструктов вызывать при создании агента для инициализации параметра МоёСообщение. 

Подскажите, как быть? 
Вадик, нужно в поле начальное значение этого параметра ввести:
Code
new Заявка("Имя товара", 42); // сработает, если есть такой конструктор 


Создавая параметр, вы не создаёте объект, а лишь ссылку на него. Ссылка, не указывающая ни на какой объект, возвращает null, т.е. отсутствие объекта. Новый объект всегда создаётся при помощи кодового слова "new", если особо не указан другой путь создания.
Спасибо. Помогло. А где можно найти описание таких ньюансов? Книги, подскажите. Или это опирается на базовые знания Java?
Это основы Java. Попробуйте пройти туториалы, начиная с модели обслуживания турбин. Там используется довольно много Java конструкций. Потом бегло прочитайте раздел Справки о Java, начиная с главы Переменные и до конца.
Вообще нужда создавать Java классы ушла вместе с AnyLogic 6. Используйте лучше тип агента. Это и удобнее, и нагляднее, и быстрее, и гораздо меньше кода. Собственно, в туториале это и показано.
Pages: 1
Users browsing this topic (1 guests, 0 registered, 0 hidden)