Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3_Разработка_Классов3.doc
Скачиваний:
4
Добавлен:
18.11.2018
Размер:
256.51 Кб
Скачать

2.5. Члены - данные.

Члены - данные класса это просто переменные, объявленные в описании класса. Их областью видимости по умолчанию является класс. По сравнению с членами - данными структур, можно управлять доступом к членам-данным класса, объявляя их как private, public или protected. Независимо от установленного уровня доступа, члены-данные класса могут использоваться всеми функциями этого класса. Уровень доступа определяет видимость членов-данных вне класса. Для работы с закрытыми членами-данными можно написать и использовать открытые свойства, обеспечивающие доступ к этим закрытым данным. Одна из функций таких свойств будет возвращать значение соответствующего закрытого члена класса (функция чтения), а другая - изменять его значение (функция записи).

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

Для каждого экземпляра класса в памяти создаётся своя отдельная копия членов-данных. Исключение делается только для членов-данных, объявленных как статические данные с модификатором static. В этом случае все экземпляры класса используют одну единственную копию соответствующего члена.

При работе членами-данными существуют некоторые рекомендации, заключающиеся в следующем:

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

  • Не нужно делать все члены-данные открытыми. Хорошим тоном считается такой, когда все данные-члены класса делаются закрытыми.

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

  • Чтобы избежать ввода неправильных значений для членов данных, необходимо контролировать значения вводимых данных.

  • Необходимо инициализировать все члены-данные класса либо в списке инициализаторов, либо в теле конструктора.

  • Члены-данные класса, размещаемые в памяти динамически, требуется уничтожать при удалении экземпляра этого класса.

2.6. Методы.

Методы-члены класса - это методы, принадлежащие классу. Они являются локальными по отношению к классу, в котором они определены, и не существуют вне класса. Функции-члены могут быть вызваны только изнутри класса. Они имеют доступ ко всем открытым, защищённым и закрытым членам-данным своего класса.

Открытые методы-члены класса представляют собой средство для организации взаимодействия (интерфейс) между пользователем и классом. Именно через открытые функции внешнее окружение класса получает доступ к тем возможностям, которые предоставляет класс.

Закрытые функции-члены предназначены только для использования самим классом. Их вызов пользователем класса не предполагается, они скрыты от внешнего мира. Для некоторых классов начальные процедуры инициализирующих действий могут потребовать выполнения кода довольно большого объёма. Для того, чтобы не загромождать им конструктор, лучше всего написать некоторую вспомогательную функцию, например, Init(), которая будет вызываться из конструктора и выполнять все необходимые действия. Такая функция никогда не должна напрямую вызываться пользователями класса и поэтому она должна быть закрытой.

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

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

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

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

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

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

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

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

public float Gety(float a, float b)

{

float sum = a+b;

return sum;

}

Тип метода определяет тип результата вычислений, осуществляемых этим методом. Наиболее часто употребляется термин «метод возвращает значение». Если метод не возвращает никакого значения, то в его заголовке задается тип void, а оператор return отсутствует.

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

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

double x = 0.1;

double y = Math.Sin(x);

Console.WriteLine(x);

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

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

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

public static double Sin( double a );

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]