Руководство пользователя
-
Руководство по NTTX Advisors
- Терминал NetTradeX Advisors
-
Статьи
-
NetTradeX Language: Введение
- Основы языка
- Функции языка
-
Cистемные объекты языка
- Сделки
- Ордера
- Индикаторы
- Объектно-ориентированное программирование
-
DLL файлы
-
Объект Account
-
Объект Bars
-
Объект Chart
-
Объект datetime
-
Объект History
-
Объект file
-
Объект Globals
-
Объект Math
-
Объект Symbols
-
Объект System
При помощи классов программист может определять и использовать новые типы данных, которые будут содержать свойства и метода, реализующие определенные алгоритмы. Для этого язык NetTradex поддерживает работу с классами и такие концепции, как инкапсуляция, наследование и полиморфизм. Далее рассмотрим процесс создания и работы с пользовательскими классами.
Для создания класса его нужно определить. Определение включает в себя:
- зарезервированное слово
class
- идентификатор, являющейся именем класса
- тело класса, заключенное в фигурные скобки
Методы класса имеют доступ к его свойствам как напрямую (используя идентификатор), так и при помощи зарезервированного слова this
, которое является ссылкой на экземпляр текущего объекта.
При создании экземпляра класса вызывается специальный метод класса - конструктор. Имя конструктора должно совпадать с именем класса, кроме этого конструкторы не имеют возвращаемого значения. В классе может быть несколько конструкторов, при этом они должны отличаться типом и/или количеством параметров. Нельзя вызывать один конструктор из другого, если они являются конструкторами одного класса.
Доступ к методам класса может осуществляться через оператор .
(точка), например, для получения доступа к свойству max_price экземпляра класса current_day, нужно воспользоваться
current_day.max_price
. Обычно доступ к свойствам объекта не осуществляется напрямую, а создаются отдельные методы: геттеры и сеттеры.
После описания класса необходимо создать экземпляр объекта класса. Это можно сделать указав Имя_класса имя_объекта;
Создадим класс, который будет выводить информацию по ценам Bid и Ask:
class CurrencyPair { // свойства класса string symbol; double bid; double ask; double point; // метод класса // вывод значения свойств класса void Print() { System.Print("Symbol="+symbol+" Bid="+bid+" Ask="+ask+" Point="+point); } // конструктор CurrencyPair(string symbol) { this.symbol = symbol; ask = Symbols.LastAsk(symbol); bid = Symbols.LastBid(symbol); point = Symbols.Point(symbol); } } int Run() { CurrencyPair x(Chart.Symbol); x.Print(); return(0); }
Функции и методы класса могут быть объявлены с ключевым словом private
. В этом случае они становятся невидимыми для объектов извне класса и не могут использоваться напрямую через оператор .
(точка).
class AccountState { private double balance; private double equity; private datetime t; AccountState() { balance = Account.Balance; equity = Account.Equity; t = System.Time; } void Print() { System.Print("Balance="+balance+" Equity="+equity+" Time="+t); } } int Run() { AccountState a; //a.equity = 100000; Запрещено из-за модификатора доступа private a.Print(); return(0); }