Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ООП_Лабораторный практикум

.pdf
Скачиваний:
79
Добавлен:
11.05.2015
Размер:
1.5 Mб
Скачать

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ “БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ”

Факультет телекоммуникаций

Кафедра СиУТ

Курс “ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ”

ЛАБОРАТОРНЫЙ ПРАКТИКУМ.

для специальности

I-45 01 03 Сети телекоммуникаций

Составитель:

м.т.н., асс. каф. СиУТ Смолякова О.Г.

Минск 2006

Содержание.

 

Лабораторная работа №1. Cоздание простейшего консольного приложения и приложения с

 

иcпользованием классов MFC. Введение в тип данных КЛАСС (С++)............................................

3

Часть 1. Среда разработки Microsoft Visual C++ 6.0. Создание простейшей программы

 

средствами MFC..................................................................................................................................

3

Часть 2. Среда разработки Microsoft Visual C++ 6.0. Создание простейшей консольной

 

программы. ........................................................................................................................................

13

Часть 3. Введение в тип данных КЛАСС. ......................................................................................

15

Лабораторная работа №2. Использование элементов управления. Использование конструктора и

деструктора. Работа с динамической памятью. .................................................................................

18

Часть 1. Среда разработки Microsoft Visual C++ 6.0. Использование элементов управления. .

18

Часть 2. Использование конструктора и деструктора. Работа с динамической памятью. ........

27

Лабораторная работа №3. Работа с мышью. Работа с динамической памятью. Одномерный

 

динамический массив. ..........................................................................................................................

30

Лабораторная работа №4. Работа с клавиатурой. Работа с динамической памятью.

 

Использование дружественных функций...........................................................................................

35

Лабораторная работа №5. Работа с меню. Работа с динамической строкой и перегрузка

 

операций. ...............................................................................................................................................

40

Лабораторная работа №6. Рисование фигур. Наследование и механизм виртуальных функций.48

Лабораторная работа №7. Работа программы в фоновом режиме. Шаблоны классов..................

62

Лабораторная работа №8. Основы программирования с помощью Win API. Обработка

 

исключительных ситуаций (C++)........................................................................................................

67

Литература.............................................................................................................................................

80

2

Лабораторная работа №1.

Cоздание простейшего консольного приложения и приложения с иcпользованием классов MFC. Введение в тип данных КЛАСС (С++).

Цель работы: изучить основы программирования в среде Microsoft Visual C++ 6.0. Научиться создавать простейшие проекты. Познакомиться со структурой объектноориентированной программы.

Часть 1. Среда разработки Microsoft Visual C++ 6.0. Создание простейшей программы средствами MFC.

Microsoft Visual C++ 6.0 – это интегрированная среда разработки программ, объединяющая текстовый редактор, компилятор, компоновщик и отладчик.

Visual C++ выполняет компиляцию и запуск программ в соответствии с проектом. Проект – это структура данных, содержащая всю информацию, необходимую для компиляции исходных файлов программы и ее компоновки со стандартными библиотеками (например, библиотекой ввода/вывода).

Компиляция и компоновка исходных файлов называется сборкой проекта. В результате успешной сборки Visual C++ создает приложение (двоичный исполняемый файл программы).

1. Создание нового проекта

Проект состоит из набора файлов с исходным текстом программы (исходных файлов) и набора параметров, определяющих компиляцию и компоновку этих файлов в исполняемый файл приложения. У проекта должно быть уникальное имя. Параметры проекта хранятся в файлах с расширениями ".DSW" и ".DSP" в папке проекта.

Далее подробно описаны действия по созданию проекта простого приложения Visual

C++.

Запустите Visual C++ и проделайте перечисленные ниже действия. 1) Выберите команду верхнего меню File→New (рис. 1.1).

Рис. 1.1. Выбор команды File→New

3

2) Перейдите на закладку Projects (рис. 1.2).

Рис. 1.2. Закладка Projects в окне создания нового файла

3)Выберите проект типа MFC AppWizard(exe).

