Лекция 2 - Методы в классах Всем привет,
Сегодня мы поговорим про методы. Мы сначала обратимся к коду, а затем обсудим его. Итак, в имеющийся класс
Person Вам необходимо дописать несколько строк, чтобы он выглядел вот так:
class Person{
//variables
public:
string name;
int age;
//methods
public:
void speak(){
Alert("Hello there!");
}
void sayIntro(){
Alert("My name is: ", name, " and I am ", age, " years old");
}
};
Что мы изменили? Мы добавили в наш класс два новых метода:
speak() и
sayIntro(). Методы позволяют объектам нашего класса выполнять "действия". В этом заключается одно из основных отличий классов от стандартных типов переменных: классы позволяют своим объектам выполнять действия. Разберем подробней:
Методы действуют как функции. Например, метод speak() просто-напросто выводит на экран фразу "Hello there!":
void speak(){
Alert("Hello there!");
} Но в отличие от функций, методы имеют доступ к внутренним переменным класса. Метод sayIntro() использует переменные
name и
age, чтобы создать персонализированное приветствие. Т.е. выдаваемое сообщение будет напрямую зависеть от того, какие параметры мы зададим выбранному объекту класса
Person: void sayIntro(){
Alert("My name is: ", name, " and I am ", age, " years old");
} Если сейчас вызвать скрипт, то результат будет тот же, что и в предыдущей лекции. Почему? Потому что, хоть мы и добавили в класс методы, мы их еще нигде не использовали в теле скрипта. Поэтому давайте изменим наш скрипт следующим образом:
//+------------------------------------------------------------------+
//| Tutorial03.mq4 |
//| Copyright, Kirill - Forex Boat |
//| http://www.forexboat.com |
//+------------------------------------------------------------------+
#property copyright "Copyright, Kirill - Forex Boat"
#property link "http://www.forexboat.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
int myInteger1; //declaration
myInteger1 = 15; //initialisation
Person myPerson1; //declaration
myPerson1.name = "John"; //initialisation
myPerson1.age = 37; //initialisation
myPerson1.speak();
myPerson1.sayIntro();
Person myPerson2;
myPerson2.name = "Jane";
myPerson2.age = 22;
myPerson2.speak();
myPerson2.sayIntro();
//Alert("myPerson1: ", myPerson1.name, ", age: ", myPerson1.age);
//Alert("myPerson2: ", myPerson2.name, ", age: ", myPerson2.age);
}
//+------------------------------------------------------------------+
class Person{
//variables
public:
string name;
int age;
//methods
public:
void speak(){
Alert("Hello there!");
}
void sayIntro(){
Alert("My name is: ", name, " and I am ", age, " years old");
}
};
Как видите, вызов методов класса производится точно так же, как обращение к его внутренним переменным - через точку
"." Однако, в отличие от переменных, в случае методов необходимо ставить круглые скобки после имени метода. Например:
myPerson1.speak();
myPerson1.sayIntro();
Итак, запустим наш тестовый скрипт в МТ4 и посмотрим, что он нам выдаст:
Рис.1 - Методы отработали
Как видите, оба объекта вывели на экран персонализированные приветствия. Заметьте, что в данном примере используются другие значения, нежели чем в предыдущей лекции.
Надеюсь, что про методы на данный момент все понятно. В качестве тренировки Вы можете попробовать создать свои методы
.
До встречи на следующей лекции!
© Kirill.
[email protected]