Технология разработки программного обеспечения систем управления

Объект и класс как основа объектно-ориентированного языка программирования. Методология построения и использования принципов объектно-ориентированного программирования и программирования под Windows на языке C++ при проектировании систем управления.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 07.10.2013
Размер файла 744,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

app = 0x08, // Открыть существующий для дополнения

trunc = 0x10, // Создание нового файла взамен существующего

nocreate=0x20, // Не создавать новый файл при его отсутствии

noreplace=0x40, // Не создавать новый файл, если он существует

binary= 0x80 // Двоичный файл ("прозрачный" ввод-вывод без

// преобразования символов конца строки)

};

Конструкторы объектов (для классов ifstream,ofstream,fstream) и функции открытия/закрытия файлов:

ifstream(); // Без открытия файлов

ifstream( // С открытием файла в заданном

char *name, // режиме imode

intimode=ios::in,

intprot=filebuf::openprot);

ifstream(intfd); // Сприсоединениемфайласдескриптором fd

ifstream( // То же, с явно заданным буфером

intfd,

char *buf, intsz);

void ifstream::open(

char *name, // Открытие файла в заданном режиме

intimode=ios::in,

intprot=filebuf::openprot);

void close(); // Закрытьфайл

void setbuf(

char *p,intsz);// Установитьбуферпотока

int fd(); // Дескриптор открытого в потоке файла

int is_rtl_open(); // 1 - файл открыт в потоке

Унаследованные переопределения операторов позволяют проверять наличие ошибок в потоках в виде:

fstream ss;

if (ss) ... или if (!ss)

Обработка исключительных ситуаций

Средства обработки ошибочных ситуаций позволяют передать обработку исключений из кода, в котором возникло исключение, некоторому другому программному блоку, который выполнит в данном случае некоторые определенные действия. Таким образом, основная идея данного механизма состоит в том, что функция проекта, которая обнаружила непредвиденную ошибочную ситуацию, которую она не знает, как решить, генерирует сообщение об этом (бросок исключения). А система вызывает по этому сообщению программный модуль, который перехватит исключение и отреагирует на возникшее нештатное событие. Такой программный модуль называют «обработчик» или перехватчик исключительных ситуаций. И в случае возникновения исключения в его «обработчик» передаётся произвольное количество информации с контролем ее типа. Эта информация и является характеристикой возникшей нештатной ситуации.

Обработка исключений в С++ - это обработка с завершением. Это означает, что исключается невозможность возобновления выполнения программы в точке возникновения исключения.

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

try - проба испытания;

catch - перехватить (обработать);

throw -бросать.

Кратко рассмотрим их назначение.

try- открывает блок кода, в котором может произойти ошибка; это обычный составной оператор:

try

{

код

};

Код содержит набор операций и операторов, который и будет контролироваться на возникновение ошибки. В него могут входить вызовы функции пользователя, которые компилятор также возьмет на контроль. Среди данного набора операторов и операций обязательно указывают операцию броска исключения: throw.

Операция броска throwимеет следующий формат:

throw выражение;

где «выражение» определяет тип информации, которая и описывает исключение (например, конкретные типы данных).

catch - сам обработчик исключения, который перехватывает информацию:

catch ( тип, параметр)

{

код

}

Через параметр обработчику передаются данные определенного типа, описывающие обрабатываемое исключение.

Код определяет те действия, которые надо выполнить при возникновении данной конкретной ситуации. ВС++ используют несколько форм обработчиков. Такой обработчик получил название «параметризованный специализированный перехватчик».

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

В этом случае их необходимо расположить сразу же за контролирующим блоком последовательно друг за другом.

Кроме того, запрещены переходы, как извне в обработчик, так и между обработчиками.

Можно воспользоваться универсальным или абсолютным обработчиком:

catch ( )

{

код

},

где (...) означают способность данного перехватчика обрабатывать информацию любого типа.

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

В случае не возникновения исключения набор обработчиков будет обойден, т.е. проигнорирован.

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

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

Блоки try, как составные блоки могут быть вложены:

try {

...

try

{

...

}

...

}

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

Задание к контрольной работе

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

- конструктор,

- деструктор,

- виртуальную функцию просмотра текущего состояния объекта print(),

- friend - функцию Run ().

Производные классы должны содержать переопределенную функцию просмотра состояния объектов, а также при вводе - выводе данных использовать функции обработки исключительных ситуаций. Используя стандартные файловые потоки, информацию об объектах вывести в файл. Для корректной работы с файлом использовать обработку исключительных ситуаций.

· Варианты заданий

· 1. Список товаров, имеющихся на складе, включает в себя наименование товара, количество единиц товара, цену единицы и дату поступления товара на склад. Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1000000 руб.

· 2. Для получения места в общежитии формируется список студентов, который включает Ф.И.О. студента, группу, средний балл, доход на члена семьи. Общежитие в первую очередь предоставляется тем, у кого доход на члена семьи меньше двух минимальных зарплат, затем остальным в порядке уменьшения среднего балла. Вывести список очередности предоставления мест в общежитии.

· 3. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени.

· 4. На междугородной АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона абонента. Вывести по каждому городу общее время разговоров с ним и сумму.

· 5. Информация о сотрудниках фирмы включает: Ф.И.О., табельный номер, количество проработанных часов за месяц, почасовой тариф. Рабочее время свыше 144 часов считается сверхурочным. Вывести сотрудников фирмы, которые имеют сверхурочные часы.

· 6. Информация об участниках спортивных соревнований содержит: наименование страны, название команды, Ф.И.О. игрока, игровой номер, возраст, рост, вес. Вывести информацию о самой молодой, рослой и легкой команде.

· 7. Для книг, хранящихся в библиотеке, задаются регистрационный номер книги, автор, название, год издания, издательство, количество страниц. Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.

