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

OOП

.pdf
Скачиваний:
7
Добавлен:
23.02.2015
Размер:
623.16 Кб
Скачать

МИНИСТЕФедеральноеÑÒÂÎгосударственноевысшегоОБ АЗОВАНИЯпро ессиональногоавтономноеИ НАУКИбразовательноеобразованияОССИЙСКОЙучреждениеÔÅÄÅ ÀÖÈÈ

У АЛЬСКИЙ ФЕДЕ АЛЬНЫЙ УНИВЕ СИТЕТ имени первого Президента оссии Б. . Ельцина ИНСТИТУТ ЕСТЕСТВЕННЫХ НАУК МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по курсу Объектно-ориентированное программирование для студентов 3 года обучения

Екатеринбург, 2012

1

1.2

3

1

2

2.3

4

1

2

3

3.4

5

1

2

4.3

4

1

5.2

3

 

 

 

СОДЕ ЖАНИЕ

. . . . .

Интегрированная среда разработки Visual C++ .NET

Ïðî

ект для созда

я Windows-приложения на управляемом C++

приложение . . . . . . . . . . . . . . .

. . . . . .

 

Свойс ва экземпляров класса и работа

íèìè

 

аз абостоека

 

основе классов Windows Forms

 

 

 

приложенийПросто нак лькулятор . . .

 

 

Приложение асширенный калькулятор . . . . . . . . . . . .

Меню, кнопки быстрого доступа и стандартные окна диалога

Отображение текущего времени в строке статуса

 

 

управления Windows Forms

 

 

 

Элементы выбора Che kBox . . . . . . . . . . . . . . . . . .

. . . . . .

Компонент календарь DateTimePi ker

класс DateTime

тандартное и пользовательское орматирование даты и времени

Ñписки ComboBox . . . . . . . .

 

 

 

Зависимые кнопки RadioButton

 

 

 

УправлениеСо д

ормами . . . . . . . . . . . . . . . . .

 

 

элементов Form и их связь

 

 

 

 

несколькихлоготипом . . . .

 

 

 

азработка ормы входа в при ожение

 

 

 

Многопользоват льский калькулятор . . . . . . . . . . . . . . .

Программировани

гра ики с использованием библиотеки GDI+

Создание

объекта Graphi s

 

 

 

Простаяисов ния линий и игур . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

анимация . . . .

2

4

6

9

1

7

8

19

2

3

25

7

0

1

2

34

5

1

1.1ИнтегрированнаяПроект для созданиясредаWindowsразработки-приложенияVisualна управляемомC++ .NETC++

Для создания проекта перейдите в меню Файл, выберите пункт С ть и в

появившемся списке выберите Про кт.... После этого на экране

диалоговое окно

Прило(см. ðèñóíèîê 1). В списке слева выберите пункт CLR, а на панелипоявитсясеðедине укажите Windows Forms. Укажите мя проекта (не используйте ки иллицу!). Если

все сделано правильно, то на экране появится орма Form1 заготовка окна приложения.

 

исунок 1 Создание нового проекта в среде Visual Studio

В дальнейшем работа будет проводиться в двух направлениях.

 

1)

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

2)

Придание ункциональности элементам управления. Написание обработчиков собы•

 

òèé.

жение

 

 

1.2 Простое

приложение определим

 

Создадим первоеприлîстое приложение. Сначала

приложенияего внеш й вид. Добавим на орму текст приветствиясоздадимкнопку для завершения работы

. Для этого нужно сделать следующие шаги: 2

1)

Отк ойте вкладку П н ль эл м нто

Tool Box) в правой части окна. Эта закладка

 

ìñîäе),ржитко орыеразнообразнмогут бытье элементыразмещены(управляющиеíà îðìå.

и пассивные, видимые и невиди•

2)

Выберитеэлемент на орме и вызовите

íîå

всплывающее меню. выберите пу кт

элемент Label перетащите его на орму

 

 

помощью мыши. Выдели•

 

С ойст (Properties). На этой закладкеконтексòображаются свойства активного элемента

3)

ормы или самой рмы, если ни один из элементов не явля тся активным.

Найдите в списке

Text. Это свойство содерж

значение текста метки. Из•

4)

Найдите в списке свойство Name. Его значение хранит

 

 

я созданного экземпляра

 

мените его на произвольн е значение (например, ''Прèâåò!'').

 

класса Label. По умолчанию имя экз мпляра состоит из имени класса и порядкового

 

номера (например. label1). Измените

