img

Наследование классов

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