
- •1. Понятие 00п. Причины появления 00п.
- •2. Инкапсуляция св-в объекта
- •3. Насл-е св-в
- •4. Полиморфизм поведенческих св-в объектов
- •5. Роль типов даных в яп
- •6. Этапы 00п.
- •8. Заголовочные файлы.
- •10. Константы, парамы по умолчанию.
- •11. Ссылки.
- •12. Перегрузка функций.
- •13. Классы и объекты.
- •14. Члены класса.
- •15. 0Писание класов.
- •16. Конст-ры, деструкторы.
- •17. Конст-р копирования, Конст-р присваивания.
- •18. Друзья класса.
- •19. 0Бъекты с автоматически распределяемой памятью.
- •20. 0Бъекты с динамически распределяемой памятью
- •21. Производные классы: одиночное насл-е.
- •22. Модификаторы доступа.
- •23. Переопределение функций в производном класе. Вирт-ые функции.
- •24. 0Ператор разрешения контекста.
- •25. Приведение типов объектов.
- •26. Абстр-ые классы. Чисто вирт-ые функции.
- •27. Множвеное насл-е. Сравнение множвеного насл-я с одиночным.
- •28. "Правильное" множвеное насл-е. Понятие интерфейса.
- •29. Парамизованые классы.
- •30. Парамизованые функции.
- •31. Перегрузка операций. Перегрузка унарных операторов.
- •32. Перегрузка операций. Перегрузка бинарных операторов.
- •33. Исключения и их обработка.
- •34. 0Бщая характеристика стандартной библиотеки шаблонов.
- •35. Ввод-вывод с исп-нием потоков stl.
- •46. Классы Control, ScrollableControl, ContainerControl.
- •47. Классы WinForms Application, Screen.
- •48. Классы-контейнеры List, ArrayList.
- •49. Классы Pen, Brush, Font, Graphics.
- •50. Класс Form.
- •51. Классы WinForms для реализации кнопок.
- •52. Классы WinForms для реализации строк редактирования.
- •53. Классы WinForms для реализации списков и выпадающих списков.
- •54. Классы WinForms для реализации меню и инструментальных панелей
- •55. Классы WinForms для реализации контейнеров управляющих элементов.
- •56. Методика работы с диалоговыми окнами.
- •57. Сериализация, десериализация.
- •58.Разработка компонентов.
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