SlideShare a Scribd company logo
1 of 13
Download to read offline
Основы Java для
                           AnyLogic
Эта презентация является
      частью стандартной
     программы обучения




                           © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru
Общие замечания
• Не требуется знать принципы объектно-ориентированного
 программирования
• Достаточно знать типы данных Java и понимать синтаксис
 выражений
• Обратите внимание на следующее:
   • Java учитывает регистр: переменная MyVar отлична от myVar!
   • Имена не могут содержать пробелов: имя “My Var” недопустимо!
   • Каждое действие должно заканчиваться “;”: MyVar = 150;
   • Каждая функция должна иметь скобки: time(), add(a)
   • Следует помнить о целочисленном делении: 3/2 = 1, а не 1.5
   • Булевские переменные могут принимать только значения true и false,
     использовать значения 1 и 0 нельзя
   • Точка “.” позволяет перейти “внутрь” объекта: agent.event.restart()
   • Элементы массивов имеют индексы от 0 до N-1


© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                       2
Типы
• Примитивные типы
   double – вещественное число: 1.43, 3.6E18, ­14.0
   int – целое число: 12, 16384, -5000
   boolean – булево значение: true, false
• Составные типы – классы
   String – текстовая строка: “AnyLogic”, “Привет!”
   ArrayList, LinkedList – коллекции объектов
   HyperArray – многомерный массив вещественных чисел в
     системно-динамических моделях
   … и многие другие. См. справочник классов AnyLogic и
     Java

© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru   3
Выражения
• Арифметические операции
   +, –, *, /, % (остаток от деления)
   При целочисленном делении дробная часть отбрасывается, например: 3 / 2 равняется 1,
      2 / 3 равняется 0
   Операции типа умножение имеют приоритет над операциями типа сложение
   Оператор ‘+‘ также конкатенирует строки типа String

• Операции сравнения
   >, >=, <, <=, ==, !=

• Логические операции
   && (и), || (или), ! (не)

• Условный оператор                                           Операции одинакового
   условие ? рез-т-если-истина(true) : рез-т-если-ложь(false) приоритета выполняются
                                                              слева направо
• Присваивание и сокращения
   =, +=, -=, *=, /=, %=, ++, --                          Для управления
   Пример: a+=b равносильно a=a+b                         приоритетом используйте
                                                          скобки


© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                             4
Примеры
5 % 2 ≡ 1?                                        “Any” + “Logic” ≡ “AnyLogic”
                                                                         ?

5 / 2 ≡ 2?                                        Пусть x = 14.3, тогда:
                                                   “x = ” + x ≡ “x = 14.3”
                                                                     ?
5. / 2 ≡ 5 / 2. ≡ 2.5
                    ?
                                                  “” ≡ пустая?
                                                             строка
(double)5 / 2 ≡ 2.5
                  ?
                                                  “” + x ≡ “14.3”
                                                              ?
a += b; ≡ a = a+b;
               ?
                                                  y=x>0?x:0
a++; ≡ a = a+1;
            ?                                      ≡ y = max( 0, x )
                                                            ?
                                                  x == 5 ≡ true если x равен
                                                                  ?
                                                    5, иначе false, тогда как:
                                                  x = 5 ≡ присвоить x значение 5
                                                                    ?



© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                               5
Вызов методов и доступ к полям
• Вызов методов
   Чтобы вызвать метод, укажите имя метода и после
     имени поставьте скобки. Если необходимо, в скобках
     через запятую укажите параметры. Примеры:
      x = time();
      moveTo( getX(), getY() + 100 );
      traceln( “Population is increasing” );
• Доступ к полям и методам
   Чтобы обратиться к полю или методу элемента модели
     (стейтчарта, события, анимации), укажите имя этого
     элемента, добавьте точку ‘.’, а затем укажите имя
     поля или метода. Примеры:
      statechart.fireEvent( “go” );
      sum = sum + agents.get(i).x;


© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru      6
Комментарии в Java коде
Есть два вида комментариев:
    /* text */           Обычный комментарий: игнорируется весь текст,
                         находящийся между ASCII символами /* и */ (как в C и
                         C++).
    /**
     * The class represents AnyLogic 3D animation. It contains the canvas object.
     *
     * @author Daniil Chunosov
     * @version 5.0
     */
    public class Animation3DPanel extends javax.swing.JPanel …

    // text              Строчный комментарий: игнорируется весь текст от
                         ASCII символов // и до конца строки (как в
                         C++)

    // Prepare Engine for simulation:
    engine.start( root );
    engine.runFast(); // fast mode – no animation

© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                                7
Реплицированные объекты
                   • Реплицированный объект
                    представляется массивом переменного
                    размера. Элементы массива имеют
                    индексы от 0 до N-1
                      Получение размера массива:
                        people.size()
                      Получение i-го элемента массива:
                        people.get( i )
                      Добавление нового объекта:
                        add_people();
                      Удаление объекта:
                        remove_people( person );
© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru     8
Встроенные функции
• Системные функции
     – getOwner(), pause(), traceln(), isStateActive(), и т.д.

• Функции для работы со временем
     – time(), date(), getHourOfDay(), minute(), и т.д.

• Математические функции
     – Базовые: sqrt(), sin(), cos(), exp(), log(), round(), и т.д.
• Специальные функции
     – Случайные числа: uniform(), exponential(), bernoulli(), и т.д.
     – Системная динамика: delay(), delay3(), smooth(), trend(), и т.д.

• И другие …
     – См. классы Utilities, Presentable, ActiveObject и Agent в
       справочнике классов AnyLogic


© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                      9
Вероятностные распределения
   uniform( min, max )
                                  Описывает случайную величину, для которой
                                  вероятность попадания в любой интервал между min и
                                  max прямо пропорциональна длине этого интервала.
     min             max


                                                                     exponential( lambda )
                                                            lambda
Используется для моделирования временных
интервалов между случайными событиями. Важное
свойство: отсутствие последействия.



triangular( min, mode, max )
                                  Обычно используется в условиях недостатка
                                  данных о длительности какого-либо процесса.
     min        mode max




    © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                             10
Основные конструкции языка
                               • Присваивание или вызов метода:
                                   y = f(x1,x2) + 5*z;
                                   event.restart( uniform( 10, 20 ) );

                               • Ветвление по условию:
                                     if ( friendsRatio > attackConstant )
                                         attack();
                                     else
                                         escape();
                               • Цикл:
                                     double total = 0;
                                     for ( Person p : people )
                                        total += p.income;
                                     for( int i=0; i<100; i++ )
                                        send( msg, RANDOM );
© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                        11
Коллекции
 • Коллекции – это предопределенные классы, реализующие
  базовые структуры данных
 • Одна и та же операция для разных классов занимает разное
  время
                              ArrayList                  HashSet   SortedSet
                                            LinkedList
                               Vector                    HashMap   SortedMap

  Получение размера             Const         Const       Const     Const
Добавление элемента             Const         Const       Const         Log
  Удаление элемента            Linear         Linear      Const         Log
 Удаление по индексу           Linear         Linear      -         -
Получение по индексу            Const         Linear      -         -
      Поиск элемента           Linear         Linear      Const         Log
      Поиск мин/макс           Linear         Linear      Linear    Const


 © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                          12
Источники информации
Справочник классов AnyLogic
   Раздел API Reference справочной системы AnyLogic
Спецификация Java API
   http://java.sun.com/javase/6/docs/api
Одна из лучших книг по Java:
   Bruce Eckel. Thinking in Java.
     Доступна по адресу:
      http://www.uic.rsu.ru/doc/programming/java/TIJ2e.ru/Contents.html




© 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru                      13

More Related Content

What's hot

L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторовTechnosphere1
 
L3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияL3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияTechnosphere1
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#Olga Maksimenkova
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Technosphere1
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовTheoretical mechanics department
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Technosphere1
 
Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Technosphere1
 
Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"Technosphere1
 
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокTechnosphere1
 
Основы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиОсновы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиOlga Maksimenkova
 
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVMromovpa
 
Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Technosphere1
 
L11: Метод ансамблей
L11: Метод ансамблейL11: Метод ансамблей
L11: Метод ансамблейTechnosphere1
 
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Technosphere1
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Technosphere1
 
Обработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявленийОбработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявленийcorehard_by
 
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Technosphere1
 
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Technosphere1
 
2. java lecture syntax
2. java lecture syntax2. java lecture syntax
2. java lecture syntaxMERA_school
 
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)ScalaNsk
 

What's hot (20)

L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторов
 
L3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияL3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессия
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
 
Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов"
 
Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"
 
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибок
 
Основы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиОсновы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивами
 
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVM
 
Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии"
 
L11: Метод ансамблей
L11: Метод ансамблейL11: Метод ансамблей
L11: Метод ансамблей
 
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
 
Обработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявленийОбработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявлений
 
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
 
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана"
 
2. java lecture syntax
2. java lecture syntax2. java lecture syntax
2. java lecture syntax
 
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
 

Similar to основы Java для_any_logic

CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.Anton Konushin
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятиеluis_blanco_rau
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Fwdays
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормозаAlexander Shigin
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentalsAsya Dudnik
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentalsAsya Dudnik
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоStanfy
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...yaevents
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User Group
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)Evgeny Kaziak
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьAndrey Bibichev
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 

Similar to основы Java для_any_logic (20)

CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
 
Bytecode
BytecodeBytecode
Bytecode
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentals
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentals
 
Python
PythonPython
Python
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел Тайкало
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
course js day 2
course js day 2course js day 2
course js day 2
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
8
88
8
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связность
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 

