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

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

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

MessageBox("Say Hello");

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

}

Функция MessageBox("Say Hello"); вызывает окно сообщений, в котором написан текст Say Hello, который и является параметром этой функции.

Функция MessageBox() может принимать три параметра. Первый - это сами сообщение, второй – заголовок сообщения, третий – комбинация флагов (см. табл. 1.1,1.2,1.3).

Таблица 1.1. Комбинация кнопок MESSAGEBOX()

 

ID

 

 

Кнопки

 

MB_ABORTRETRYIGNORE

Abort, Retry, Ignore

 

MB_OK

 

 

OK

 

MB_OKCANCEL

 

 

OK, Cancel

 

MB_RETRYCANCEL

 

 

Retry, Cancel

 

MB_YESNO Yes, No

 

 

Yes, No

 

MB_YESNOCANCEL

 

 

Yes, No, Cancel

Таблица 1.2. Иконки MESSAGEBOX().

 

 

 

 

 

 

 

 

ID

 

Иконки

 

MB_ICONINFORMATION

 

Informational icon

 

 

 

MB_ICONQUESTION

 

Question mark icon

 

 

 

MB_ICONSTOP

 

Stop sign icon

 

 

 

MB_ICONEXCLAMATION

Exclamation mark icon

 

 

Таблица 1.3. Значения, возвращаемые MESSAGEBOX().

 

 

 

 

 

 

ID

 

Ответ после нажатия

 

IDABORT

 

Abort

 

 

IDRETRY

 

Retry

 

 

IDIGNORE

 

Ignore

 

 

IDYES

 

Yes

 

 

IDNO

 

No

 

 

IDOK

 

OK

 

 

IDCANCEL

 

Cancel

 

Итак, вы связали кнопки Say Hello и EXIT с событием BN_CLICKED. При нажатии на кнопку Exit программа завершается, а при нажатии на кнопку Say Hello выводится сообщение

"Say Hello".

Теперь вам осталось построить и выполнить программу.

4. Построение и выполнение программы

Для того, чтобы выполнить программу надо ее вначале сохранить. Зайдите в меню File и там нажмите на Save All.

Затем надо ее построить(скомпилировать). Зайдите в меню Build->Build Hello.exe, начнется построение программы (рис.1.15). Если компилятор не выдал сообщение об ошибке, которые можно посмотреть в появившемся внизу окошке, то можно смело запускать

11

программу.

Рис. 1.15. Компиляция программы.

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

Build->Execute hello_world.exe

Упражнение 1. Необходимо вставить еще одну кнопку с названием Beep c итендификатором IDC_BEEP_BUTTON, при нажатии на которую компьютер подает сигнал через диамик компьютера. Функция для подачи сигнала - MessageBeep((WORD)-2);

Упражнение 2. Необходимо вставить ещё одну кнопку, на нажатие которой появляется сообщение вида:

а) б)

в)

г)

д)

е)

12

ж)

з)

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

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

Сначала запустите Visual C++. Затем проделайте перечисленные ниже действия.

1)Выберите команду верхнего меню File→New.

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

3)Выберите проект типа Win32 Console application.

4)В строке Location укажите папку диска C:\, имя которой совпадает с вашей папкой

(например, "C:\work\Ivanov"). В строке Project Name введите "hello_world_console". По умолчанию Visual C++ сделает новую папку проекта C:\work\Ivanov\hello_world_console.

В ней будут сохраняться все файлы, относящиеся к данному проекту.

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

6)Нажмите кнопки OK, FINISH, OK.

2.Добавление в проект нового исходного файла

Чтобы включить в проект исходный текст программы, надо создать новый текстовый файл с текстом программы на Си++ и добавить его в проект. Для этого выполните следующие действия:

1)Выберите команду меню File→New.

2)В окне создания нового файла перейдите на закладку Files (рис. 1.16).

Рис. 1.16. Закладка Files (Файлы) в окне создания нового файла.

13

3)В списке выберите тип нового файла: C++ Source code (исходный файл Си++).

4)По умолчанию новый файл будет добавлен в текущий проект hello_world_console (т.к. установлен флажок Add to project).

5)В строке File name наберите имя нового файла – hello (расширение ".CPP" будетдобавленоавтоматически).

6)Нажмите OK.