это значение на любое другое (не используйте

5)

кириллицу!).

 

 

 

 

 

 

 

 

Найдите на вкладке Панель элементов объект Button и поместите его на орму. Это

6)

кнопка.

 

 

 

 

свойство Name на exit.

Измените свойство Text на значение ''Выход'',

На этом первый этап дизайн прил жения завершен. Запустите компиляцию проекта

и посмотрите, как будет выглядеть готовое

ложение.

 

 

 

íàæ

На втором этапе работы необходимо придать приложению ункциональн сть: при

ии на кнопку ''В ход'' приложение должно закрываться. Для этого необходимо

создать обработчик события, которое будет выполняться при нажатии на кнопку. Среда

программирования Visual Studio з

чительно упрощает процесс созд н я обработчиков

событий, поскольку для большого íàбора стандартных событий ав оматèчески генериру•

ет заголовки ункций для обработки. Задача пользователя

сводится только к програм•

мированию тела соответствующей ункции. Создать заголовок ункции можно двумя

способами.

 

 

 

 

 

 

ышкой дважды. После

1)

Выделите нужный объект на орме и кликните по нему

 

 

го откроется окно кода програ

ìû (Form1.h),

котором

 

заголовок ункэто•

 

ции, наиболее часто

используемой для типа выделенного

бъекта. Для экземпляра

 

класса Button б дет создан заголовок ункции Cli k, котпоявитсярая выполняется при на•

 

жатии на кнопку.

 

 

3

 

 

 

 

 

 

2) мразрешенныхÂûäæíîëèòåоткрытьнужныйдлянаданногообъектзакладкеíàэлементаС îðìåойступравления,откройтепутем нажатияспи ответствующиек событийкнопки быстрогоСписокèì ñîдоступаункцûò è,é

 

 

Ñî ытия). В списке

 

найдите имя

события (например, для кнопки

 

 

найдите событие Cliсобытийk)

пустрой строкенужногонапр тив названия

обытия кликните

 

 

мышью дважды. В

появится

стандартное имя ункции, поñле чего откроется

Ïðè

окно кода программыстрокезаголовком нужной

 

.

 

 

с кнопкой exit и событием Cli k в том,ункциив другом случае в коде программы

будетработесген рирована следующая пустая ункция:

 

 

 

private: System::Void exit Cli k(System::Obje t^ sender, System::EventArgs^ e)

