Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

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. В порядке осваивания технологии разработки методов выполните все задачи по массивам и циклам из предыдущих уроков с использованием методов.