· 8. Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают: наименование, количество, номер цеха. Для заданного цеха необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества.

· 9. Информация о сотрудниках предприятия содержит Ф.И.О., номер отдела, должность, дату начала работы. Вывести списки сотрудников по отделам, которые проработали меньше года.

· 10. Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит Ф.И.О., адрес, оценки. Вывести абитуриентов, проживающих в г. Минске и сдавших экзамены со средним баллом не ниже 8.

· 11. В налоговой инспекции содержатся данные о предприятиях, которые определяют название, УНП, ФИО директора, вид деятельности, дата регистрации. Вывести все предприятия по видам деятельности (исключать ликвидированные).

· 12. В справочной аэропорта хранится расписание вылета самолетов на следующие сутки. Для каждого рейса указаны: номер рейса, тип самолета, пункт назначения, время вылета. Вывести все номера рейсов, типы самолетов и времена вылета для заданного пункта назначения в порядке возрастания времени вылета.

· 13. Транспорт (наименование, тип, год выпуска, максимальная скорость, объем двигателя, расход, объем бензобака, расстояние без подзаправки-функция Run ()).

· 14. Продовольственные товары (наименование, отдел магазина, дата выпуска, срок хранения, последний срок реализации - функция Run (), вес).

· 15. Объекты недвижимости (адрес, тип, этажность, квартир на этаже, подъездов, всего квартир - функция Run ()).

· 16. Периодические издания (название, тип, страниц, частота выпуска, тираж, выпусков в год - функция Run ()).

· 17. Отдел кадров (ФИО, отдел, должность, дата приема на работу, внутренний стаж - функция Run (), ставка).

· 18. Научно-исследовательские разработки (наименование, дата начала, дата завершения, срок работы - функция Run(), область исследования, количество сотрудников, ФИО сотрудников).

· 19. Программное обеспечение (наименование, тип, количество дисков, объем после установки (полной, минимальной, типичной версий), процент сжатия - функция Run ()).

· 20. Комплектующие ЭВМ (наименование, тип, модель, частота, объем памяти, стоимость, количество, итоговая стоимость - функция Run ()).

· 21. Аудио - студия (группа/исполнитель, количество человек, стиль, количество альбомов, стоимость записи диска [], стоимость диска [], тираж[], общая прибыль группы - функция Run (), доход исполнителя - функция Run1()).

· 22. Мобильные телефоны (наименование, фирма, стандарт связи, заряд аккумулятора, потребление при ожидании, потребление при разговоре, время ожидания - функция Run (), время разговора - функция Run1 ()).

· 23. Сетевое оборудование (наименование, скорость передачи данных, тип, стоимость, количество, общая стоимость - функция Run (), максимальная скорость передачи (байт/с)).

· 24. Гостиница (информация о номерах, клиентах, счетах, поиск - функция Run() - по номеру в гостинице).

· 25. Установка и обслуживание ЛВС. (информация о сетевых конфигурациях, клиентах, договорах, поиск - функция Run() - по клиенту).

· 26. Фирма-поставщик медицинской техники. (ассортимент, заказчики, контракты, поиск - функция Run() - по наименованию медицинской техники).

· 27. Автозаправочная станция. (горюче-смазочные материалы, поставщики, накладные, поиск - функция Run() - по номеру накладной).

· 28. Студия видеозаписи. (режиссеры/Актеры, фильмы, продажи. поиск - функция Run() - по названию фильма).

· 29. Музей (экспонаты, авторы, экспозиции. поиск - функция Run() - по автору).

· 30. Страховая фирма. (Виды страховок, Клиенты/объекты страховки, Страховая деятельность, поиск - функция Run() - по клиенту).

8. Лабораторная работа №8. Мастера Сlassview и Сlasswizard в Visual C++

Цель работы - изучить методы работы с мастерами Сlassview и Сlasswizard и их возможности.

· Теоретические сведения

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

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

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

Консольное приложение для демонстрации ключевых понятий ООП может быть, например таким:

// подключили заголовочные файлы

#include <iostream.h>

#include <conio.h>

// декларируем класс»Х»

class X

{

// закрытая часть - реализация класса

int a, b, c; // три целочисленные элементы-данные класса(состав будущих объектов

// данного класса)

// открытая часть - интерфейс класса

public:

// метод для инициализации класса

void set(int i, int j)

{

a=i; b=j;

cout<<"Object created!"<<endl;

}

// метод для просмотра текущего состояния существующего объекта

void print(void)

{

cout<<"for а="<<a<<" b="<<b<<" summa="<<c<<endl;

}

// метод для взаимодействия с объектами

void run(void)

{

c=a+b;

}

};

// основная функция программы

void main(void)

{

X x1; // объект создан

x1.set(2,3); //объект использован: проинициализирован

x1.run(); //объект использован: определено значение третьего элемента

x1.print();//объект использован:просмотр текущего состояния

getch();

}

//по окончании работы программы объект автоматически уничтожается

Запускаем и получаем:

Object created!

for a=2 b=3 summa=5

Но еще более наглядной иллюстрацией ключевых понятий ООП можно получить, создав, например, при помощи AppWizard простую диалоговую панель с командной кнопкой. Участок кода по созданию и использованию объектов класса разместить в обработчике щелчка на данной кнопке, а сам класс «Х» и его элементы добавить при помощи мастера ClassView.

Рассмотрим этот мастер Visual C++ более подробно.

Используя ClassView можно быстро и наглядно добавлять к существующим классам новые классы, новые для них элементы, просматривать структуру наследования, а так же выполнять некоторые другие полезные операции.

Итак, создадим простую диалоговую панель (Имя проекта - CMy).

1) Создайте при помощи MFC AppWizard(exe) новый проект тип Dialog based,