{

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

ртное имя ункции содержит имя экземпляра класса, для которого она

Как видно, стан

выполняе ся (в äанном

случае, exit), а также стандартное имя события (в данном случае,

реагировать íà

это нажнатие. Для того,телочт бы пр ложение зак ывалось прè нажатии на

Cli k). Э ункция будет выполнятся всякий раз, как

 

будет нажимать

 

 

ñ èìå åì exit

îðìå. Ïîêà

 

пустое,пользовательиложение как не будет

кнопку, нужно в тело ункции exit

добавункциить стандартную ункцию Close{}:

private: System::Void exit

Cli k(System::Obje t^

sender, System::EventArgs^ e)

{

Close{};

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

После этого сохраните проект и запустите компиляцию. Если ош бок не обнаружено,

то будет запущено приложение. Нажмите на кнопку ''Выход''. Приложение должно за•

крыться.

 

 

 

 

 

 

 

 

 

 

 

 

1.3 Свойства экземпляров кл сса и работа с ними

 

 

 

любой экземпляр кл сса имеет нàбор свойств, которые можно изменять по свое•

 

 

 

íà

 

экземпляра

класса каждому свойству присваивается определенное

му усмотрению. Как уже ук зано выше, свойства перечислены на вкладке свойств. При

добавлении

 

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

çíà÷

ïî ó

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

обращаясьэкзеíèì внутри исполняемого кода.

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

его спискеЧтобысвойствизменитьприсвоитьсвойство послеему новоедобавлениязначениеэкземпляра. Êàê,

класса,âûøåнеобхîäèìîисанонайтиäëÿ

свойства Text экземпляров Label

Button. В этом случаенапример,выполнении программы

значения этих свойств не

изменяются и остаются постоянными.

 

 

 

 

 

 

Свойства экземпляра класса можно менять внутри исполняемого кода. ассмот•

рим конкретный пример: пусть в созданном выше приложении при щелчке мышью по

метке меняется текст: со значения ''Привет!'' на ''Hello World!'' и бр

íî. Äëÿ ýòî•

го необходимо определить обработчик с бытия щелчка по метке, т.е. создàòь ункцию,

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

êà

 

Создайте заголовок ункции для события Cli k (механизм создания

ункции

изложен выше). Если свойство Name метки имеет значение label1, то заголовîê

будет следующим:

 

 

 

 

 

 

private: System::Void label1_Cli k(System::Obje t^ sender, System::EventArgs^ e)

 

{

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

изменилось свойство Text метки label1 при нажатии

 

нее, нужно

Äëÿ òîãî,

 

 

 

титься

эт му свойству из тела ункции. В общем, самом простом случнае, структура

îáðàщениячтобыê св йству экземпляра класса следующая:

->

 

свойства>

 

<указатель

íà

 

 

 

-> <имя экземпляра

 

 

Например, чтобыкласс/структуру>обратиться свойству Text экземпляракласса> Label<имя именем label1

необходимо написать:

 

 

 

 

 

 

 

 

Form1 -> label1 -> Text

содержит только один класс типа Form,

место Form1 можно

В том случае, если

 

п сать this или вообщепроектускать указатель на класс (поскольку он

всего один).

 

 

Для конкретного

примера

изменения свойства Text при нажатии на метку унк•

ция label1 Cli k будет следующей:

 

 

 

 

 

priva e: System::Void label1 Cli k(System::Obje t^ sender, System::EventArgs^ e)

 

{

 

 

1 Привет!";

 

 

 

 

 

 

 

 

String^ s2="Hello World!";

5

 

 

 

 

 

 

if(label1->Text==s1)

 

 

 

 

 

 

 

}{

label1->Text=s2;

 

 

{

else

 

 

 

 

}}

label1->Text=s1;

 

 

Здесь использована простая условная конструкция языка C++, а также введены две стро•

ковые переменные s1 и s2, хранящие два возможных значения свойства Text. Если при

нажа ии на метку (вызывается событие Cli k и связанная с ним ункция label1 Cli k)

свойство Text

 

совпадающее со значени м строки s1, то свойству Text

ïð

сваивается

имеет значение,строки s2 (это реализовано в первой

части условной конструк•

öèè). Åñëè æå

значение свойства Text не совпадает со значением строки s1, то свойству

Text присваивается значение строки s1 (часть тела else условной конструкции). Совер•

шенно понятно, что этот алгоритм будет работать даже

òîì

если при запуске

приложения свойство Text экземпляра label1 не было равно ни первойслучае, ни второй строке.

 

азработка приложений на основе классов Windows Forms

 

2.1 Приложение Простой калькулятор

:

 

 

Создание любого приложения состоит из трех этап

 

 

1) Определение нкций, которые должны быть реализованы приложением. В случае

 

простого

калькулятора это 4 основные математические операции: сложение, вычита•

 

ние, умножение и деление.

 

 

 

2) Проектирование ормы: какие элементы должны быть добавлены на орму, чтобы

 

приложение реализовывало требуемые ункции. Для простого калькулятора

 

сами перации,

вводатакже поле для вывода результата (textBox). На этом этапенеобхо•такж

 

äèìû ïîëÿ äëÿ

операндов (элементы textBox), кнопки (button), реализующие

 

необхîдимо разместить все нужные элементы таким образом, чтобы было понятно

 

их назначение.

 

 

 

 

3) Программирование ункциональности6приложения.

 

 

''полямиÍà езультат''рисункедобавлены2 показан, такжеметкипримерныйдобавлена,''Первое кромеâèäчисло''приложениякнопок, ''Действие''математическими. Для удобства, ''Второерядомдейчиñтвиями,ло''с текстовыми''=''кнопка,

Выход''.

 

 

 

 

исунок 2 Приложение Простой калькулятор

 

После того, как все элементы

будут размещены на орме, измените

свойство Name каждого из

 

чтобыуправлениядальнейшем не запутаться, какой элемент

отвечает за

ализацию той ли иной операции. Пусть, например, свойство Name кнопки

сложения буд

иметь

 

элементов,plus а свойства Name для полей ввода/вывода будут равны

first (поле ввода первогозначенèсла), se ond (поле ввода второго числа), result (поле для

вывода

 

 

.

 

 

 

 

результата)Для п й ввода/вывода измените свойство Text: по умолчанию это значение рав•

но пустой

строке, измените его на значение 0. Тогда при запуске алькулятора во всех

 

 

полях по умолчанию будет указано значение 0. Для текстового поля result