MS Visual C++ создаст новый файл hello.cpp в папке C:\Ivanov\hello_world_console и

добавит его в проект hello_world_console. Новый файл автоматически будет открыт в окне текстового редактора (рис. 1.17). Наберите в нем текст программы, печатающей на экране короткое сообщение:

#include <iostream.h> int main()

{

cout << "Hello world!\n"; return 0;

}

Чтобы сохранить набранный текст на диске, выберите команду меню File→Save

Рис. 1.17. Окно текстового редактора с открытым файлом hello.cpp.

Сборка проекта Результатом сборки проекта является исполняемый файл программы, который может

работать независимо от MS Visual C++ 6.0.

Для сборки проекта выберите команду меню Build→Build hello_world_console.exe. В нашем примере проект содержит только один исходный файл (hello.cpp). В процессе сборки он будет скомпилирован и скомпонован со стандартной библиотекой ввода/вывода.

Информация о выполнении сборки от ображается в окне Output window (рис. 1.18). В нем выводятся сообщения, выдаваемые программами, работающими при сборке проекта: препроцессором, компилятором и компоновщиком. Среди этих сообщений могут встретиться сообщения об ошибках (errors) и предупреждения о возможных ошибках (warnings). Если таких сообщений не возникло, значит, сборка успешно завершена (рис. 1.18).

Рис. 1.18. Окно Output window (Окно вывода) расположено в нижней части окна Developer Studio.

Если есть ошибки, их надо устранить и снова попытаться собрать проект.

14

3.Запуск нового приложения

Врезультате сборки было создано консольное приложение. Такие приложения широко использовались до появления систем Windows. Они удобны для учебных целей, т.к. простая структура консольных программ позволяет на начальном этапе изучения языка программирования не отвлекаться на системные особенности программ для Windows.

Для запуска приложения выберите команду меню Build→Execute hello_world_console.exe.

После выбора команды запуска создаётся консольное окно – окно, напоминающее экран компьютера, работающего под управлением MS-DOS, а не Windows. Консольное приложение осуществляет ввод/вывод данных в пределах этого окна (рис. 1.19).

Рис. 1.19. Окно консольного приложения hello_world_console.exe.

Более подробные сведения об использовании среды разработки содержатся в справочной системе.

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

ООП - методология, основанная на представлении программ в виде совокупности объектов, которые между собой взаимодействуют, причем каждый объект является реализацией конкретного класса. ТоестьосновнымэлементомООПявляетсякласс.

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

Таким образом, в ООП абстрагирование - процесс введения типа данных «класс», т.е. таких существенных характеристик некоторых будущих объектов, которые и будут отличать их от других видовобъектов.

Общийформатдекларациитипаданных«класс» следующий:

вид_класса ID_класса (идентификатор данного типа данных) { элементы-данные; // Далее - просто «данные» элементы-функции;// Далее - просто «методы»

};

Рассмотримкраткуюхарактеристикуэлементов, составляющихописаниекласса.

Атрибут «вид_класса»

 

Видытипаданных«класс»: union

struct class

Атрибуты доступа

Элементы, входящиевшаблонкласса, могутиметьследующуюстепеньзащищенности: public - глобальный, общедоступный атрибут доступа; в этом случае элементы

общедоступныизлюбойфункциипроекта;

15

private - локальный, частный; элементы закрыты от общего доступа, и с ними могут работатьтолькометодыкласса;

protected - защищенные элементы класса, к ним имеют доступ методы данного класса и методыклассов, производныхотданногокласса.

Как правило, закрытые элементы - это внутреннее строение объектов, которое нас не должно интересовать.

Все три вида класса имеют степень защиты элементов, которую компилятор установит по умолчанию.

Вид union - степень защиты public, управлять ею нельзя.

Вид struct - степень защиты public, управлять защитой можно. Вид class - private, степенью защиты также можно управлять.

Для управления защитой элементов, входящих в состав класса, необходимо явно указать нужный атрибут, после которого добавить символ : (двоеточие).

Существуетдваспособасозданияобъектовстаким составомданных.

1.Между символами «}» и «;» помещается список идентификаторов объектов, и уже на этапе компиляции будут созданы объекты с указанным типом данных. При таком способе заданияатрибутID_классаможноопускать.

2.Декларацияобъектовкласса влюбомместепрограммыпомеренадобности:

ID_класса список ID объектов;

Данные, входящие в состав класса, - любой допустимый вид данных языка C++, за исключениемфайлов.

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

1.Методы, определяющиеоперациинадданными.

2.Функции-конструкторы, основная задача которых - создание и инициализация объектов данного классаразнообразнымиспособами.

3.Функции для уничтожения объектов после их использования - деструкторы.

Внешние функции, не входящие в состав класса, могут работать только с элементами класса, имеющимиатрибутдоступаpublic.

Декларацияметодовклассавозможна вдвухформах:

-вформеопределения, прикоторойприводитсяполныйтекстметода;

-в форме описания (прототип метода). В данном случае вне шаблона должно быть полное определение метода, при этом необходимо указать, к какому классу принадлежит данный метод. Для этого используется операция привязки «::». Назначение этой операции - привязать функцию к конкретному классу.

Использованиеэтойоперациивводитновоеопределение:

Полное квалификационное имя

Запись X:: аозначает: «Элемент а принадлежит классуX». Запись X ::f1 () означает: «Функция f1 принадлежит классу X».

Ивзаключение рассмотрим некоторыеприемыработыобъектамииметодами. Пустьвпроцессеработыпрограммысозданобъекткласса

ID_класса ID_объекта;

ипустьвсоставеклассаестьметодсидентификаторомID_метода. Тогда:

1.Прямойвызовметода

ID_объекта. ID_метода; //- использованаоперацияпривязки«точка».

2.Использованиекосвеннойадресации

ПустьобъявленуказательстипомID_класса:

ID_класса*ID_указателя;

Теперьуказательтипа ID_классаможноустанавливатьнасуществующие объекты этогокласса:

ID_указателя= & ID_объект;

-указательидентифицированадресомобъекта.

16

Косвенныйвызовметода:

ID_указателя-> ID_метода;

- использованаоперацияпривязки«стрелка».

3.Созданиеобъектов(безымянных) вдинамическойобластипамяти

ID_класса* ID_указателя - new ID_класса;

Компиляторсоздаетобъектнаэтапеработыпроекта. Косвенныйвызовметода:

ID_указателя-> ID_метода;

Упражнение 3. Написать объектную программу, иллюстрирующую прямой и косвенный способы обращения к методам. Пользовательский класс должен содержать необходимые элементы - данные, метод установки их начальных значений, метод печати, метод, решающий поставленную задачу. Коды методов – вне пространства определения класса.

а) разность трех целых чисел; б) произведение трех целых чисел; в) сумму трех целых чисел;

г) сумму трех чисел с плавающей запятой; д) разность трех чисел с плавающей запятой;

е) произведение трех чисел с плавающей запятой; ж) результат деления двух целых чисел с проверкой деления на ноль;

з) результат деления двух чисел с плавающей запятой с проверкой деления на ноль.

Пример. Сложение двух целых чисел.

#include <iostream.h>

class CMySum

{

int i; int j;

int rezult;

public:

void Set(int a, int b); void Print();

void CalculateSum();

};

void CMySum::Set(int a, int b)

{

i = a; j = b;

}

void CMySum::Print()

{

cout << "i="<<i << " j=" <<j << " i+j="<<rezult << "\n";

}

void CMySum::CalculateSum()

{

rezult = i+j;

}

void main(void)

17

{

CMySum objMySum; CMySum *p_objMySum;

cout << "Direct method.\n"; objMySum.Set(2,3); objMySum.CalculateSum(); objMySum.Print();

cout << "Indirect method.\n"; p_objMySum = &objMySum; p_objMySum->Set(4,5); p_objMySum->CalculateSum(); p_objMySum->Print();

}

Контрольные вопросы.

1)Рабочие области среды разработка MS Visual C++ 6.0.

2)Понятие проекта в Visual C++ 6.0.

3)Синтаксис функции MessageBox() Visual C++ 6.0.

4)Что в ООП означает понятие “класс” и что входит в его состав?

5)Перечислите виды классов, и укажите их различия?

6)Укажите способы управления защитой элементов, входящих в состав класса.

7)Что такое операция привязки, её основное назначение?

8)Дайте понятие полного квалификационного имени.

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

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

Цель работы: изучить способы использования элементов управления в среде Microsoft Visual C++ 6.0. Изучить основные способы работы по созданию конструкторов с захватом динамической памяти и деструкторов для её освобождения.