2) убираем для упрощения на втором шаге «About box»,

3) Используя панель Controls, нанесите на заготовку формы 1 кнопку - Button (рисунок 1).

Рисунок 1 - Заготовка формы

4) В выпадающем меню пункт Properties, выбираем закладку General и в поле Caption вводим нужное имя элемента: название или надпись: «Выполнить», в закладке Styles - нужные свойства элемента.

Обратите внимание, для того, чтобы ввести пояснения на русском языке нужно в окне Workspase перейти на закладку ResourseView, раскрыть папку Lab1resources, папку Dialog, щелкнуть правой клавишей на IDD_My_DIALOG, активизировать Properties и в списке Language выбрать Russian (Русский).

5) Через ClassWizard cвязываем ее с обработчиком события одинарного щелчка BN_CLICKED. Для этого щелкнув правой клавишей мыши в любом месте диалоговой панели в появившемся меню опять выбираем пункт ClassWizard, затем выбираем закладку Message Maps, увязываем идентификатор IDC_Button1 с событием BN_CLICKED (один щелчок на кнопке), и добавляем обработчик на данное событие: щелчок на кнопке Add Function, щелчок на «OK» для подтверждения, щелчок на кнопке Edit Code и среда добавит в конец файла MyDlg.cpp пустой обработчик:

void CMyDlg::OnButton1()

{

// TODO: Add your control notification handler code here

}

6) Теперь переходим на закладку «Class view» и щелкаем на любом классе, который нужно, например просмотреть или изменить (выберем, например CCMyDlg). На экране появится временное меню с пунктами, которые позволяют выполнять над классами все основные действия.

Например, строка «Go to definition» дает возможность просмотреть в окне редактирования исходный код класса. Можно редактировать класс непосредственно, а для добавления в класс новых методов и данных удобно пользоваться пунктами меню «Add Function» и «Add Variable».

Добавление к проекту нового класса

Добавим к нашему проекту класс «Х». Для этого: выбираем пункт меню «Insert»/New class, далее, заполняем появившуюся диалоговую панель и щелкаем «OK».

В составе классов появляется новый пользовательский класс «Х» Щелкаем правой клавишей мыши на нем и выбираем «Go to definition». Имеем его первоначальный состав (файлы X.h и X.cpp):

// X.h: interface for the X class

class X

{

public:

X();

virtual ~X();

};

// X.cpp: implementation of the X class.

// Construction/Destruction

X::X()

{

}

X::~X()

{

}

Т.е. средство ClassView создало пользовательский класс с декларацией в нем конструктора и деструктора. Реализация их в файле X.cpp отсутствует.

Добавление к классу элементов данных

Процедура добавления в класс новых данных довольно простая. Нам нужно по условию добавить три целочисленных элемента данные. Присвоим им идентификаторы m_a, m_b и m_c. Для их добавления нужно воспользоваться пунктом меню «Add Variable».

Рисунок 2. - Добавление данных

Щелкаем правой клавишей мыши на только что добавленном классе «Х» и выбираем данный пункт меню. На экране - диалоговая панель «Add Member Variable», представленная на рисунке 2. Вводим тип, идентификатор, в переключателе с зависимой фиксацией Access выбираем уровень защищенности «частный» (закрытый) и нажимаем «ОК». Аналогично добавим оставшихся два элемента m_b и m_c.

В файле X.h появится декларация этих трех элементов данных класса «Х».

Добавление к классу методов

Методы класса добавляются аналогично добавлению элементов данных. Для того, чтобы добавить в класс новый метод, нужно выбрать из временного меню строку' «Add Function». На экране теперь появится диалоговая панель «Add Member Function», представленная на рисунке 3.

Рисунок 3. - Добавление функций

В поле Function Туре следует ввести тип значения, возвращаемого методом. Как и раньше и в этой диалоговой панели можно определить область видимости, но теперь уже метода.

Он, как и элемент - данное может находиться в трех положениях: или Public(общедоступный), или Protected (защищенный), или Private (закрытый). Как правило, большинство методов общедоступные из любой точки программы. Кроме того, переключатель Static и Virtual позволяют определить, что добавляемый метод должен быть объявлен соответственно как статический или виртуальный. Последние возможности здесь игнорируем, так как добавляются обычные методы класса.

Когда все поля диалоговой панели заполнены, щелкните на кнопке ОК. И в декларацию класса будет добавлен новый метод. А идентификатор метода появится в списке элементов класса в окне ClassView. Рисунок 3. иллюстрирует добавление к классу «Х» метода «print» просмотра текущего состояния существующих объектов класса «Х». По аналогичной методике добавляем метод «set» для инициализации созданного объекта класса и метод «run» для определения суммы m_a и m_b.

Теперь в файле X.h будут добавлены и прототипы этих методов и окончательный его вид будет таким:

// X.h: interface for the X class.

class X

{public:

void run(void);

void set(int i, int j);

void print(void);

X();

virtual ~X();

private:

int m_c;

int m_b;

int m_a;

};

А в файле X.cpp ClassView разместит пустые определения этих добавленных в класс «Х» методов. Заполняем их следующим образом:

#include "stdafx.h"

#include "CMy.h"

#include "X.h"

// Construction/Destruction

X::X()

{

}

X::~X()

{

}

void X::set(int i, int j)

{

m_a=i; m_b=j;

AfxMessageBox("Объект создан и проинициализирован!");

}

void X::print(void)

{

CString str;

// объявили строковый объект класса библиотеки MFC, и при помощи его вызвали метод,

// который работает как стандартная функция printf(…), но выводит значения объектов из // списка вывода в указанную строку

str.Format("Для m_a=%d, m_b=%d, \n их сумма=%d",m_a, m_b, m_c);

AfxMessageBox(str);

}

