Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛаборООП.docx
Скачиваний:
49
Добавлен:
01.06.2015
Размер:
1.46 Mб
Скачать

Литература

  1. Павловская Т.А. C/C++: программирование на языке высокого уровня: - СПб.: Питер, 2007. – 460 с.: ил. - (Учебник для вузов).

  2. Гамма Э., Хелм Р., Джонсон Р., Влассидес Дж. Приемы объектно-ориентированного

проектирования. Паттерны проектирования. –СПб.: Питер, 2012

  1. http://www.dpva.info/Guide/GuideMathematics/

  2. http://www.dpva.info/Guide/GuideMathematics/ Периметры, площади …геометрических фигур/ Свойства и площади плоских фигур/Вычисление элементов плоских фигур

  3. Троелсен Э. C# и платформа .NET. Библиотека программиста – СПб.Питер, 2007

  4. Лутай В.Н. Основы программирования на С#. Методические указания. ТРТУ, 2007

.

Приложения

1.Создание консольного приложения в VisialStudio.Net

Начинаем с Project/ New Project

При создании класса можно пользоваться мастерами системы. При этом надо иметь в виду, что для класса создаются 2 файла: заголовочный (name.h) и реализации (name.cpp).

В созданный файл с расширением h вставляется объявление класса: поля и сигнатуры конструкторов, деструкторов и методов; определения записываются в файл .cpp. К программе класс подключается директивой

#include “имя.h”.

Вставка обычного файла производится следующим образом:

Теперь задаем имя и выбираем расширение. Если не хотите разбивать вставляемый класс на 2 файла, то можно его вставить его целиком как обычный файл.

Создание консольного проекта на С# показано ниже. В отличие от С++ создание начинается (и заканчивается ) присвоением имени пространству имен, в которое включается программа. По умолчанию это имя – ConsoleApplication#

2.Cоздание графического интерфейса к программам на С++ в Visual Studio . Net

Технология построения GDI показана на несложном примере.

Создаются 2 формы, причем форма Продолжение появляется при нажатии кнопки Продолжить на форме Начало. На второй форме в первые два окна пользователь вводит целые числа и по нажатию кнопки Сложить в третьем окне появляется их сумма, при условии имеющегося разрешения. Сложение реализуется как метод некоторого класса программы на С++.

Ниже следует описание процесса создания соответствующего проекта на Visual Studio C++2008 Express Edition

Проект создаем в среде CLR (Common Language Runtime), используя управляемый (Managed) язык С++. Напомню, что консольные приложения на стандартном С++ мы делали в среде Win32. CLR позволяет использовать все возможности Net, в т.ч. и графические, но ее версия С++ отличается от стандартной.

Итак, создаем шаблон проекта GDICpp как Windows Form Application (рис.1)

Рисунок 1

Мастер среды создает проект с одной формой, которую принято называть главной (рис.2).

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

(Приведенная последовательность создания форм (окон) выполняется и в других системах проектирования графического интерфейса на С++, таких как MFC и Qt .)

Имя класса формы по умолчанию – Form1. Он создан в обычном для С++ стиле: заголовочный файл и файл реализации. Можно посмотреть на соответствующие коды. Для этого выделите форму, нажмите правую кнопку мыши и пункт View code (рис.3). Фрагмент кода показан на рис.4

Рисунок 2

Рисунок 3

Рисунок 4

Как следует из текста, объект в программе носит по умолчанию имя (Name) Form1 и совпадает с именем класса. Название формы в левом верхнем углу тоже Form1, но это не Name, а Text. И то и то можно поменять здесь же. Но Name вообще лучше не трогать, а работать с Text удобнее в свойствах формы (Properties). (Свойства имеются у каждого графического элемента интерфейса.) Переход к ним осуществляется через то же контекстное меню (рис.5).

Рисунок 5

Изменим Text на Начало.

Далее, создадим новую форму с именем Form2: Project/Add class -> рис. 6 (Следите за Location)

Рисунок 6

Меняем Text на Продолжение и вызываем панель инструментов (Toolbox) – рис.7.

Рисунок 7

(Инструменты можно вызывать из главного меню View->Toolbox или иконкой в правом верхнем углу.)

Помещаем на форму 3 элемента TextBox, одну Button и одну CheckBox (рис. 8).

Рисунок 8

Смотрим в коде Form2.h имена соответствующих объектов. По умолчанию это TextBox1, TextBox2, TextBox3, Button1, CheckBox1 ( рис. 9). Изменяем свойства Text кнопки button1 на Сложить, CheckBox1 на Разрешить?.

Рисунок 9

