русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

В C# для инкапсуляции используются публичные свойства и методы объекта


Дата добавления: 2015-07-09; просмотров: 1522; Нарушение авторских прав


Индексатор представляет собой разновидность свойства. Если какой-то член класса оформлен в виде массива, с помощь средств языка можно создать для этого члена индексатор, позволяющий обращаться к отдельным элементам массива как к элементам массива — с помощью квадратных скобок. Синтаксис индексатора:

спецификатор тип this [список_параметров]

{ get код_доступа

set код_доступа }

Список_параметров содержит одно или несколько описаний индексов, по которым выполняется доступ к элементу. Чаще всего используется один индекс целого типа. Код_доступа представляют собой блоки операторов, которые выполняются при получении (get) или установки (set) элемента массива. Пример:

const int Child_Max = 20; //максимальное число детей (константа)

Person[] children = new Person[Child_Max];

int count_children=0; //число детей

public Person this[int i] //индексатор с именем this

{ get {if (i>=0 && i< count_children)return(children[i]);

else return(children[0]);}

Set

{ if (i==count_children && i< Child_Max)

{children[i] = value; count_children++;} }}

Имя у индексатора — this, в квадратных скобках в заголовке перечисляются индексы. В методах get и set, обеспечивающих доступ к массиву children, по которому ведется индексирование, анализируется корректность задания индекса. Закрытое поле count_children, хранящее текущее число детей, доступно только для чтения благодаря добавлению соответствующего метода-свойства. Запись в это поле происходит в методе set индексатора, когда к массиву children добавляется новый элемент.

Пример:

class EncapsulationExample

{privatedouble valueDouble;

privatestring valueString;

publicdouble Value

{get { return valueDouble; }

set

{valueDouble = value;

valueString = value.ToString();

}}

publicstring ValueString



{get { return valueString; }

set

{double tmp_value = Convert.ToDouble(value); //здесьможетвозникнутьисключение

valueDouble = tmp_value;

valueString = value; }}}

Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.

Управление доступом к членам класса достигается за счет использования четырех спецификаторов доступа: public, private, protected и internal. Модификатор protected применяется только при включении интерфейсов. Модификатор internal применяется в основном при использовании компоновочных файлов (assembly). Если некоторые методы класса A должны быть доступны для вызовов в методах класса B, являющегося потомком класса A, то такие методы следует снабдить атрибутом protected. Если некоторые методы должны быть доступны только для методов классов B1, B2 и так далее, дружественных по отношению к классу A, то такие методы следует снабдить атрибутом internal, а все дружественные классы B поместить в один проект. Назначение модификатора internal — заявить о том, что некоторый член известен во всех файлах, входящих в состав компоновочного, но неизвестен вне его. Проще говоря, член, отмеченный модификатором internal, известен только программе, но не где-то еще. Модификатор доступа internal чрезвычайно полезен при создании программных компонентов. Модификатор internal можно применить к классам и членам классов, а также к структурам и членам структур.

Спецификатор public разрешает доступ к соответствующему члену класса со стороны другого кода программы, включая методы, определенные внутри других классов. Спецификатор private разрешает доступ к соответствующему члену класса только для методов, определенных внутри того же класса. Таким образом, методы других классов не могут получить доступ к private-члену не их класса. Спецификатор доступа должен стоять первым в списке спецификаторов типа любого члена класса.

Общие принципы использования спецификаторов доступа public и private:

1. Члены, которые используются только внутри класса, следует определить как закрытые.

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

3. Если изменение члена может вызвать эффект, распространяющийся за пределы самого члена (т.е. действует на другие аспекты объекта), этот член следует определить как закрытый и обеспечить к нему контролируемый доступ.

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

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

6. Объявление переменных экземпляров открытыми допустимо, если нет причин делать их закрытыми.

Пример:

class EncapsulationExample

{ privatedouble valueDouble;

privatestring valueString;

publicdouble Value

{get { return valueDouble; }

set

{valueDouble = value;

valueString = value.ToString();

}}

publicstring ValueString



{get { return valueString; }

set

{double tmp_value = Convert.ToDouble(value); //здесьможетвозникнутьисключение

valueDouble = tmp_value;

valueString = value;

}}}

 

Наследование. Функциональное назначение. Реализация. Примеры применения.

Насле́дование— механизм объектно-ориентированного программирования позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.

Наследование (Генерализация) — объекты дочернего класса наследуют все свойства родительского класса.

Пример:

publicclass A { }

publicinterface I1 { }

publicinterface I2 { }

publicclass B : A, I1, I2 { }

Агрегация — объекты одного класса входят в объекты другого.

Пример:



<== предыдущая лекция | следующая лекция ==>
Объекты и их жизненный цикл. Создание и уничтожение объектов. | Наследование. Конструктор по умолчанию. Назначение.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.29 сек.