основы Java для_any_logic

  • 1. Основы Java для AnyLogic Эта презентация является частью стандартной программы обучения © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru
  • 2. Общие замечания • Не требуется знать принципы объектно-ориентированного программирования • Достаточно знать типы данных Java и понимать синтаксис выражений • Обратите внимание на следующее: • Java учитывает регистр: переменная MyVar отлична от myVar! • Имена не могут содержать пробелов: имя “My Var” недопустимо! • Каждое действие должно заканчиваться “;”: MyVar = 150; • Каждая функция должна иметь скобки: time(), add(a) • Следует помнить о целочисленном делении: 3/2 = 1, а не 1.5 • Булевские переменные могут принимать только значения true и false, использовать значения 1 и 0 нельзя • Точка “.” позволяет перейти “внутрь” объекта: agent.event.restart() • Элементы массивов имеют индексы от 0 до N-1 © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 2
  • 3. Типы • Примитивные типы double – вещественное число: 1.43, 3.6E18, ­14.0 int – целое число: 12, 16384, -5000 boolean – булево значение: true, false • Составные типы – классы String – текстовая строка: “AnyLogic”, “Привет!” ArrayList, LinkedList – коллекции объектов HyperArray – многомерный массив вещественных чисел в системно-динамических моделях … и многие другие. См. справочник классов AnyLogic и Java © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 3
  • 4. Выражения • Арифметические операции +, –, *, /, % (остаток от деления) При целочисленном делении дробная часть отбрасывается, например: 3 / 2 равняется 1, 2 / 3 равняется 0 Операции типа умножение имеют приоритет над операциями типа сложение Оператор ‘+‘ также конкатенирует строки типа String • Операции сравнения >, >=, <, <=, ==, != • Логические операции && (и), || (или), ! (не) • Условный оператор Операции одинакового условие ? рез-т-если-истина(true) : рез-т-если-ложь(false) приоритета выполняются слева направо • Присваивание и сокращения =, +=, -=, *=, /=, %=, ++, -- Для управления Пример: a+=b равносильно a=a+b приоритетом используйте скобки © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 4
  • 5. Примеры 5 % 2 ≡ 1? “Any” + “Logic” ≡ “AnyLogic” ? 5 / 2 ≡ 2? Пусть x = 14.3, тогда: “x = ” + x ≡ “x = 14.3” ? 5. / 2 ≡ 5 / 2. ≡ 2.5 ? “” ≡ пустая? строка (double)5 / 2 ≡ 2.5 ? “” + x ≡ “14.3” ? a += b; ≡ a = a+b; ? y=x>0?x:0 a++; ≡ a = a+1; ? ≡ y = max( 0, x ) ? x == 5 ≡ true если x равен ? 5, иначе false, тогда как: x = 5 ≡ присвоить x значение 5 ? © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 5
  • 6. Вызов методов и доступ к полям • Вызов методов Чтобы вызвать метод, укажите имя метода и после имени поставьте скобки. Если необходимо, в скобках через запятую укажите параметры. Примеры: x = time(); moveTo( getX(), getY() + 100 ); traceln( “Population is increasing” ); • Доступ к полям и методам Чтобы обратиться к полю или методу элемента модели (стейтчарта, события, анимации), укажите имя этого элемента, добавьте точку ‘.’, а затем укажите имя поля или метода. Примеры: statechart.fireEvent( “go” ); sum = sum + agents.get(i).x; © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 6
  • 7. Комментарии в Java коде Есть два вида комментариев: /* text */ Обычный комментарий: игнорируется весь текст, находящийся между ASCII символами /* и */ (как в C и C++). /** * The class represents AnyLogic 3D animation. It contains the canvas object. * * @author Daniil Chunosov * @version 5.0 */ public class Animation3DPanel extends javax.swing.JPanel … // text Строчный комментарий: игнорируется весь текст от ASCII символов // и до конца строки (как в C++) // Prepare Engine for simulation: engine.start( root ); engine.runFast(); // fast mode – no animation © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 7
  • 8. Реплицированные объекты • Реплицированный объект представляется массивом переменного размера. Элементы массива имеют индексы от 0 до N-1 Получение размера массива: people.size() Получение i-го элемента массива: people.get( i ) Добавление нового объекта: add_people(); Удаление объекта: remove_people( person ); © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 8
  • 9. Встроенные функции • Системные функции – getOwner(), pause(), traceln(), isStateActive(), и т.д. • Функции для работы со временем – time(), date(), getHourOfDay(), minute(), и т.д. • Математические функции – Базовые: sqrt(), sin(), cos(), exp(), log(), round(), и т.д. • Специальные функции – Случайные числа: uniform(), exponential(), bernoulli(), и т.д. – Системная динамика: delay(), delay3(), smooth(), trend(), и т.д. • И другие … – См. классы Utilities, Presentable, ActiveObject и Agent в справочнике классов AnyLogic © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 9
  • 10. Вероятностные распределения uniform( min, max ) Описывает случайную величину, для которой вероятность попадания в любой интервал между min и max прямо пропорциональна длине этого интервала. min max exponential( lambda ) lambda Используется для моделирования временных интервалов между случайными событиями. Важное свойство: отсутствие последействия. triangular( min, mode, max ) Обычно используется в условиях недостатка данных о длительности какого-либо процесса. min mode max © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 10
  • 11. Основные конструкции языка • Присваивание или вызов метода: y = f(x1,x2) + 5*z; event.restart( uniform( 10, 20 ) ); • Ветвление по условию: if ( friendsRatio > attackConstant ) attack(); else escape(); • Цикл: double total = 0; for ( Person p : people ) total += p.income; for( int i=0; i<100; i++ ) send( msg, RANDOM ); © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 11
  • 12. Коллекции • Коллекции – это предопределенные классы, реализующие базовые структуры данных • Одна и та же операция для разных классов занимает разное время ArrayList HashSet SortedSet LinkedList Vector HashMap SortedMap Получение размера Const Const Const Const Добавление элемента Const Const Const Log Удаление элемента Linear Linear Const Log Удаление по индексу Linear Linear - - Получение по индексу Const Linear - - Поиск элемента Linear Linear Const Log Поиск мин/макс Linear Linear Linear Const © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 12
  • 13. Источники информации Справочник классов AnyLogic Раздел API Reference справочной системы AnyLogic Спецификация Java API http://java.sun.com/javase/6/docs/api Одна из лучших книг по Java: Bruce Eckel. Thinking in Java. Доступна по адресу: http://www.uic.rsu.ru/doc/programming/java/TIJ2e.ru/Contents.html © 2002-2012 ООО «Экс Джей Текнолоджис», www.xjtek.ru 13