void X::run(void)

{

m_c=m_a+m_b;

}

Теперь открываем файл проекта CMyDlg.cpp и в его начале подключаем заголовочный файл с декларацией построенного класса

// CMyDlg.cpp : implementation file

#include "stdafx.h"

#include "CMy.h"

#include "CMyDlg.h"

#include "X.h"

А в его конце оживляем обработчик щелчка на командной кнопке «Выполнить»

void CCMyDlg::OnButton1()

{

X x1;

x1.set(2,3);

x1.run();

x1.print();

}

Запускаем, щелкаем на кнопке и получаем (рисунок 4):

Рисунок 4. - Результат работы программы

Дополнительные возможности мастера

1. С помощью ClassView можно просмотреть список названий файлов, в которых используется данный класс. Для этого надо выбрать из временного меню строку «References». На экране появится диалоговая панель Definitions and References. Щелкаем правой клавишей мыши на классе «Х», выбираем вышеназванную опцию меню, получаем:

Рисунок 5. - Диалоговая панель Definitions and References

2. ClassView предоставляет пользователю полезную возможность: просмотреть деревья наследования классов приложения при наличии в нем иерархии классов, связанных между собой на основе концепции наследования. Для этого нужно выбрать название интересующего вас класса из списка классов, открыть временное меню щелкнув как и раньше правой кнопкой мыши. Пункты «Derived Classes» и «Base Classes» позволяют просмотреть последовательность классов, порожденных от данного класса и последовательность базовых для него классов.

На рисунке 6. показана иерархия классов дляCCMyApp

Рисунок 6. - Иерархия классов для CCMyApp

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

В левой части панели отображается список классов в порядке наследования. Видим, что для класса CCMyApp верхушка иерархии - класс библиотеки MFC CObject. В правой части панели отображаются элементы-данные и элементы-функции выбранного из списка класса. Они разделены на группы в зависимости от степени защиты.

Панель Base Classes and Members позволяет легко перейти к редактированию любого элемента класса. Для этого нужно выбрать название этого элемента из списка и сделать по нему двойной щелчок левой кнопкой мыши. Чтобы легко различать методы и данные класса, перед методами располагается символ f, а перед данными - d. Непосредственно перед именем метода или данных расположен символ, позволяющий отличил статические и данные, и функции, а также виртуальные методы. Перед названиями статических данных и методов расположен символ S, а перед виртуальными методами - символ V.

Если список методов и данных класса слишком велик, вы можете отображать в диалоговой панели только их часть. Выберите из поля «Functions» типы методов, имена которых надо отобразить. Доступны следующие типы методов:

Поле Functions Методы

All Все

Virtual Виртуальные

Static Статические

Non- Static Все. кроме статических

Non- Virtual Все. кроме виртуальных

Non- Static Все. кроме статических и виртуальных

Non-Virtual Все. кроме статических и виртуальных None He отображать методы класса

Аналогично из поля «Data» можно выбрать типы элементов для элементов-данных класса, которые надо отображать на экране. В следующей таблице приведены типы данных, представленные в списке «Data».

Поле Data Элементы данных

All Все

Static Статические

Non- Static Все. Кроме стастатических None He отображать

В нижней правой части диалоговой панели «Base Classes and Members» отображены названия файлов, в которых определен (группа Definitions) и в которых используется (группа References) выбранный элемент. Двойной щелчок левой кнопкой мыши позволяет открыть в редакторе соответствующий файл. Курсор при этом сразу устанавливается в то место, где объявляется или используется выбранный элемент класса.

3. Редактирование методов класса. Выбираем из списка элементов класса метод и щелкаем правую кнопку мыши. На экране - временное меню. Это меню позволяет перейти к редактированию объявления или определения метода, просмотреть те строки исходного текста приложения, в которых вызывается метод, получить список функций и методов, вызываемых выбранным методом. Например, чтобы открыть в редакторе файл, в котором объявляется метод, и перейти к его редактированию, выбираем из меню метода пункт «Go to Definition».

Возможности Classyiew можно использовать даже на этапе отладки приложения. Так, из временного меню метода можно установить точку прерывания непосредственно на начало метода. Для этого выбирают из меню «Set Breakpoint».

4. Редактирование элементов данных класса. Временное меню данных класса представляет собой сокращенный вариант временного меню метода.

· Задание к лабораторной работе

По изложенной выше методике работы с ClassView создайте проект типа Dialog based, позволяющий вычислять и отображать два значения Z1 Z2 (в случае успеха они должны совпасть).

· Варианты заданий

1.

2.

3.

4.

5.

6.

7.

8.

9.

10. .

11.

12.

13. .

14. .

15. \

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

1. Перечислите возможности мастера ClassView.

2. Назовите этапы добавления к проекту нового класса, данных, методов.

3. Какие мастера проектов существуют в VC++?

9. Лабораторная работа 9. Интерфейс графических устройств Windows

Цель работы - изучить методы работы с графическим интерфейсом (GDI). Научиться строить простые геометрические фигуры.

· Теоретические сведения

Любая Windows - программа выводит информацию на доступное графическое устройство с помощью множества специальных функций, образующих так называемый GDI-интерфейс (от анг. graphics device interface). GDI-интерфейс является аппаратно - независимым. Windows абстрагирует вывод на графическое устройство от технических особенностей его работы. Таким образом, графическое устройство в Windows - это монитор, принтер, плоттер.

В MFC интерфейсу GDI соответствует класс CDC. Данный класс содержит методы для вывода разнообразной графической информации: прямоугольников, линий, эллипсов, текста. Он также позволяет устанавливать цвет и масштаб изображений. Методы, обеспечивающие вывод, например на экран монитора, используют контекст устройства и этот контекст устройства в приложении на базе MFC является объектом класса CDC. Таким образом, класс CDC является базовым классом контекста устройств, содержит ряд атрибутов контекста устройств и методы управляющие ими. И для того, использовать контекст устройства, необходимо создать объект CDC.

