- •Ссылочный тип данных. Определение, отличия от переменной-указателя. Передача параметра в функцию по ссылке.
- •Псевдокод. Определение, примеры хорошего и плохого псевдокода.
- •Бинарные файлы. Преимущества и недостатки использования бинарных файлов, функции для записи и чтения бинарных файлов в языке c.
- •Бинарные файлы. Запись массивов и структур в бинарные файлы. Примеры.
- •Файловая система. Путь до файла. Маска файлов. Атрибуты файлов.
- •Связные списки. Понятие контейнера, определение и классификация связных списков. Преимущества связных списков перед массивами.
- •Связные списки. Добавление элемента в начало, в конец, в произвольную позицию списка. Сравнение с добавлением в массив. Примеры.
- •Связные списки. Удаление элемента из списка. Сравнение с удалением из массива. Примеры.
- •Связные списки. Обход списка. Сортировка списка. Примеры.
- •Основы ооп. Различия функциональной и объектной декомпозиции. Мотивация введения ооп. Понятия класса и объекта.
- •Основы ооп. Конструкторы и деструкторы. Определения, примеры реализации. Перегрузка конструкторов.
- •Основы ооп. Решение задачи создания списочной структуры средствами ооп (задача о списке студентов).
- •Библиотека mfc. Отличия создания программы под Windows с графическим интерфейсом от консольного приложения. Понятия окна и сообщения.
- •Библиотека mfc. Этапы работы программы под mfc. Понятие компонента. Основные компоненты mfc.
Основы ооп. Конструкторы и деструкторы. Определения, примеры реализации. Перегрузка конструкторов.
Инициализация и де‐инициализация • Для инициализации объекта класса используется специальная функция «конструктор класса» • Для де‐инициализации класса используется специальная функция «деструктор класса»
Конструктор класса • Функция - конструктор класса вызывается автоматически в момент создания экземпляра класса (объекта). • Конструктор является хорошим местом для инициализации объекта. • Имя функции конструктора должно совпадать с именем класса. • Функция‐конструктор ничего не возвращает (даже void).
Деструктор класса • Функция ‐ деструктор класса вызывается автоматически в момент перед разрушением экземпляра класса (объекта). • Деструктор является хорошим местом для освобождения выделенных ресурсов (например, выделенной памяти). • Имя функции деструктора должно начинаться с символа «тильда» ~, а в остальном совпадать с именем класса. • Функция‐деструктор ничего не возвращает (даже void).
Пример конструктора и его перегрузки:
classbooks
{
public:
int nomer;
string name;
string author;
int page;
int cost;
books* next;
books()
{
nomer = 0;
name = "";
author = "";
page = 0;
cost = 0;
};
books(string name1, string author1, int page1, int cost1)
{
name = name1;
author = author1;
page = page1;
cost = cost1;
};
~books() {};
};
Пример деструктора:
class list
{
private:
books* start;
books* current;
books* tmp;
public:
list();
~list();
};
list::list()
{
start = NULL;
current = NULL;
tmp = NULL;
}
list::~list()
{
if (start != NULL)
{
while (start != NULL)
{
tmp = start->next;
delete start;
start = tmp;
}
}
if (tmp != NULL)
deletetmp;
}
Основы ооп. Решение задачи создания списочной структуры средствами ооп (задача о списке студентов).
class Student
{
public:
Student() // Конструктор
{
_id = 0;
_name = _T("");
_avgMark = 0;
}
~Student() {} // Деструктор
voidSetId(int n) // Записать "Номер"
{
if (n > 0)
_id = n;
}
intGetId() // Прочитать "Номер"
{
return _id;
}
voidSetName(string name) //ЗаписатьИмя
{
_name = name;
}
stringGetName() //ПрочитатьИмя
{
return _name;
}
voidSetMark(float n) // Записатьоценку
{
if (n > 0)
_avgMark = n;
}
floatGetMark() // Прочитатьоценку
{
return _avgMark;
}
void Print()
{
cout<< _id <<". "<< _name;
cout<<" ("<< _avgMark<<")"<<endl;
}
private:
int _id; //Номер
string _name; //Имя
float _avgMark; //Оценка
};
int _tmain(int argc, _TCHAR* argv[])
{
Student s1;
cout<<"Созданные элементы:\n";
s1.Print();
s1.SetId(1);
s1.SetName("Иван Петров");
s1.SetMark(75);
cout<<"\n\nЗаполненные элементы:\n";
s1.Print();
return 0;
}
Библиотека mfc. Отличия создания программы под Windows с графическим интерфейсом от консольного приложения. Понятия окна и сообщения.
Консольное приложение • Главная функция ‐ main(). • Программа выполняется последовательно, при необходимости запрашивая у пользователя данные, например, используя функции getchar() или scanf().
Приложение Windows • Главная функция WinMain() • Программа получает сообщения от операционной системы и реагирует на эти сообщения.
Окна: • Все визуальные элементы в ОС «Windows» реализуются с помощью окон. • Окна могут быть вложены друг в друга. • Каждое окно имеет свой идентификатор (хэндл) тип HWND. • Зная идентификатор окна, к нему можно обращаться и производить с ним действия.
Сообщения Windows: • Сообщения – это средство общения окон между собой и операционной системы с окнами. • Сообщения – механизм уведомления окон о произошедших событиях. • Каждое сообщение состоит из целочисленного уникального кода и двух вспомогательных параметров (целых чисел), предназначенных для передачи доп. информации.
МFC – Microsoft Foundation Classes • Библиотека является надстройкой над Windows API; • Библиотека не запрещает использование функций WinAPI. • Функция WinMain() скрыта от программиста «внутри» MFC.
