Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OTVETY_K_EKZAMENU_PO_OOP.doc
Скачиваний:
10
Добавлен:
01.07.2025
Размер:
239.62 Кб
Скачать

34. 0Бщая характеристика стандартной библиотеки шаблонов.

Стандартная библиотека шаблонов предоставляет набор хорошо сконструированых и согласовано работающих вместе обобщёных компонентов C++. 0собая забота была проявлена для обеспечения того, чтобы все шаблоные алгоритмы работали не только со структурами даных в библиотеке, но также и с встроеными структурами даных C++. Напр, все алгоритмы работают с обычными указателями. 0ртогональный проект библиотеки позволяет прог-истам использовать библиотечные структуры даных со своими собствеными алгоритмами, а библиотечные алгоритмы - со своими собствеными структурами даных. Хорошо определёные семантические требования и требования сложности гарантируют, что компонент юзера будет работать с библиотекой, и что он будет работать эфективно. Эта гибкость обеспечивает широкую применимость библиотеки. Много усилий было потрачено, чтобы проверить, что каждый шаблоный компонент в библиотеке имеет обобщёную реализацию, кот имеет эфективность выполнения с разницей в пределах нескольких процентов от эфективности соответствующей проги ручной кодировки. Важным достижением в проекте была разработка библиотечной структуры, кот, будучи естественой и лёгкой для понимания, основана на прочной теоретической основе. Структура библиотеки: Библиотека содержит пять основных видов компонентов: алгоритм {algorithm}: определяет вычислительную процедуру. контейнер {container}: управляет набором объектов в памяти. итератор {iterator}: обеспечивает для алгоритма средство доступа к содержимому контейнера. функциональный объект {function object}: инкапсулирует функцию в объекте для использования дри компонентами. адаптер {adaptor}: адаптирует компонент для обеспечения различного интерфейса. Разделение позволяет нам уменьшить кол-во компонентов.

35. Ввод-вывод с исп-нием потоков stl.

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

Вставка. Запись байтов в поток. Извлечение. Чтение байтов из потока. <fstream>. Содержит определения шаблоных класов (например, ifstream, ofstream) для работы с последоват-ностями, хранимыми во внешних файлах. <iostream>. Содержит объявления стандартных глобальных потоковых объектов, таких как cin и cout для работы с консолью. Наиболее используемыми операторами - функциями класов вывод-вывода являются операторы сдвига « - вставка и » - извлечение. В качестве операндов обычно используются целочисленые переменые (константы), числа с плавающей запятой, последовательности символов и специальные символы (например, \n или endl - новая строка). Стандартной библиотека шаблонов использует пространство имен std. Часто для упрощения доступа к объектам библиотеки STL применяется директива using namespace std; Для вывода в стандартное устройство используется объект cout. Для ввода из стандартного устройства вывода используется объект cin. Хранение даных в файлах можно организовать с помощью специализированых класов ifstream, ofstream, fstream. Обычно класс ofstream используется для записи в файл, ifstream - для чтения из файла, fstream - для выполнения операций записи и чтения в течение одного сеанса работы с файлом. Для создания объектов - файловых потоков можно использовать конст-р по умолчанию. Для связи потокового объекта с файлом и его открытия можно использовать метод void open(const char *имяфайла).

36. Фундаментальные типы и их соответствие CLI размерным типам ( CLI Value type). Массивы в C++/CLI.

CLI - common language infrastructure. (Инфраструктура общего языка).

CLS - common language specisecation. (Спецификация общего языка).

CTS - система общих типов (Базовая основа всех типов .NET)

VES - virtual испольнительная система

CLR - испольнительная система

Таблица:

C++

Bool

Signed char

unsigned char

short

unsigned short

int

long

long long int

float

double

wchar_t

.NET

System::Boolean

Cbyte

Byte

Int 16

UInt 16

Int 32

Int 32

Int 64

Single

Double

Char

Object

String

Decimal 28 знаков

Пример создания типа:

Pubic enum class color

{red, blue, green}; color.red

Массивы: array<int>^a=gcnew array<int>(7);

For each (int i in a ) i=1;

37. Указатели, ссылки и константа пустого указателя в C++/CLI.

nullptr – нулевой указатель;