На практике пользуются следующими классами, производными от CDC:

- CClientDC - управляет контекстом экрана монитора, связанного с клиентской областью окна;

- CWindowDC - управляет контекстом экрана монитора, связанного и с клиентской областью окна и с его системной частью.

Ниже приведен список часто используемых функций класса СDC:

Ellipse-рисует эллипс.

Polygon- рисует многоугольник.

Rectangle -рисует пряпоугольник.

RoundRect - прямоугольник со скругленными углами.

Chord - сегмента эллипса.

Pie - сектора эллипса.

LineTo- рисует линию.

При рисовании линии при помощи функции LineTo рисование осуществляется с текущей позиции пера. Для ее изменения существует функция MoveTo.

Для управления цветом фона и цветом линий существуют специальные объекты GDI. Цветом фона управляет объект - «кисть», которому соответствует класс CBrush, а цветом линий управляет объект - «перо», которому соответствует класс CPen.

Рассмотрим создание объекта «перо». Создание может происходить в два этапа: сначала объявляется переменная типа CPen, потом вызывается функция функция CreatePen, в которую предают тип линии, ширину и цвет.

Для указания типов линии используют константы:

PS_SOLID - сплошная линия;

PS_DASH - штриховая линия;

PS_DASHDOT - штрих пунктирная линия;

После создания объекта перо его необходимо выбрать в контекст устройства рисования. Для этого вызывают метод SelctObject класса СDC, передавая ему указатель на объект «перо».

Рассмотрим типовой пример: Написать программу, после нажатия кнопки выводящую картинку усеченного эллипса красного цвета с синими гранями (рисунок 1).

Для решения задачи необходимо создать приложение на основе диалогового окна.

Поместить на форму кнопку, при нажатии которой будет выполняться функция рисования.

Рисунок 1. - Результат программы

Обработчик нажатия кнопки приведен ниже:

void CDraw::OnButton1()

{

// TODO: Add your control notification handler code here

CClientDC dc(this); //объявляем класс, производный от класса CDC

// класс CСlientDC предназначен для рисования в диалоговом окне

CBrush br; // объявляем класс кисти br.CreateSolidBrush(RGB(255,0,0)); //создаем сплошную красную кисть

dc.SelectObject(&br);// выбираем кисть в контекст устройства

CPen p; //объявляем класс пера

p.CreatePen(PS_SOLID ,1,RGB(0,0,255));

//создаем сплошное перо, толщиной 1, синего цвета

dc.SelectObject(&p); // выбираем перо в контекст устройства

for(int x=0,int y=0;x<100;x+=3,y+=4)

dc.Ellipse(x,y,300,300); //рисуем эллипс с заданными координатами

}

· Задание к лабораторной работе

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

· Варианты заданий

Размещено на http://www.allbest.ru/

33

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

1. Дайте характеристику GDI-интерфейсу

2. В чем заключается роль класса CDС в MFC?

3. Назовите основные функции класса CDС для рисования фигур, линий.

10. Лабораторная работа № 10. Элементы управления радиокнопки (Radio Button) и переключатели (Check Box)

Цель работы - Изучить принципы работы элементов управления: радиокнопок (Radio Button) и переключателей (Check Box), позволяющих устанавливать тот или иной режим работы.

· Теоретические сведения

Элементы управления Radio Button и Check Box

Элемент Check Box организует кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа - да/нет. В программе состояние кнопки может быть связано со значением булевской переменной, которая проверяется с помощью оператора if.

Элемент Radio Button организует группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программе элемент Radio Button связывается с переменной типа int, при этом в программу будет передаваться номер включенной кнопки, который анализируется с помощью оператора switсh или if. Номер первой кнопки равен 0, второй 1 и т.д. Но для этого нужно в тексте программы найти объявлении привязанной к этим кнопкам переменной и задать ее нулевое начальное значение, так как по умолчанию система программирования установит для нее значение -1.

Пример реализации программы

Задание: В поля ввода вводятся 2 целых числа, «Радиокнопка» выбирает действие: или суммирование или разность. «Переключатель» при не активности устанавливает вывод в одну строку при многократном выполнении приложения, а при его активизации результаты выводятся списком. Интерфейс программы приведен на рисунке 1.

Рисунок 1. - Интерфейс программы

Для решения задачи необходимо сделать следующие действия:

1) Создать при помощи MFCAppWizard(exe) новый проект (предварительно выбрав путь и имя - например Lab2) типа Dialog based.

2) Используя панель Controls, нанести на диалоговую панель 3 элемента типа Edit Box, 4 - Static Text, 1 - Button, 2- Radio Button, 1 - Check Box и установить нужные свойства и надписи (для Radio Button с идентификатором IDC_RADIO1 нужно установить свойство Group).

3) При помощи ClassWizard через закладку Member Variables связать поле Edit1 с переменной m_a тип: int, Edit2 - с m_b тип: int, Edit3 - с m_c тип: СString. Для Edit3 установить в закладке свойств Styles: свойство Multiline.

4) При помощи ClassWizard через закладку Member Variables связать идентификатор «переключателя» IDC_CHECK1 с переменной m_s тип: BOOL, а «радиокнопки IDC_RADIO1 с переменной m_r тип: int. Кроме того, в самом начале метода BOOL Clab2Dlg::OnInitDialog() нужно установить значение переменной m_r в 0 т.е. m_r=0;

