Руководство пользователя

Наследование классов
NetTradeX PC
NetTradeX Android
NetTradeX iOS
NetTradeX Mobile
NetTradeX Advisors
Наследование классов

При помощи классов программист может определять и использовать новые типы данных, которые будут содержать свойства и метода, реализующие определенные алгоритмы. Для этого язык 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);
}