N* pn=new N(); | R^ hr= gcnew R();

N &rn=*pn; | R% rr=^hr;

т.е *---^ ; &---%; new---gcnew;

dynamic_cast----safe_cast

a.get = a->get

38. Ссылочные (reference) и размерные (value) классы в С++/CLI.

public ref – т.е. этот класс управляется сборщиком мусора

public ref class A

{protected : virtual_void_H() {console :: Writeline (“A.H”);}}

Производный ссылочный класс:

Public ref class B : A, I Perved

{public virtual_void_F(){Console :: Writeline(“B.F”);}

{public virtual_void G(){Console :: Writeline(“B.G”);}

Protected : virtual void H()_override {…}

Public delegate_void My delegate();-указатель на фун-цию кот. обрабатывает событие.

39. Свойства класса C++/CLI. Индексированные свойства класса.

Property – объеденяет в себе лучшие качества методов, т.е. это член класса, доступ к кот-ому не по адресу памяти, а по алгоритму. (есть алгоритм записи set и чтения get)

class c1;

public: property double default(t[int]) { double get (int index){. . .};

void set (int index, double value) {. . .}; };

40. Понятие делегата и события C++/CLI.

Delegate – список указателей на методы класса, кот-ые нужно выполнить.

delegate_void_D(int i);

ref_struct B{ static void G(int i) {Console::Writeline(“G;”+ i. toString());};

ref struct A{stati void F(int i) {Console::Writeline(“F;”+ i. toString());};

//Создадим объект делегата: main:

D^d=gcnew D(&A::F); d(1);//F:1

d+=gcnew D(&B::G); d(2);//F:2; G:2

d-=gcnew D(&A::F); d(3); //G:3 Эти делегаты будут использоваться в событиях.

Каждому событию соответствуют делегат.

События добавлены, чтобы повысить функциональность без разработки произв. класса.

Public delegate void EventHandler (Object^_sender, EventArgs^ e);

ref class Button() // пусть есть класс кнопка

{ public: event EventHandler^_click; };

___________

public ref class Form1 { Button^ b; // пусть есть класс форма

void Button1_click(Object^ sender, EventArgs^ e); {. . .};

public: Form1{ b=gcnew Button(); b->click+=gcnew EventHandler (this, &Form1:: Button1_click)};

41.Использование RTTI

Идентификация типов при выполнении программы RTTI (Run-Time Туре Identification) позволяет вам написать переносимую программу, которая способна определять фактический тип объекта в момент выполнения даже в том случае, если программе доступен только указатель на этот объект. Это дает возможность, например, преобразовывать тип указателя на виртуальный базовый класс в указатель на производный тип фактического объекта данного класса. Таким образом, преобразование типов может происходить не только статически - на фазе компиляции, но и динамически - в процессе выполнения. Динамическое преобразование указателя в заданный тип осуществляется с помощью оператора dynamic_cast. pb = dynamic_cast<B*>(pd);

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

42. Расширения обработки исключений C++/CLI. Класс Exception.

virtual String^ Message

try{. . .} catch(Exception^ e){};//перехватит все исключения

К примеру:

catch ( ArithmeticException^ e )

{};//арифм. исключения-деление на ноль, переполнение

SystemException и ApplicationException

43. Общая характеристика платформы .NET и библиотеки классов WinForms.

NET:

+полностью Объектно-Ориетнтируема;

+не зависит от языков;

+прога теперь пишется не для ОС а для .NET;

+есть сборщик мусора;

-ориентирован. на С++ и С#;

-есть ошибки.

Самый базовый тип - System::Object; System: - базовое пространство имен.

Сущ-уют 2 типа: 1). Типы значения value type (от него создавать базовый класс). 2). Ссылочные типы handle type (Обычные классы как в С++) .NET все объекты динамические

45. Классы Object, Component.

Класс object не является абстрактным.

Базовый для всех классов. Есть конструктор object и деструктор Finalize() String^_ToString(); //У любого объекта есть строковое представление

Console

Класс component, есть много определенный component-это базовый класс(производные от него классы-все что в toolbox).

Icontainer^ container –объект,содержащий 0 или более компонентов.

Bool DesignMode

Virtual_void_dispose() sealed

Virtual_event Event Handler^_disposed sealed