- •А.Ю. Быков
- •Быков Александр Юрьевич
- •Подхода
- •Оглавление
- •Введение
- •1. Лабораторная работа № 1. Изучение диалоговых окон и элементов управления в Win api
- •1.1. Цель и задачи работы, требования к результатам ее выполнения
- •1.2. Краткая характеристика объекта изучения
- •1.2.1. Классификация диалоговых окон
- •1.2.2. Окна сообщений
- •1.2.3. Создание модального диалогового окна
- •1.2.4. Элементы управления диалогового окна
- •Кнопка, контрольный переключатель, радио кнопка
- •Текстовое поле
- •Примеры
- •Примеры посылки сообщений списку
- •1.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •1.4. Форма отчета по лабораторной работе
- •1.5. Вопросы для самоконтроля
- •2.1. Цель и задачи работы, требования к результатам ее выполнения
- •2.2. Краткая характеристика объекта изучения
- •2.2.1. Понятие класса и объекта
- •2.2.2. Доступность компонент класса
- •2.2.3. Основные элементы класса Компонентные данные и функции класса
- •Конструктор класса
- •Деструктор класса
- •2.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •2.4. Форма отчета по лабораторной работе
- •2.5. Вопросы для самоконтроля
- •3.1. Цель и задачи работы, требования к результатам ее выполнения
- •3.2. Краткая характеристика объекта изучения
- •3.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •3.4. Форма отчета по лабораторной работе
- •4.2.3. Особенности конструкторов при наследовании
- •4.2.4. Особенности деструкторов при наследовании
- •4.2.5. Переопределение функций. Виртуальные функции
- •4.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •4.4. Форма отчета по лабораторной работе
- •5.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •5.4. Форма отчета по лабораторной работе
- •6.2.2. Создание потока с помощью api – функций
- •6.2.3. Синхронизация потоков
- •1. Взаимное исключение.
- •3. Семафор
- •4. Событие
- •6.2.4. Синхронизация процессов
- •6.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •6.4. Форма отчета по лабораторной работе
- •6.5. Вопросы для самоконтроля
- •7. Лабораторная работа № 7. Изучение библиотеки классов mfc
- •7.1. Цель и задачи работы, требования к результатам ее выполнения
- •7.2. Краткая характеристика объекта изучения
- •7.2.1. Обзор упрощенной иерархии классов библиотеки mfc
- •7.2.2. Состав простейшего приложения в mfc
- •7.2.3. Обработка сообщений в mfc
- •Некоторые функции обработчики
- •7.2.4. Вывод графики в mfc
- •Графические объекты
- •Добавление обработчиков сообщений и событий в однодокументном приложении
- •Вывод графики и перерисовка
- •7.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •7.4. Форма отчета по лабораторной работе
- •7.5. Вопросы для самоконтроля
- •8. Лабораторная работа № 8. Изучение разработки приложений для платформы Microsoft .Net с использование библиотеки классов .Net Framework
- •8.1. Цель и задачи работы, требования к результатам ее выполнения
- •8.2. Краткая характеристика объекта изучения
- •8.2.1. Обзор платформы Microsoft .Net
- •8.2.2. Единая среда исполнения
- •8.2.4. Понятие управляемого кода
- •8.2.6. Система общих типов
- •8.2.7. Обзор библиотеки классов .Net Framework
- •8.2.8. Класс Form
- •8.2.9. Обработка событий
- •8.2.10. Основные элементы управления
- •8.4. Форма отчета по лабораторной работе
- •8.5. Вопросы для самоконтроля
- •Заключение
- •Рекомендуемые источники
- •Приложение а. Варианты заданий для выполнения лабораторных работ Варианты заданий для лабораторной работы № 1
- •Варианты заданий для лабораторной работы № 2
- •Варианты заданий для лабораторной работы № 3
- •Варианты заданий для лабораторной работы № 4
- •Варианты заданий для лабораторной работы № 5
- •Варианты заданий для лабораторной работы № 6
- •Часть I
- •Часть II
- •Варианты заданий для лабораторной работы № 7
- •Варианты заданий для лабораторной работы № 8
Пример выполнения работы
Для решения задачи в среде Microsoft Visual Studio 2013 было создано стандартное консольное приложение (проект типа Win32 Console Application) с установленным свойством «Пустой проект» (Empty project). В проект добавлен файл с расширением .cpp, исходный код которого приведен ниже.
Листинг программы с комментариями:
#include <stdlib.h>
#include <iostream>
using namespace std;
class point // Базовый класс - "Точка на плоскости"
{
double x, y; // Координаты точки
public:
point(double x, double y) // Конструктор для инициализации полей
{
this->x=x; this->y=y;
}
virtual void print() // Метод для печати полей (виртуальный)
{
cout<<"\nx="<<x<<" y="<<y; // Печатаем значения полей
}
};
class point3d: public point // Производный класс - "Точка в пространстве"
{
double z; // Новое поле - координата z
public:
point3d(double x, double y, double z): // Конструктор
point(x, y) // Явный вызов конструктора базового класса
{
this->z=z;
}
void print() // Переопределенный метод print
{
point::print(); // Вызов в переопределенном методе метода
// базового класса
cout<<" z="<<z; // Допечатывает поле z
}
};
int main(int argc, char* argv[])
{
point p1(1, 2); // Создается объект с вызовом конструктора
point3d p3(3, 4, 5); // Создается объект с вызовом конструктора
point *pp; // Указатель типа базового класса
pp=&p1; // Настраиваем на объект базового класса
pp->print(); // Вызов метода через указатель
pp=&p3; // Настриваем указатель на объект производного класса
// (преобразование типа допустимо)
pp->print(); // Вызов метода через указатель, вызывается метод класса point3d
// Если метод print в классе point был объявлен без virtual,
// то вызывался бы метод print класс point
system("pause"); // Останавливаем программу до нажатия любой клавиши
return 0;
}
4.4. Форма отчета по лабораторной работе
Отчет должен содержать: титульный лист, цель работы, условие задачи, текст программы с комментариями, вывод результатов работы программы, выводы по работе.
4.5. Вопросы для самоконтроля
1. Производные классы, статусы доступа наследуемых полей и методов в производных классах.
2. Особенности конструкторов с производных классах.
3. Особенности деструкторов с производных классах.
4. Переопределение функций в производных классах, виртуальные функции.
5. Статическое и динамическое связывание.
5. Лабораторная работа № 5. Изучение абстрактных классов
5.1. Цель и задачи работы, требования к результатам ее выполнения
Цель работы состоит в овладении навыками разработки программ на языке Си++ с использованием абстрактных классов при наследовании. Для достижения цели необходимо выполнить следующие задачи:
- изучить необходимые учебные материалы, посвященные абстрактным классам в языке Си++ [1, 3];
- разработать программу на языке Си++ для решения заданного варианта задания;
- отладить программы;
- представить скриншот окна с результатами работы программы;
- подготовить отчет по лабораторной работе.
5.2. Краткая характеристика объекта изучения
Абстрактный класс это класс, который имеет в своем составе хотя бы одну чистую виртуальную функцию (ЧВФ) [1, 3]. ЧВФ не имеет тела и ничего не делает.
Формат объявления чистой виртуальной функции внутри класса:
virtual <тип_возвр_значения> <имя_функции>(<список_форм_парам>)=0;
Пример объявления такой функции c именем MyFun и двумя параметрами типа double (имена параметров в заголовке не обязательны):
virtual void MyFun(double, double)=0;
Нельзя создать объект абстрактного класса (тип указателя на абстрактный класс может быть). Абстрактный класс нужен, чтобы на его основе создавать обычные классы, являющиеся его «наследниками», в которых ЧВФ переопределяются или заменяются на обычные функции.
