Опубликован: 15.09.2010 | Доступ: свободный | Студентов: 4806 / 630 | Оценка: 3.97 / 3.80 | Длительность: 14:45:00
Лекция 5:

Классы: основные понятия

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >

Методы

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

Метод представляет собой законченный фрагмент кода, к которому можно обратиться по имени. Он описывается один раз, а вызываться может столько раз, сколько необходимо. Один и тот же метод может обрабатывать различные данные, переданные ему в качестве аргументов.

Синтаксис метода:

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

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

При описании методов можно использовать спецификаторы 1–7 из Таблицы 5.2, имеющие тот же смысл, что и для полей, а также спецификаторы virtual, sealed, override, abstract и extern, которые будут рассмотрены по мере необходимости. Чаще всего для методов задается спецификатор доступа public, ведь методы составляют интерфейс класса — то, с чем работает пользователь.

Пример простейшего метода:

public double Gety()           // метод для получения поля y из листинга 5.1
   {
       return y; 
   }

Тип определяет, значение какого типа вычисляется с помощью метода. Часто употребляется термин "метод возвращает значение". Если метод не возвращает никакого значения, в его заголовке задается тип void, а оператор return отсутствует.

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

Например, чтобы вычислить значение синуса для вещественной величины x, мы передаем ее в качестве аргумента в метод Sin класса Math, а чтобы вывести значение этой переменной на экран, мы передаем ее в метод WriteLine класса Console:

double x = 0.1;
double y = Math.Sin(x);
Console.WriteLine(y);

При этом метод Sin возвращает в точку своего вызова вещественное значение синуса, которое присваивается переменной y, а метод WriteLine ничего не возвращает. Иллюстрация вызова метода приведена на рис. 5.3.

Вызов метода

Рис. 5.3. Вызов метода

Внимание

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

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

public static double Sin( double a );

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

В листинге 5.2 в класс Demo добавлены методы установки и получения значения поля y.

using System;
namespace ConsoleApplication1
{   
    class Demo
    {
        public int a = 1;
        public const double c = 1.66;
        static string s = "Demo";
        double y;

        public double Gety()                // метод получения поля y
        {
            return y; 
        }

        public void Sety( double y_ )       // метод установки поля y
        {
            y = y_; 
        }

        public static string Gets()         // метод получения поля s
        {
            return s; 
        }
    }
    
    class Class1
    {   static void Main()
        {
            Demo x = new Demo();
            x.Sety(0.12);                   // вызов метода установки поля y
            Console.WriteLine(x.Gety());    // вызов метода получения поля y
            Console.WriteLine(Demo.Gets()); // вызов метода получения поля s
        }
    }
}
Листинг 5.2. Простейшие методы
< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Stefan Berzan
Stefan Berzan
Молдова, Кишинев
Дмитрий Казимиров
Дмитрий Казимиров
Россия, Омск