4)В строке Location (Местоположение) укажите папку диска C:\, имя которой совпадает с вашей папкой (например, "C:\work\Ivanov"). В строке Project Name введите "hello_world". По умолчанию Visual C++ сделает новую папку проекта C:\work\Ivanov\hello_world. В ней будут сохраняться все файлы, относящиеся к данному проекту.

5)По умолчанию в качестве целевой платформы проекта указывается Win32. Не изменяйте этот параметр.

6)Нажмите OK. Теперь выбираем Dialog based, как показано на рис. 1.3. Этим задаем компилятору, что программа будет основана на диалоговых окнах.

Рис 1.3. Шаг 1 создания MFC проекта.

4

7)После нажатия кнопки NEXT, в следующем окне в группе "What features would you like to include" вводим “The Hello Program”, как показано на рисунке 1.4.

Рис 1.4. Шаг 2 создания MFC проекта.

8)Нажмите NEXT. Вы видите, что диалоговая панель задает два вопроса. Выбирайте, как показано на рис. 1.5.

Рис 1.5. Шаг 3 создания MFC проекта.

9)Нажмите FINISH, затем OK. Посмотрите, чтобы было выбрано все, как показано на рис. 1.6.

5

Рис 1.6. Шаг 4 создания MFC проекта.

Создание проекта программы закончено.

Все каркасные файлы для вашей программы написал Visual C++, с помощью мастера настроек MFC AppWizard.

2.Проектирование диалоговой панели.

Перейдите на закладку "Resourse View" и раскройте пункт Hello Resource, как показано на рис. 1.7

Рис 1.7. Закладка "Resourse View"

6

Вы видите две записи:

1)IDD_ABOUTBOX - название диалоговой панели ABOUT

2)IDD_HELLO_DIALOG - название главной диалоговой панели. Выполните щелчок по второй строчке и справа появится диалоговая панель. В этом режиме вы можете ее редактировать (см. рис. 1.8).

Рис 1.8. Диалоговая панель.

Удалите из диалоговой панели текст: "TODO:.." и две кнопки, для этого щелкните на эти элементы и нажмите DEL. Теперь у вас чистая панель и вы можете спроектировать ее на свой вкус.

Справа от диалоговой панели находятся элементы управления (если вы их не видите, то зайдите в TOOLS->CUSTOMIZE, в закладке TOOLBARS, CONTROLS - поставьте флажок). Вы можете редактировать панель в полном экране, для этого зайдите в VIEW->FULLSCREEN.

Сейчас вы Выберите в элементах управления Button,

и щелкните мышкой на диалоговую панель, которая должна выглядеть, как показано на рис. 1.9

.

Рис.1.9. Вид окна программы

7

Выделите кнопку левым щелчком мыши, затем нажмите правую кнопку и в раскрывшемся меню Выберите Properties(настройки). Выведется такая диалоговая панель (рис

1.10).

Рис.1.10. Окно свойств

Вместо текста IDC_BUTTON1 введите IDC_SAYHELLO_BUTTON, вы задали идентификатор, по которому VC будет распознавать элемент. В строке Captions(надпись), введите название кнопки Say Hello.

Вставьте теперь еще одну кнопку такого же размера c ID - IDC_EXIT_BUTTON и Captions(надпись) - Exit. Ваша диалоговая панель должна выглядеть, как показано на рис. 1.11.

Рис.1.11 Вид окна программы

Вы закончили визуальное проектирование диалоговой панели!

Отныне все свойства диалогового окна будут задавать таблицей, где будут указываться свойства элементов диалога. К примеру, для этого диалога, таблица будет выглядеть так:

Объект

Свойство

Установка

Dialog Box

ID

IDD_MYMSG_DIALOG

 

Caption

The Hello Program

Push Button

ID

IDC_SAYHELLO_BUTTON

 

Caption

SayHello

Push Button

ID

IDC_EXIT_BUTTON

 

Caption

Exit

3. Связывание элементов управления.

