SlideShare a Scribd company logo
Основы 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

PDF
AlgoCollections (RUS)
PPTX
OOP in JavaScript - Presentation by Eugene Kalosha
PDF
L7:Задача кластеризации. Метрики качества
PPTX
Intro to Swift techitout
PDF
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
PDF
Scala and LiftWeb presentation (Russian)
PDF
L5: Л5 Байесовские алгоритмы
PDF
Лекция №1 "Задачи Data Mining"
AlgoCollections (RUS)
OOP in JavaScript - Presentation by Eugene Kalosha
L7:Задача кластеризации. Метрики качества
Intro to Swift techitout
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Scala and LiftWeb presentation (Russian)
L5: Л5 Байесовские алгоритмы
Лекция №1 "Задачи Data Mining"

What's hot (20)

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

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

PDF
Глава 3: примитивные типы и операции с ними в Java
PPTX
основы Java переменные, циклы
PDF
Лекция о языке программирования Haskell
PPT
паскаль. часть1
PPT
Rgsu04
PPT
Rgsu04
PDF
Ruby: работа с массивами
PPTX
элементы языка и типы данных
PPTX
тема 1.введение в pascal
PPT
Java. Переменные, типы данных, операторы
PPTX
массивы.строки
PPT
урок в 9 классе
PDF
Haskell Type System with Dzmitry Ivashnev.
PPT
20100927 28 reqformalization-kuliamin
PPTX
типы данных
PPTX
типы данных
PPTX
VHDL composite data types, arrays, records
PPSX
10 класс алгоритмы с повторениями
ODP
Java - основы языка
PPTX
Pri3
Глава 3: примитивные типы и операции с ними в Java
основы Java переменные, циклы
Лекция о языке программирования Haskell
паскаль. часть1
Rgsu04
Rgsu04
Ruby: работа с массивами
элементы языка и типы данных
тема 1.введение в pascal
Java. Переменные, типы данных, операторы
массивы.строки
урок в 9 классе
Haskell Type System with Dzmitry Ivashnev.
20100927 28 reqformalization-kuliamin
типы данных
типы данных
VHDL composite data types, arrays, records
10 класс алгоритмы с повторениями
Java - основы языка
Pri3
Ad

основы 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