Часть 1. Среда разработки Microsoft Visual C++ 6.0.

Использование элементов управления.

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

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

При вводе в строке редактирования слов "Paint" и "Calculator", запускаются соответственно "Windows Paint" и "Windows Calculator".

При снятии флажка Visible, строка редактирования исчезает, а при снятии флажка Enabled, закрывается доступ к окну редактирования.

При отмечании флажков, все происходит наоборот.

При запуске вашей программы, главное окно будет выглядеть так (рис. 2.1):

18

Рис 2.1. Внешний вид лабораторной программы №2.

Вначале запустите Visual C++. Откройте пункт меню FILE -> NEW, перейдите на закладку Project. Отметьте MFC AppWizard(exe). В Project Name задайте имя программы Test.

Нажмите OK. Далее повторите все шаги по созданию проекта программы из лабораторной работы №1.

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

1)Для этого вначале выберите закладку "Resourse View" и раскройте пункт Hello Resource, как показано на рис. 2.2.

Рис. 2.2 Закладка Resource View

2)Щелкните два раза по надписи IDD_TEST_DIALOG. Справа появится окно проектирования диалоговой панели.

3)С помощью панели Controls расставьте элементы, управления как показано на рис. 2.1 и согласно таблице 2.1.

19

 

 

Таблица 2.1. Оконные элементы программы.

Объект

Свойство

Установка

 

Dialog Box

ID

IDD_TEST_DIALOG

 

 

Caption

The Test Program

 

 

Font

System, Size 10, страница Styles

 

 

панель Minimize

отмечена, страница Styles

 

 

панель Maximize

отмечена, страница Styles

 

Edit Box

ID

IDC_TEST_EDIT

 

Group Box

ID

IDC_STATIC

 

 

Caption

Test

 

Static Text

ID

IDC_STATIC

 

 

Caption

INSTRUCTIONS: To execute the Paint program: type Paint

 

 

 

in the edit box. To execute the Calculator program, type

 

 

 

Calculator in the edit box. To terminate the program, type

 

 

 

Exit in the edit box.

 

Check Box

ID

IDC_VISIBLE_CHECK

 

 

Caption

&Visible

 

Check Box

ID

IDC_ENABLED_CHECK

 

 

Caption

&Enabled

 

Push Button

ID

IDC_TEST_BUTTON

 

 

Caption

&Test

 

Push Button

ID

IDC_CLEAR_BUTTON

 

 

Caption

&Clear

 

Push Button

ID

IDC_EXIT_BUTTON

 

 

Caption

E&xit

 

 

Client edge

отмечен, страница Extended Styles

 

 

Static edge

отмечен, страница Extended Styles

 

 

Modal frame

отмечен, страница Extended Styles

 

3. Связывание переменных с окном редактирования и флажками

Для окна редактирования нужна переменная типа CString, используя эту переменную, мы сможем извлекать текст из окна редактирования, а также изменять его содержимое.

Также необходимо связать переменные с флажками, чтобы управлять ими и получать текущие состояния: включено, выключено.

1)Зайдите в View->ClassWizard и выберите закладку Member Variables. В этом пункте вы можете связывать переменные с элементами управления. Окно должно быть выглядеть как на рисунке 2.3:

2)Выберем в списке Control IDs идентификатор IDC_TEST_EDIT и нажмем кнопку Add Varible (рис.2.4)

3)В Member Varible Name задайте название - m_TestEdit и нажмите кнопку OK. Вы связали окно редактирования с переменной m_TestEdit, с помощью которой вы получите доступ к окну редактирования.

4)Теперь свяжите флажки с переменными, для этого перейдите к закладке Member Varible, идентификатор IDC_ENABLE_CHECK и нажмите на кнопку Add Varible. Задайте название переменной - m_EnableCheck. Посмотрите, эта переменная имеет категорию Value и тип BOOL. Переменная типа BOOL может принимать два значения TRUE и FALSE. TRUE - правда, а FALSE - ложь. Если флажок отмечен, то переменная будет иметь значения TRUE, а если нет - FALSE.

5)Теперь выберите в закладке Member Varible итендификатор IDC_VISIBLE_CHECK и нажмите на кнопку Add Varible. Задайте название переменной - m_VisibleCheck.

20