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



Отчет по всем лабораторным работам делается под одной обложкой. Первая страница

 

                        южный федеральный университет

Институт Компьютерных технологий и информационной безопасности

Кафедра математического обеспечения и применения ЭВМ

 

 

Лабораторные работы по курсу

«Объектно-ориентированное программирование»

Вариант 4

 

 

Выполнил ст. гр. XXX

 

ФИО

 

Принял   доцент каф.МОП ЭВМ        Лутай В.Н.

                             

                                                            Таганрог 2014

 

 

Следующие страницы:

 

Лабораторная работа №1. Классы и объекты в С++

 

1.Задание: 

1.Используемые математические зависимости и алгоритмы, например, вычисления

дня недели по дате или алгоритма пересечения фигур.

2.Диаграмма классов

3.Перечень сигнатур методов с комментариями .

4.Листинг: классы, методы, main.

    

 На последней странице работы должны быть приведены контрольные вопросы, знать ответы на которые обязан каждый. 

Основные сведения по работе в отчет копировать не нужно. Их надо знать.  

Оценка работы складывается из следующих  составляющих:

− Знание основных сведений по защищаемой работе(опрос перед началом защиты).

− Самостоятельность выполнения.

− Знание кода программы.

− Знание ответов на контрольные вопросы.

.

В конце работы

           

                              

 

                 Автор                                                Преподаватель                    

    ФИО ______________ (подпись) Оценка ______________ Подпись ________ Дата

 

(Не забывайте подписываться. Подпись удостоверяет ваше авторство).

                        

По мере сдачи работ отчет наращивается. Нумерация страниц то ли общая, то ли в каждой работе, обязательна. Желательно использование колонтитула для указания автора и названия работ. В конце семестра отчет сдается преподавателю вместе с электронными файлами текстов работ.

Литература

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

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

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

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

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

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

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

 


 

Приложения

Создание консольного приложения  в Visial Studio  .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. Поэтому надо делать соответствующие преобразования типов:

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

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

              Alpha a1;

              int t3=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.

 

 


Дата добавления: 2018-04-15; просмотров: 373; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!