Руководство пользователя
-
Руководство по 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);
}