Свяжем элементы управления с событиями. У нас всего два элемента - это две кнопки: Say Hello и Exit.

Теперь мы будем пользоваться еще одним мастером ClassWizard. Зайдите в VIEW->ClassWizard, появится такая диалоговая панель (рис. 1.12)

8

Рис.1.12. Окно MFC ClassWizard.

Рассмотрим эту панель.

1)Project - здесь вы выбираете свой проект.

2)ClassName - название класса, элементы которого вы будете связывать с событиями, проверьте, чтобы там было установлено CHello_worldDlg - это класс, который связан с главным диалоговым окном.

3)Object IDs - это идентификаторы (названия) элементов управления, в нашем случае это две кнопки. Первый идентификатор - это название самого класса, оно туда включено, так как с ним связаны многие события (это такие значения, которые возвращаются Windows, при совершении какого-нибудь действия).

4)Messages - а это как раз те самые события, которые генерирует программа. К примеру, если вы нажали на кнопку, то генерируется событие BN_CLICKED, а если два раза - то

BN_DOUBLECLICKED.

5)Members function - это список функций, которые вы включили, и соответствующие им события.

Теперь свяжем кнопку EXIT с событием BN_CLICKED - оно возникает при нажатии на кнопку. Для этого щелкнем в Object IDs на IDC_EXIT_BUTTON, справа появится события, с которыми можно связать эту кнопку. Выбираем там BN_CLICKED. И щелкаем на кнопке Add Function, которая находится справа. Этим нажатием вы говорите Visual C++, что вам необходимо связать это событие с функцией. Выведется диалоговая панель (рис 1.13), в которой будет предложено выбрать название функции. Оставьте все по умолчанию и нажмите кнопку OK.

Рис. 1.13. Диалоговая панель о добавлении функции-члена класса.

9

В Members function появилась запись о том, что мы связали кнопку (c идентификатором

IDC_EXIT_BUTTON) с функцией OnExitButton. Теперь нажимаем кнопку Edit Code, которая находится ниже кнопки Add Fucnction. При нажатии на эту кнопку мы переходим в режим редактирования исходного текста. В окошке появится тест:

void CHelloDlg::OnExitButton()

{

// TODO: Add your control notification handler code here

}

Коментарий // TODO: Add your control notification handler code here говорит, что после него можно вставлять свой код.

Начало вашего кода будет обозначаться

///Здесь начинается ваш код///

А конец вашего кода -

///Здесь заканчивается ваш код///

Теперь введем код, для этого вам надо переписать его

void CHelloDlg::OnExitButton()

{

// TODO: Add your control notification handler code here

///Здесь начинается ваш код///

OnOK();

///Здесь заканчивается ваш код///

}

Вы написали OnOK();, эта функция будет выполняться при каждом нажатии на кнопку EXIT, и она предназначена для завершения программы. Проверьте, чтобы в написании OnOK, OK было написано с большой буквы, иначе, при компиляции программы, Visual C++ сообщит вам об ошибке, так символы верхнего и нижнего регистра в VC имеют распознаются поразному.

Итак вы связали кнопку EXIT с событием BN_CLICKED, а его с функцией OnExitButton, которая будет выполняться при каждом нажатии на кнопку EXIT.

Теперь свяжем кнопку Say Hello с событием BN_CLICKED. Для этого зайдем в меню

VIEW->ClassWizard.

Выберем в Object IDs IDC_SAYHELLO_BUTTON

Щелкнем на BN_CLICKED в Messages( этим вы связываете кнопку Say Hello с событием

BN_CLICKED).

Нажимаем на Add function, этим вы связываете событие BN_CLICKED с функцией. В раскрывшемся окне оставляем все по умолчанию и нажимаем кнопку OK.

Затем нажимаем на кнопку Edit Code, для редактирование исходного текста. И в раскрывшемся окне пишем следующий код:

void CHelloDlg::OnSayhelloButton()

{

// TODO: Add your control notification handler code here

///Здесь начинается ваш код///

10