Свойства
Свойства представляют специальную синтаксическую конструкцию, предназначенную для обеспечения эффективной работы с полями. Правильной стратегией является закрытие полей - поля объявляются с модификатором protected или private. Клиенты класса не должны использовать информацию о том, как устроены поля, недолжны обращать к полям напрямую. Это облегчает возможную модификацию класса в будущем. Класс сможет изменить данные, сохранив интерфейс, реализованный по средством свойств. Также свойства могут реализовывать некоторый алгоритм обработки данных. Таким образом, свойства, предоставляют средства позволяющие читать, менять и проверять значения присеваемые полям класса. Свойство это более гибкая альтернатива поля. Свойства определяться следующим образом:
[<атрибуты>] [<модификаторы>] <тип> <идентификатор>
{
get {[<тело метода get>] return <возвращаемое значение>}
set {[<тело метода set >] >}
}
Метод доступа свойства get используется для возврата значения свойства, а метод доступа set используется для назначения нового значения. Эти методы доступа могут иметь различные уровни доступа.
Определение свойства C# подобно определению поля, за исключением того, что после имени свойства идет блок кода, заключенный в фигурные скобки. В блоке кода может быть два метода, называемые get и set. Метод get используется для получения (чтения) значения свойства, метод set для назначения (записи) значения свойства. Имя свойство может быть использовано в выражениях и операторах присваивания аналогично имени обычной переменной, но в действительности при обращении к свойству по имени автоматически вызываются его методы get и set. В методе set, определен параметр value, который является входным параметром, и содержит данные передаваемые из вне. Средство доступа get всегда возвращает тот же тип данных, который имеет свойство, к которому оно относится
Свойства не определяют место в памяти для хранения полей, а лишь управляют доступом к полям. Это означает, что само свойство не предоставляет поле, и поэтому поле должно быть определено независимо от свойства.
Рассмотрим пример работы со свойствами:
class Student
{
string name;
string group;
int year;
public void Print()
{
Console.WriteLine("Студент {0} группы {1} родился в {2}", name , group, year);
}
public Student(string NewName, string NewGroup, int NewYear)
{
name = NewName;
group = NewGroup;
year = NewYear;
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public string SetGroup
{
set
{
group = value;
}
}
public string GetGroup
{
get
{
return group;
}
}
public int Year
{
get
{
return year;
}
}
}
class Program
{
static void Main()
{
Student S1 = new Student("Ivanov", "BAS-11", 1990);
S1.Print();
S1.Name = "Petrov";
Console.WriteLine("Студент {0} группы {1} родился в {2}", S1.Name, S1.GetGroup, S1.Year);
S1.SetGroup = "BAS-21";
S1.Print();
Console.ReadLine();
}
}
В приведенном примере определено 4 свойства. Name для записи и чтения поля name. SetGroup для записи поля group. GetGroup для чтения поля group. Year для чтения поля year. Поля group и name могут меняться в процессе жизненного цикла, дата рождения студента нет, поэтому для поля year не определено свойство с методом set. При вызове метода Main, создаться объект S1 класса Student. Для этого вызывается одноименный конструктор, которому передаться инициализирующие значения. После создания объекта, вызывается метод Print, и на экран выводиться строка определенная кодом метода. При помощи свойства Name меняется, значение поля name. При помощи свойств Name, GetGroup, Year с методом get считываем и выводим на экран значения полей объекта. При помощи свойства SetGroup меняем значение поля group. Вызывается метод Print, и на экран выводиться строка определенная кодом метода.
- Основные понятия ооп
- Модификаторы доступа
- Uml, назначение, типы диаграм.
- Диаграмма классов
- Деструкторы
- Свойства
- Индексаторы
- Этапы проектирования класса.
- Отношения между классами
- Вложенные классы
- Наследование
- Отношения и их графическое изображение на диаграмме классов
- Полиморфизм
- Абстрактные классы
- Классы без потомков
- Интерфейсы
- Изображение интерфейсов и абстрактных классов на диаграмме классов
- Вложенные классы
- Статические классы
- Делегаты
- Криптография и .Net
- Сетевое программирование в c#
- Создание простого клиент-серверного приложения используя сокеты
- Многопоточность
- Разработка библиотек dll