Лабораторная работа 12. Методы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа 12. Методы



Цель лабораторной работы: научиться работать с методами, написать программу с использованием методов.

Общие понятия

Метод – это элемент класса, который содержит программный код. Метод имеет следующую структуру:

 

[атрибуты] [спецификторы] тип имя ([параметры])

{

Тело метода;

}

 

Атрибуты – это особые указания компилятору на свойства метода. Атрибуты используются редко.

Спецификаторы – это ключевые слова, предназначенные для разных целей, например:

· Определяющие доступность метода для других классов:

o private – метод будет доступен только внутри этого класса

o protected – метод будет доступен также дочерним классам

o public – метод будет доступен любому другому классу, который может получить доступ к данному классу

· Указывающие доступность метода без создания класса

· Задающие тип

Тип определяет результат, который возвращает метод: это может быть любой тип, доступный в C#, а также ключевое слово void, если результат не требуется.

Имя метода – это идентификатор, который будет использоваться для вызова метода. К идентификатору применяются те же требования, что и к именам переменных: он может состоять из букв, цифр и знака подчёркивания, но не может начинаться с цифры.

Параметры – это список переменных, которые можно передавать в метод при вызове. Каждый параметр состоит из типа и названия переменной. Параметры разделяются запятой.

Тело метода – это обычный программный код, за исключением того, что он не может содержать определения других методов, классов, пространств имён и т. д. Если метод должен возвращать какой-то результат, то обязательно в конце должно присутствовать ключевое слово return с возвращаемым значением. Если возвращение результатов не нужно, то использование ключевого слова return не обязательно, хотя и допускается.

Пример метода, вычисляющего выражение:

 

public double Calc(double a, double b, double c)

{

if (a > b)

return Math.Sin(a) * Math.Cos(b);

else

{

double k = Math.Tan(a * b);

return k * Math.Exp(c / k);

}

}

 

Перегрузка методов

Язык C# позволяет создавать несколько методов с одинаковыми именами, но разными параметрами. Компилятор автоматически подберёт наиболее подходящий метод при построении программы. Например, можно написать два отдельных метода возведения числа в степень: для целых чисел будет применяться один алгоритм, а для вещественных – другой:

 

/// <summary>

/// Вычисление X в степени Y для целых чисел

/// </summary>

private int Pow(int X, int Y)

{

int b = 1;

while (Y!= 0)

if (Y % 2 == 0)

{

Y /= 2;

X *= X;

}

else

{

Y--;

b *= X;

}

return b;

}

 

/// <summary>

/// Вычисление X в степени Y для вещественных чисел

/// </summary>

private double Pow(double X, double Y)

{

if (X!= 0)

return Math.Exp(Y * Math.Log(Math.Abs(X)));

else if (Y == 0)

return 1;

else

return 0;

}

 

Вызывается такой код одинаково, разница лишь в параметрах – в первом случае компилятор вызовет метод Pow с целочисленными параметрами, а во втором – с вещественными:

Pow(3, 17);

Pow(3.0, 17.0);

 

Параметры по умолчанию

Язык C# начиная с версии 4.0 (Visual Studio 2010) позволяет задавать некоторым параметрам значения по умолчанию – так, чтобы при вызове метода можно было опускать часть параметров. Для этого при реализации метода нужным параметрам следует присвоить значение прямо в списке параметров:

 

private void GetData(int Number, int Optional = 5)

{

Console.WriteLine("Number: {0}", Number);

Console.WriteLine("Optional: {0}", Optional);

}

 

В этом случае вызывать метод можно следующим образом:

GetData(10, 20);

GetData(10);

 

В первом случае параметр Optional будет равен 20, так как он явно задан, а во втором будет равен 5, т.к. явно он не задан и компилятор берёт значение по умолчанию.

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

 

private void GetData(int Optional = 5, int Number)

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 813; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.205.164 (0.007 с.)