Public_static_void_Mov ( int x, int y, int d)

{

x=x+d;

y=y+d;

}

public_static_void_Main()

{

int a=4, b=3, d=10;

Move ( a, b, d); // вызов метода

}

}

В данном случае метод работает с копиями параметров, исходные значения в ячейках не трогает. Проверить можно опять-таки выводом значений на экран после вызова метода.

Возврат объекта из метода

При определении метода указывается тип возвращаемого из метода объекта. Возврат значения выполняется оператором return Объект;

Оператор прекращает выполнение метода и производит возврат в точку вызова. Выражение может определить выражение любого типа, т.е. из метода можно вернуть:

1. Значение стандартного типа (целые, вещественные и т.д.)

2. Массив (т.е. ссылку на его начало)

3. Объект определенного класса

Последние два варианта позволяют добиться возврата из метода множества значений.

Рассмотрим пример.

class_Example

{

public_static_int_Mov ( int x, int y, int d) //возвращение целого числа из метода

{ int k; //локальная переменная метода

x=x+d;

y=y+d;

k=x+y; //сумма переменных, которую возвратим в точку выхода

return k; //оператор возвращает переменную

}

public_static_void_Main()

{

int a=4, b=3, d=10, k;

k=Move ( a, b, d); // вызов метода, возвращаемое значение присваивается k

}

}

В последнем примере изменения, связанные с возвратом значения, выделенные красным цветом. Главное помнить: возвращаемое значение должно быть или присвоено какой-либо переменной, или должно участвовать в вычисляемом выражении, или быть аргументом другого метода. Например:

k= 5/ 2.0 + Move ( a, b, d);

Параметры метода Main()

Main() особый метод, внутри нашей программы его вызвать нельзя. Но у него, если вы обратили внимание, тоже есть параметры. Их можно указывать при запуске программы из командной строки. Внимание! Материал не требует изучения и апробации. Дается справочно для тех, кто интересуется изучением языка на углубленном уровне.

Main
Метод
аргументы вызов
возврат значение
программа  
запуск  
аргументы  
аргументы  
значение  

В рамках данного вопроса рассмотрим вариант, когда программа запускается из среды исполнения. Поскольку метод Main() выполняется первым при запуске программы, то именно через этот метод производится прием аргументов.

Для запуска программы в среде исполнения формируется команда. Команда должна содержать спецификацию исполнимого файла и возможно аргументы, которые в команде указываются через пробел.

С:
PR
PR
BIN
DEBUG
pr.sln (решение)
pr.exe

C:\PR\PR\BIN\DEBUG\pr.exe_аргумент1_ аргумент2_... _аргументN

Состав параметров метода Main фиксирован: Main (string[] args)

Метод принимает параметры из команды в виде массива строк. Каждая строка хранит символьное представление одного аргумента.

Пример

Разработать программу, предназначенную для хранения в виде массива цен на товары и их изменения на заданную сумму. Изменение выполняется методами

· Plus – увеличение

· Minus – уменьшение

Исполняемый файл хранится в файле pr.exe.

Соглашение об аргументах в команде

1. Сумма

2. Вид операции

· Плюс (в любом регистре) или +

· Минус (в любом регистре) или

3. Фамилия оператора (ключ)

Пример команды

C:\PR\PR\BIN\DEBUG\pr.exe_50_Плюс_Иванов

«50»
«Плюс»
«Иванов»
   
Массив args в Main()

public static void Plus(double[] p, double s)

// массив цен, сумма, на которую увеличиваем

{

for (int i = 0; i < p.Length; i++)

p[i] += s;

}

public static void Minus(double[] p, double s)

{

for (int i = 0; i < p.Length; i++)

p[i] -= s;

}

public static Main(string[] args)

{

double[] pr; //массив с ценами

double delta; //сумма

string key = "Иванов"; //ключ

pr = new double[] { 100.0, 200.0, 300.0 };

//проверяем сколько аргументов нам передали

if (args.Length != 3) return;

//завершение программы - ошибка1

//проверка фамилии

if (args[2] != key) return;

//завершение программы - ошибка2

//пересчет цен

delta = double.Parse(args[0]);

//чтение операции

switch (args[1].ToUpper())

{

case "ПЛЮС":

case "+": Plus(pr, delta); break;

case "МИНУС":

case "-": Minus(pr, delta); break;

}

//вывод новых цен

return;

}

Перегруженные методы

В одном классе может быть определено несколько методов с одним именем, но с разным составом параметров по количеству, типам, способу передачи аргументов. Такие методы называются перегруженными.

Перегруженные методы используются в составе классов для определения однотипных по функциональному назначению операций, реализуемых по-разному.

Выяснение конкретного метода, который будет реально вызван, производится на этапе трансляции по следующей схеме:

1. Вызывающий метод – это тот метод, который совпадает с вызовом по имени, количеству и типу параметров.

2. Если такого метода нет, вызывается метод, который совпадает с вызовом по имени и количеству параметров, при этом аргументы могут быть преобразованы к типу параметров без потери информации

3. Если такого метода нет, фиксируется ошибка.

Пример

Определить класс, описывающий понятие точка, методы, реализующие операции:

- Установка точки на числовой оси

- Установка точки на плоскости

- Установка точки в трехмерном пространстве

- Вычисление расстояния от точки до начала координат

class Program

{

public static void Main()

{

double d; //расстояние

double x, y, h

//установка точки на прямой

public void Set(double xp)

{

x = xp; y = 0; h = 0;

}

//установка точки на плоскости

public void Set(double xp, double yp)

{

x = xp; y = yp; h = 0;

}

//установка точки в пространстве

public void Set(double xp, double yp, double hp)

{

x = xp; y = yp; h = hp;

}

//вычисление расстояния

public double Dist()

{

return Math.Sqrt(x * x + y * y + h * h);

}

}

Set(2.0); //будет вызван первый Set()

d=Dist(); // d=2.0

Set(3.0,4.0); //будет вызван второй Set()

d=Dist(); // d=5.0

Set(2,3,6); //будет вызван третий Set

d=Dist(); // d=7.0

}

}

Перегруженные методы не различаются по типу возвращаемого значения. В данном примере при вызове метода будет вызван тот экземпляр метода, который соответствует вызову по числу параметров. Перегруженные методы могут различаться и типом аргументов. Вспомните стандартный метод класса Math, вычисляющий модуль числа: есть перегруженные методы для каждого типа числовой переменной.

Конструкторы

Представляют собой специфический метод класса. Специфика заключается:

в назначении – конструктор автоматически вызывается при создании объекта и в силу этого используется, как правило, для инициализации полей объекта.

в оформлении (т.е. в синтаксисе) – конструктор должен иметь имя, совпадающее с именем класса, конструктор не имеет возвращаемого значения.

Конструкторы могут быть перегружены, вызов соответствующего конструктора выполняется при создании объекта

Методические рекомендации

При работе с методами важно помнить следующие моменты:

1. Метод, который не возвращает значение, в заголовке должен вместо типа возвращаемого значения иметь void. Вызов метода не включается в состав выражения присваивания, не является аргументом другого метода.

2. Метод, который возвращает значение, в заголовке должен иметь тип возвращаемого значения. Вызов метода включается в состав выражения присваивания, является аргументом другого метода и проч..

3. При обращении к методу следует точно указать его имя, соблюдать число, тип и порядок следования параметров.

4. Для овладения методами на школьном уровне достаточно уметь передавать параметры по значению, а также использовать массивы.

5. В порядке осваивания технологии разработки методов выполните все задачи по массивам и циклам из предыдущих уроков с использованием методов.

Наши рекомендации