5) Теперь необходимо активировать кнопку «Выполнить». Для этого: выполнить щелчок правой клавишей мыши в любом месте диалоговой панели и в меню выбрать ClassWizard, выбрать закладку Message Maps, связать идентификатор IDC_Button1 с событием BN_CLICKED (один щелчок на кнопке), и добавить обработчик на данное событие: последовательно Add Function/OK/ Edit Code, среда добавит в конец файла Lab2Dlg.cpp пустой обработчик:

void Clab2Dlg::OnButton1()

{

// TODO: Add your control notification handler code here

}

И, как и ранее, вместо этой фразы:

добавляем код решение поставленной задачи:

{

int r; CString str;

UpdateData(TRUE);

if (m_r==0) r=m_a+m_b; // если выбрана первая радиокнопка - // «суммирование»

if (m_r==1) r=m_a-m_b; // если выбрана вторая

// радиокнопка -

// «вычитание»

if (m_s)

// если переключатель активен - вывод списком

{

str.Format("c=%d%c%c",r,13,10);

m_c=m_c+str;

}

else

// если переключатель не активен - вывод в одну строку

m_c.Format("c=%d",r);

UpdateData(FALSE);

}

· Задание к лабораторной работе

В индивидуальном задании составить программу для вычисления составной функции в соответствии со своим вариантом. Требуется самостоятельно выбрать необходимое количество исходных данных для того, чтобы в программе выполнялись все возможные ветви алгоритма. Перед выводом полученного результата программа должна сообщать о ветви, для которой он получен. В качестве f(x) использовать по выбору: «радиокнопками» функции cos(x), sin(x), tg(x). Программа должна через «переключатели» запоминать или не запоминать min и max найденные значения. Вариант интерфейса приведен на рисунке 2.

Рисунок 2. - Вариант интерфейса

· Варианты заданий

Таблица 1. - Индивидуальные задания

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

1. В чем заключается принцип работы элементов управления - радиокнопок (Radio Button)?

2. В чем заключается принцип работы элементов управления - переключателей (Check Box)?

3. Для чего служит мастер ClassWizard?

11. Лабораторная работа №11. Работа с элементом управления «Окно списка» (ListBox)

Цель работы - научиться использовать элемент управления ListBox а также основные методы класса СListBox. Использование возможности контроля правильности ввода исходных данных.

· Теоретические сведения

Класс CListBox

Класс CListBox обеспечивает функционирование окна списка. В окне списка могут отображаться различные элементы, которые пользователь может просматривать и выделять.

Окно списка имеет два режима выделения элементов:

- единичный выбор, т.е. может быть выделен только один элемент списка;

- множественный выбор, т.е. в списке одновременно могут быть выделены несколько элементов.

Окно списка может содержать как один столбец, так и несколько столбцов с элементами.

Основные методы данного класса

Для добавления строки в список в классе CListBox объявлена функция:

int AddString( LPCTSTR lpszItem );====07.02.03

здесь параметр lpszItem - указатель на нуль - терминированную строку, добавляемую в список.

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

Кроме того данный класс имеет такие методы как:

- int GetCount() const; при успехе метод возвращает количество элементов в окне списка;

- void SetColumn(int Wingth); метод устанавливает ширину всех колонок списка;

- int GetCutSel(); метод возвращает индекс выделенного элемента списка;

- int DeleteString(UINT n); метод удаляет строку с индексом n;

- int InsertString(int n, LPCTSTR lpszItem); метод вставляет в указанное место n строку, если индекс n равен -1, то строка будет добавлена в конец списка.

Если в процессе работы функций возникла ошибка, то возвращается величина LB_ERR, если эта ошибка была связана с нехваткой памяти для хранения новой строки, то возвращается величина LB_ERRSPASE.

Для очистки всего списка объявлена функция:

void ResetContent( );

Эта функция не получает и не возвращает параметры.

Пример реализации программы

Задание: Написать и отладить программу, которая выводит таблицу функций

для х изменяющихся от Х1 до Х2 с шагом Н. Программа должна выглядеть как представлено на рисунке 1.

Рисунок 1.- Результат работы программы

Для решения задачи необходимо проделать следующие действия:

1) Создать при помощи MFCAppWizard(exe) новый проект (предварительно выбрав путь и имя) типа Dialog based.

2) Используя панель Controls, нанести на Dialog - 4 элемента типа Edit Box и Static Text (объединив их элементом Group Box), 2 - Buttons и 1 - ListBox для вывода результатов. Установить нужные свойства и надписи.

3) При помощи ClassWizard через закладку Member Variables связать поле Edit1 с переменной m_x1, выполнив команду ClassWizard/Member Variables, сделать щелчок на IDC_EDIT1, щелчок на Add Variable и в появившейся закладке в поле name: m_x1 тип: double и щелчок на OK, установить диапазон: Minimum Value: 0.1; Maximum Value: 0.3;

По аналогии связать:

Edit2 - с m_х2 тип: double, диапазон: 0.7 -0.9;

Edit3 - с m_h тип: double, диапазон: 0.1 -0.2;

Edit4 - с m_n тип: int, диапазон: 5 -20.

Элемент ListBox связать с m_l, назначив Category: Control, установив тем самым для данного объекта тип CListBox, т.е. для данного объекта можно вызывать методы по всей цепи иерархии данного класса MFC. Так для стирания окна вывода в обработчик щелчка на кнопке CLEAR можно вызвать следующий метод: m_l.ResetContent().

В обработчике щелчка на кнопке «RUN» введенные в класс диалога переменные m_х1, m_х2, m_h, m_n, при помощи циклических алгоритмов (внешний - по x а внутренний цикл - по параметру i для вычисления суммы для текущего аргумента) написать текст программы решения поставленной задачи.

Для вывода информации о разработчике и введенных исходных данных необходимо воспользоваться методом класса ListBox - AddString:

UpdateData(TRUE);

str.Format("Разработка Иванова И.И");