Напоминаю, что в первые 2 окна пользователь заносит слагаемые, а в третьем по нажатию кнопки при разрешенном CheckBox выводится сумма. Cложение реализуется методом класса Alpha.

Переходим к коду на стандартном С++. Добавляем класс С++ – рис.10, 11 (Надо снять разрешение в окне Managed, которое стоит по умолчанию.)

Рисунок 10

Рисунок 11

Получаем шаблоны Alpha.h и Alpha.cpp. Модифицируем их в соответствии с нашей задачей, добавляя 2 целых поля и метод Add – рис. 12

//Alpha.h

#pragma once

class Alpha

{

public:

Alpha(void);

~Alpha(void);

int Add(int, int);

private:

int x,y;

};

//Alpha.cpp

#include "StdAfx.h"

#include "Alpha.h"

Alpha::Alpha(void) {}

Alpha::~Alpha(void){}

int Alpha::Add(int _x, int _y)

{x=_x; y=_y; return x+y;}

Рисунок 12

Метод Add класса Alpha используется в классе Form2, поэтому последний должен видеть первый. Переходим к коду Form2.h и подключаем Alpha.h – рис.13

#pragma once

#include "Alpha.h" //Подключенике класса

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

namespace GDICpp {

…………………………………………………..

Рисунок 13

Далее размещаем вызов метода Add. Для этого создаем метод класса Form2 – обработчик события button1_Сlick (Нажатие на кнопку button1) . С этой целью на панели свойств button1 переходим на вкладку «События» ( Events) и выбираем пункт Click (рис14).

Рисунок 14

Ставим указатель на свободное место в этой строке и делаем двойной щелчок. Получаем шаблон обработчика button1_Сlick – рис. 15.

#pragma endregion

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

}

};}

Рисунок 15

Заполняем тело метода. Мы должны содержимое первых двух окон – textBox1 и textBox2 сделать аргументами метода Add. Содержимое окна является свойством textBox под именем Text. Нотация обращения в Managed C++ – textBox->Text.

Данные в окне имеют тип string. Поэтому надо делать соответствующие преобразования типов:

intt1=System::Convert::ToInt32(textBox1->Text);

intt2=System::Convert::ToInt32(textBox2->Text);

Alpha a1;

intt3=a1.Add(t1,t2);

textBox3->Text=System::Convert::ToString(t3);

Наконец, подключаем checkBox и наш обработчик выглядит так, как на рис. 16.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

int t1=System::Convert::ToInt32(textBox1->Text);

int t2=System::Convert::ToInt32(textBox2->Text);

Alpha a1;

int t3=a1.Add(t1,t2);

if (checkBox1->Checked)//Складываем,но выводим по условию

textBox3->Text=System::Convert::ToString(t3);

}

Рисунок 16

С формой Form2 закончили. Теперь связываем ее с Form1. Подключаем класс Form2 к классу Form1 (рис. 17).

//Form1.h

#pragma once

#include "Form2.h" //Подключение класса

namespace GDICpp {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

Рисунок 17

Помещаем на форму Form1 кнопку, меняем ее Text на Продолжить и создаем метод button1_Сlick.

В этом методе нам нужно создать объект класса Form2 и вывести его на экран. Вспомним, что все классы форм созданы как классы С++ среды CLR. В этой модификации C++ вместо символа указателя * используется символ ^, а вместо функции new функция gcnew. Получаем

Form2 ^pf2 =gcnew Form2();

Этот объект выводим на экран функцией ShowDialog.

pf2->ShowDialog();

(В CLR работает автоматический сборщик мусора, поэтому никакого delete не нужно.)

Обработчик событий приобретает вид рис.18

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

Form2 ^pf2=gcnew Form2;

pf2->ShowDialog();

}

Рисунок 18

Все. Запускаем.

Заключение

1. У вас имеется консольный проект на С++. Нужно ли изучать CLR C++, чтобы создать GDI в Visual Net?

Нет, достаточно использования gcnew.

2. Как научиться создавать сложные интерфейсы и работать с рисунками?

Читайте учебник по С#, например, Троелсена. Коды, приведенные там, можно использовать, заменяя точку на «:: » или «->».

Например,нашастрока

System::Convert::ToInt32(textBox1->Text);

в С# выглядит как

System.Convert.ToInt32(textBox1.Text);

3. Помните, что программа, созданная в CLR, , в отличие от проектов с MFC или Qt,

не может работать самостоятельно(alone), а только вместе со студией или, по крайней мере, с Net Framework.

Лутай В.Н. Лабораторные работы по курсу ООП

54