текстовыхможно изменить свойство ReadOnly на значение true, ÷тобы после запуска приложения польз ватель не мог самостоятельно редактировать зна ение свойства Text этого поля.

7

 

 

Можно изменить заголовок окна Form1 это значение свойства Text для ормы.

Измените это свойство на Simple Cal ulator.

 

 

ассмотрим теперь обработчик события при нажатии на кнопку plus, т.е. опе•

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

события Cli k кнопки

. Он будет вот таким:

private: System::Void

plus_Cli k(System::Obje t^ sender, System::EventArgs^ e)

{

 

 

 

 

 

 

}

 

 

 

 

 

 

После того, как два числа введены в поля first и se ond, обратиться к введенным значе•

ниям можно чер з свойство Text каж ого из полей (поскольку именно это свойство хранит

 

âå

 

ïîëå значе ие). Но тип äанных, которые мы ввели в поле, тексто ый, по•

эт муенноерироватьоп

 

ñî

как с числом нельзя до тех пор, пока оно не переведено

â

îäèí

из числовых орматов при помощи ункций из класса Convert. Объявим две

переменные типа doubleзначениемa b, которые будут хранить числовые значения:

a

 

a,b;

 

 

 

first-

double=System::Convert::ToDouble(se ond>Text);-

Таким образом, в переменной а хранится число, введенн е в первое поле, а в переменной

b введенное во второе поле. При так й записи важно пîмнить, что поля first и se ond

не должны бы ь пустыми, т. . свойство Text не должно быть равно пустой строке!

 

 

После ого, как значения свойства Text переведены в числа, их можно складывать

(èëè применять любую другую математическую операцию):

double =a+b;

 

 

вывести результат сложения в п ле result. Для этого зна•

На последнем этапе

 

чение переменной

 

необход мо перевести в текст при п мощи соответствующей ункции

из класса

 

и присвоить свойству Text текстового поля result:

result->Text=System::Convert::ToString( );

Таким образом, вся ункция целиком будет следующей:

private: System::Void plus Cli k(System::Obje t^ sender, System::EventArgs^ e)

{

double a,b;

 

 

8

}

douba=Syse =a+b;

::ToD uble(sefirstnd-->Text);

 

 

result>Text=System::Convert::ToString(-

);

 

 

Обработчики событий для остальных операций совершенно аналогичны. Для удобства

переменные a, b, мож

 

объявить глобальными, тогда их объявление в теле каждой

ункции делать уже не нужно.

 

 

 

 

 

 

 

2.2

 

асширенный калькулятор

 

 

 

ПриложПриложениеасширенный калькулятор должно реализовывать не только п о•

стые математические операции,

и содержать основные элементы интер ейса стандаðò•

ных Windows-приложений:

главное

ìåíþ,

нтекстное (всплыв ющее) меню, панель с

кнопками быстрого доступа, всплы

ющие подсказки,

строку статуса, стандартные диа•

логи. Мы будем

 

 

наращивать интер ейс нашего приложения.

 

 

 

ассмотрим эл мент ri hTextBox, который позволяет сохранить

 

ë

ений. Кроме этого,постепенно

 

опр делить изменение размеров элемент (или вычис•их по

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

к торое определяет

привязку каждого элемента

сохраняя одно или несколько рас•

стояний от границы элемента управления от края орме,рмы (значения свойства Top, Bottom,

Left, Right).

использовать комбинации нескольких значений для реализации необ•

ходимого режимаМожноведения.

 

 

 

 

panel2

 

 

Воспользуемся элементами Panel: добавим два элемента с именами panel1

на орму как показано на

рисунке 3. Чтобы п ложение

панелей относительно ор•

ìû íå

нялось при изменении размера ормы, дляобеихх панелей свойство An hor

должноизìåть значения Bottom, Left, Right. П и такой

комбинации обе панели будут свя•

çàíû

нижн м краем ормы,

также с ее

правым и левым краями, растягиваясь или

сжимаясь при изменении размера ормы.

 

 

 

 

 

Оставшуюся часть ормы зай ет текстовый редактор ri hTextBox, для

 

свойство An hor определите следующим образом: Top, Bottom, Left, Right. Пусть которогосвойств

Name этого элемента равно result1.

 

 

 

 

 

 

На панель panel1 раз

с ите кнопки ''+'', ''-'', ''*'', ''*'' и ''Выход''. На

п нель panel2 разместите элеìенты textBox для ввода чисел (назовите их first

se ond

êàк в предыдущей задаче), а также метки для них. езультаты операций будут выводиться 9

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]