m_l.AddString(str);

UpdateData(FALSE);

str.Format("Исходные данные: x1=%.2lf, x2=%.2lf, h=%.2lf, n=%2d",

m_x1,m_x2,m_h,m_n);

m_l.AddString(str);

UpdateData(FALSE);

Участок вывода текущей строки таблицы в окно результатов может быть таким:

str.Format("при x=%.2lf, Summa=%.2lf, точное значение=%.2lf",x,s,y);

m_l.AddString(str);

UpdateData(FALSE).

4) Находясь в режиме конструктора диалога командой Layout/Tab Order, установить очередность перехода между элементами управления:

1 - Edit1; 2 - Edit2; 3 - Edit3; 4 - Edit4; 5 - Button RUN; 6 - ListBox; 7 - Button CLEAR;

8 - Button OK; 9 - Button Cancel, а для кнопки «RUN» установить свойство «Default».

5) Работа с программой:

Запустить проект и в появившемся диалоговом окне щелкнуть на «ОК»

Рисунок 2. - Окно подсказки

Появится MessageBox с подсказкой о диапазоне вводимого х1 (рисунок 2):

Щелкнуть «ОК», введите начальное значение аргумента х (поле с подсветкой) и опять щелкнуть на «ОК». По аналогии ввести значения для x2, h, n. Для выполнения задания щелкнуть на «RUN». Щелчок на кнопке «CLEAR» стирает значения в окне вывода.

· Варианты заданий

1.

2.

3.

4.

5.

7.

8.

9.

10.

11.

12.

13.

14.

15.

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

1. В чем заключается роль класса CListBox в MFC?

2. Назовите основные методы класса CListBox.

3. Перечислите основные этапы создания списка.

12. Лабораторная работа №12. Работа с элементом управления «Комбинированный список» (ComboBox)

Цель работы - научиться использовать элемент управления ComboBox, изучить основные методы класса CComboBox, предназначенным для управления данным элементом.

· Теоретические сведения

Класс CComboBox

Элемент управления ComboBox представляет собой список ListBox в комбинации с редактором Еdit или надписью Static. Данный элемент называют комбинированным окном. Окно при этом может иметь два состояния: как распахнутое (которое отображается постоянно), так и свернутое (отображается при щелчке на элементе «стрелка вниз»). Элементы списка в окне можно выбирать и тогда они отображаются или в окне редактирования или в окне статического элемента.

Три модификации компонента определяются его свойством «Type» в закладке окна свойств Style. В таблице 1. приведено сравнение этих трех стилей.

Таблица 1. - Сравнение стилей

Стиль

Когда отображается ListBox?

Что отображается, Еdit или Static?

Simple

Всегда

Edit

Drop-down

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

Edit

Drop-down list

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

Static

Для управления элементом ComboBox в библиотеки MFC существует класс CСomboBox. Чтобы добавить новую строку в выпадающий список нужно использовать функцию:

int AddString( LPCTSTR lpszItem );

здесь параметр lpszItem - указатель на нуль-терминированную строку, добавляемую в список.

Для очистки списка служит функция:

void ResetContent( );

В списке элемента ComboBox пользователь может выбирать элементы и для того, чтобы определить какой элемент был выбран, нужно воспользоваться функцией:

int GetCurSel( ) const;

Эта функция не принимает параметров и возвращает индекс выбранного элемента, причем индекс начинается с нуля.

Если необходимо из списка по заданному индексу элемента определить его содержимое, то можно воспользоваться следующей функцией:

void GetLBText( int nIndex, CString& rString ) const;

здесь nIndex - индекс элемента,

rString - сторока, куда помещается текст.

Пример написания программы

Задание. В поле ввода вводятся последовательно строки и кнопкой «Add» добавляются в поле ComboBox (рисунок 1). Затем щелчком левой клавишей мыши выбирается соответствующая строка (выбранная строка отобразится в верхнем окошке ComboBox). Щелчок на кнопке «RUN» произведет подсчет пробелов в выделенной строке и отобразит результат в поле вывода.

Рисунок 1. - Результат работы программы

Для решения задачи необходимо проделать следующие действия:

1) Создать при помощи MFCAppWizard(exe) новый проект типа Dialog based (предварительно выбрав путь и имя).

2) Используя панель Controls нанести на Dialog - 2 элементa типа Edit Box (поле ввода строки и поле вывода), используя Static Text нанести на окно нужные пояснения, 3 - Buttons; и 1 - ComboBox для вывода добавляемых строк. Установить нужные свойства и надписи. Для ComboBox - в закладке Styles: Type->Simple и активизировать Vertical scroll.

3) При помощи ClassWizard через закладку Member Variables: связать поле Edit1 с переменной m_a (тип CString): ClassWizard/Member Variables, сделать щелчок на IDC_EDIT1, щелчок на Add Variable в закладке name: m_a type: CString и нажать «OK»; для поля вывода IDC_EDIT2: name: m_a type: Cstring и в свойствах: Multiline (можно добавить вертикальный скроллинг). Элемент ComboBox связать c m_c, установив Category: Control для данного объекта тип CComboBox, т.е. для данного объекта можно вызывать методы по всей цепи иерархии данного класса MFC.

4) Связать через ClassWizard/Message maps кнопки с событием «один щелчок» и активировать обработчики. Так, для стирания окон вывода в обработчик щелчка на кнопке «Clear» можно вызвать следующий метод:

m_c.ResetContent(); и m_b=””.

Обработчик кнопки «Add» добавляет в поле вывода ComboBox строку, набранную в поле ввода одновременно очищая последнюю. Его текст:

UpdateData(TRUE);

m_c.AddString(m_a);

m_a="";

UpdateData(FALSE);

}

