билет 14 (Ответы на билеты)
Описание файла
Файл "билет 14" внутри архива находится в папке "Bilety_s_otvetami-progr". Документ из архива "Ответы на билеты", который расположен в категории "". Всё это находится в предмете "программирование" из 3 семестр, которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "программирование" в общих файлах.
Онлайн просмотр документа "билет 14"
Текст из документа "билет 14"
1)Ссылочные типы
Все ссылочные типы произведены от базового типа object, являющегося точным эквивалентом класса System.Object . Сам по себе тип object в основном используется для упаковки значений, подробно обсуждавшейся выше. Другая, более важная роль типа object заключается в том, что он является корнем для всей иерархии объектов в .NET и по умолчанию все классы унаследованы именно от System.Object . Классы могут иметь свои поля, методы, реализовывать интерфейсы и т.п. Так как классы представляют собой основной механизм организации программ и данных в C#, мы уделим им особое внимание в последующих слайдах.
Интерфейс представляет собой ссылочный тип, который может иметь только абстрактные элементы
Общая система типов (CTS)
В этой части будет описаны понятия и определены термины, облегчающие понимание общей системы типов. CTS определяет, как типы объявляются, используются и управляются во время исполнения.
CTS поддерживает две категории типов, каждая из которых, в свою очередь, делиться на две большие категории:
• Структурные типы – содержат локальные копии данных, а состояние структурного типа храниться в стеке или расположено непосредственно в виде участка памяти. Они могут быть как встроенные (реализуемые средой исполнения), так и определяться пользователем.
• Ссылочные типы – хранят указатели на значения в адресном пространстве, и их данные расположены в области управляемой кучи.
Так как переменные структурных типов хранят собственные копии данных, операции с одной переменной не влияют на другие переменные. В случае же с переменными ссылочных типов возможна ситуация, когда несколько переменных могут указывать на один и тот же объект; соответственно, операции, выполняемые с одной переменной, влияют на объект, на который указывает другая переменная.
Переменные целочисленных типов и перечисления также являются структурными данными. Все типы производны от базового типа System.Object.
Удаление переменных описанных типов происходит по-разному. Переменные структурных типов удаляются при выходе за область видимости переменной, а переменные ссылочных типов уничтожаются при выполнении сборки мусора.
2) Сокрытие методов. Это и есть инкапсуляция т.е. сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен лишь интерфейс объекта, через который осуществляется всё взаимодействие с ним.
class Array {
public:
void Alloc(int _len);
void Free();
inline double Elem(int i);
inline void ChangeElem(int i, double x);
protected:
int len;
double* val;
};
void Array::Alloc(int new_len)
{if (len>0) Free(); len=new_len; val=new double[new_len];}
void Array::Free() {delete [] val; len=0;}
inline double Array::Elem(int i)
{assert(i>=0 && i inline void Array::ChangeElem(int i, double x) {assert(i>=0 && i Рассмотрим особенности реализации сокрытия данных в языке программирования C#. Заметим, что в языке C# существует возможность описания объектов как экземпляров в составе подкласса с использованием зарезервированного слова new. При этом происходит сокрытие одноименных наследуемых экземпляров в подклассах. Проиллюстрируем особенности использования механизма сокрытия данных в языке программирования C# следующим фрагментом программы: class A { public int x; public void F() { ... } public virtual void G() { ... } } class B : A { public new int x; public new void F() { ... } public new void G() { ... } } B b = new B(); b.x = ...; // имеет доступ к B.x b.F(); ... b.G(); // вызывает B.F и B.G ((A)b).x = ...; // имеет доступ к A.x ((A)b).F(); ... ((A)b).G(); // вызывает A.F и A.G 3) Для того, чтобы объявить закрытые классы и методы необходимо определить спецификатор доступа, в данном случае это private.