Обработчик кнопки «RUN» выводит в поле вывода номер выбранной строки и количество пробелов в ней. Текст программы следующий:

CString s1;

int i,j=0;

char str[25];

CComboBox *p=(CComboBox *)GetDlgItem(IDC_COMBO1);

i=p->GetCurSel();

if (i==LB_ERR)

AfxMessageBox("String No SELECT!!!");

else

{

p->GetLBText(i, str);

AfxMessageBox(str);

}

Т.е. объявляем указатель p на элемент ComboBox, через него вызываем метод GetCurSel() для определения номера выбранной строки. Далее контролируем: если выбор строки не сделан, то получаем AfxMessageBox с сообщением об этом. Если же строка выделена, методом GetLBText копируем выделенную строку списка в str и отбражаем ее в AfxMessageBox.

Данный участок программы решает поставленную задачу, т.е. подсчитывает число пробелов в выделенной строке:

int k=strlen(str);

for(int i1=0;i1<k;i1++)

if (str[i1]==' ') j++;

s1.Format("Count of spaceBar's in string №%d is=%d%c%c",i,j,13,10);

m_b=m_b+s1;

UpdateData(FALSE);

}

Вначале текста программы нужно подключить заголовочный файл string.h

4) Находясь в режиме конструктора диалога командой Layout/Tab Order, установить необходимую очередность перехода между элементами управления, поле ввода должно иметь №1.

· Варианты заданий

1. Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группу с пятью символами.

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

3. Дана строка, состоящая из групп нулей и единиц. Подсчитать количество символов в самой длинной группе.

4. Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов.

5. Дана строка, состоящая из групп нулей и единиц. Подсчитать количество единиц в группах с нечетным количеством символов.

6. Дана строка, состоящая из букв, цифр, запятых, точек, знаков ”+” и ”-”. Вывести подстроку, которая соответствует записи целого числа ( т.е. начинается со знаков ”+” и ”-” и внутри подстроки нет букв, запятых и точек ).

7. Дана строка, состоящая из букв, цифр, запятых, точек, знаков ”+” и ”-”. Вывести подстроку, которая соответствует записи вещественного числа с фиксированной точкой.

8. Дана строка, состоящая из букв, цифр, запятых, точек, знаков ”+” и ”-”. Вывести подстроку, которая соответствует записи вещественного числа с плавающей точкой.

9. Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробелами. Вывести на экран числа строки в порядке возрастания их значений.

10. Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробелами. Вывести на экран четные числа этой строки.

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

1. Чем отличается элемент управления ComboBox от ListBox?

2. Назовите основные методы класса CComboBox.

3. Назовите 3 модификации элемента ComboBox.

13. Лабораторная работа №13. Элементы управления «Шкала индикации» (Progress) и «Маркер» (Slider). Модальные диалоговые окна

Цель работы - изучить принципы работы элементов управления Progress и Slider. Получить навыки по самостоятельному созданию модальных диалоговых окон.

· Теоретические сведения

Элементы управления Progress и Slider

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

Класс CProgressCtrl обеспечивает управление состоянием индикатора. Для установки текущей позиции индикатора в классе CProgressCtrl есть следующая функция:

int SetPos( int nPos );

Здесь nPos - это новая позиция линейного индикатора, функция возвращает его старую позицию. По умолчанию верхний предел значений равен 100 (соответствует полностью заполненному индикатору), а нижний 0 (соответствует полностью не заполненному индикатору).

При необходимости для изменения пределов можно воспользоваться функцией:

void SetRange( short nLower, short nUpper );

Здесь nLower - значение нижнего предела,

nUpper - новое значение верхнего предела.

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

В MFC элементу линейного регулятора соответствует класс CSliderCtrl. Как и в классе CProgressCtrl для установки нового положения бегунка в классе CSiderCtrl есть функция SetPos, для установки диапазона допустимых значений служит функция SetRange. Когда требуется определить положение бегунка, вызывают функцию-член класса CSiderCtrl:

int GetPos( ) const;

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

Модальные диалоговые окна

Существует два типа диалоговых окон модальные и немодальные.

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


Подобные документы

  • Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.

    контрольная работа [60,1 K], добавлен 17.01.2011

  • Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.

    курсовая работа [782,4 K], добавлен 26.05.2014

  • Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.

    курсовая работа [275,9 K], добавлен 22.12.2011

  • Концепция объектно-ориентированного программирования. Объектно-ориентированные языки программирования: Smalltalk, Object Pascal, CLOS и C++. Понятие "Объект" и "Класс". Управление доступом к элементам данных классов. Определение функций-членов класса.

    реферат [24,5 K], добавлен 28.10.2011

  • Характеристика объектно-ориентированного, процедурного, функционального программирования. Выбор языка программирования для создания программного обеспечения для управления справочником "Спортсмены". Алгоритм работы приложения, пользовательский интерфейс.

    курсовая работа [1,6 M], добавлен 23.02.2016

  • Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. Основные конструкции языка С++. Разработка различных программ для Windows с использованием WIN32 API.

    учебное пособие [1,6 M], добавлен 28.12.2013

  • Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.

    контрольная работа [25,1 K], добавлен 14.03.2015

  • Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.

    контрольная работа [51,7 K], добавлен 22.01.2013

  • Анализ методов объектно-ориентированного программирования на примере численных. Детальная характеристика модулей и связь их в одну общую программу. Принципы интегрирования по общей формуле трапеции и решение дифференциального уравнения методом Эйлера.

    курсовая работа [511,6 K], добавлен 25.03.2015

  • Характеристика основных принципов объектно-ориентированного программирования. Этапы разработки программы на языке C++, реализующей игру "Морской бой". Выбор языка программирования. Характеристика необходимых классов, наследований, виртуальных методов.

    курсовая работа [657,6 K], добавлен 17.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.