- •Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Сибирский государственный университет телекоммуникаций и информатики»
- •Введение
- •Лабораторная работа №1 Создание и использование динамических массивов
- •Лабораторная работа №2 Использование динамических структур данных (список, стек, очередь)
- •Лабораторная работа №3 Принцип инкапсуляции. Описание объектного типа.
- •Лабораторная работа №4 Принцип наследования. Создание иерархии классов.
- •Прямоугольник эллипс ромб треугольник
- •Лабораторная работа №5 Принцип полиморфизма. Использование виртуальных методов.
- •Лабораторная работа №6 Использование динамических объектов.
- •Лабораторная работа №7 Разработка программы «Магазин».
- •Лабораторная работа №2
- •Рекомендации
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
Лабораторная работа №6 Использование динамических объектов.
ЦЕЛЬ РАБОТЫ: Изучить стандарт оформления кода.
ОСНОВНЫЕ СВЕДЕНИЯ
Большинство программистов работают группами и очень часто программный код, разработанный одним человеком, дорабатывается или используется другим. Поэтому необходимо создавать удобочитаемый текст программы. Существуют стандарты оформления кода программы. Рассмотрим следующие пункты стандарта:
Идентификаторы должны быть содержательными (по имени можно сказать о назначении объекта):
Имена переменных должны быть существительными. Если они состоят из нескольких слов, то такие слова должны разделяться символом подчеркивания (num_students), либо каждое слово должно начинаться с заглавной буквы (FileSize).
Имена функций должны быть глаголами. (OpenFile). Следует избегать аббревиатур.
Имена типов следует писать слитно, не разделяя слова. Каждое слово необходимо начинать с большой буквы(StrongTank). Для разделения классов, объединений и констант часто используются префиксы. const kPi=3.14;
Описание классов следует форматировать следующим образом.
class p{
public:
char name[9];
int age;
p() {
age=0;
}
}
Методы класса не должны содержать большое количество строк кода, так как это затрудняет понимание алгоритма работы. Следует также активно использовать комментарии, чтобы описать логику программы. В начале модуля ставится многострочный комментарий, в котором указывается назначение модуля.
ЗАДАНИЕ
Описать класс tlist, инкапсулирующий основные свойства линейного списка. В качестве методов класса должны быть описаны необходимые операции со списками (стеком и очередью). Создать иерархию список – стек – очередь. Продемонстрировать возможности классов иерархии в основной программе. Текст программы должен быть оформлен по вышеописанным правилам.
Лабораторная работа №7 Разработка программы «Магазин».
ЦЕЛЬ РАБОТЫ: Научиться пользоваться механизмом обработки исключительных ситуаций.
ОСНОВНЫЕ СВЕДЕНИЯ
Во время работы программы могут возникнуть различные исключительные ситуации, которые необходимо обрабатывать. Существующие механизмы отслеживания исключений могут быть задействованы следующим образом.
try{
//блок возбуждения исключительных ситуаций
trow 10; // возбуждение исключения
}
catch (type1 arg){
// блок перехвата исключительных ситуаций
}
После возбуждения исключительной ситуации, она перехватывается соответствующей указанному типу инструкцией catch. Рассмотрим пример:
int test(int i){
if (test) trow i;
}
void main(){
try{
cout <<”начало”;
test(1);
test(0);
test(2);
}
catch (int i){
cout << “перехват ”;
cout << i;
}
}
Результат:
перехват 1
перехват 2
Для обработки всех остальных исключительных ситуаций используется инструкция catch(…). Блоки обработки исключительных ситуаций помогают предотвратить аварийное завершение вашей программы.
В целях уменьшения вероятности возникновения ошибки в программе предусмотрен механизм ограничения доступа к полям класса через свойства. Например :
class ttt{
private:
int a;
public:
void set_a(int a){
if (a>0){
this->a=a;
}
}
int get_a(){
return a;
}
};
Свойство set_a() устанавливает значение переменной, а get_a(), соответственно, считывает. Рассмотренный механизм доступа позволяет отслеживать правильность присваиваемых значений. Также в момент присваивания можно выполнять ряд действий, например для активации окна приложения (form->active=true;) следует выполнить ряд дополнительных процедур связанных с процессом активации.
ЗАДАНИЕ
Написать консольное приложение «Магазин». Использовать все принципы ООП (в т.ч. свойства, исключения).
КОНТРОЛЬНЫЕ ВОПРОСЫ
В каких случаях используется исключение?
Что такое свойство и для чего оно используется?
Среда Visual Studio C++
Лабораторная работа №1
ТЕМА: Знакомство со средой Visual Studio C++. Создание простейшего приложения. Работа с визуальными компонентами: Button, Label, TextBox. Работа с невизуальным компонентом MenuStrip.
ЗАДАНИЕ
Запустите Visual Studio C++.
Выберите в палитре компонентов закладку All Windows Forms.
Перенесите с палитры компонентов на форму компоненты Label и Button. Для этого поочередно подводите курсор мыши к компонентам, читая подсказки, до тех пор, пока не появится Label. Выберете его, нажав левую кнопку мыши, а затем переместите указатель на форму и нажмите еще раз на кнопку мыши. Помещенный на форму компонент будет иметь имя Label1 .
Проделайте то же самое, только с компонентом Button .
Напишите обработчик события Button1Click. Для этого выберите на форме Button1 и щелкните на него дважды. Вы окажетесь в окне редактирования.
Приведите обработчик события нажатия кнопки к следующему виду:
this->label1->Text=L"Hello";
Сохраните Приложение, выбрав пункт в главном меню File -> Save All. Название проекта и название программного модуля не должно совпадать!
Запустите на выполнение ваше Приложение. Для этого выберете в главном меню пункт Debug->StartDebugging, или нажмите клавишу F5.
Нажмите на кнопку в запущенном Приложении и посмотрите, что из этого получилось. Закройте Приложение.( При нажатии на кнопку вызывается обработчик события System::Void button1_Click; , в котором мы меняем свойство TextBox у объекта Label1).
Поместите на форму компонент TextBox.(см. п.3).
Приведите обработчик события нажатия кнопки к следующему виду (вызов обработчика см. в п.5):
this->textbox1->Text=L"Hello";
Измените свойство textbox1.Text на “Привет, студент!!!”. Для этого выберете на форме объект textbox1. Перейдите в Object Inspector, в закладке Properties найдите свойство Text и замените его.
Запустите на выполнение ваше Приложение. Попробуйте нажимать кнопку, вводя разное значение в строку редактирования. Закройте приложение.
Поменяйте свойство объекта Label1.Text на “1” (см. п.3).
Приведите обработчик события нажатия кнопки к следующему виду: (см. п.5)
int i;
i = Convert::ToInt32(this->label1->Text);
this->label1->Text= Convert::ToString(i+1);
{ToString, ToInt32, – функции, преобразующие целый тип в строковый и строковый в целый соответственно}
Запустите Приложение.
Закройте Приложение.
Задание 2
Для выполнения Задания 2 откройте новое Приложение.
П
оместите
на форму визуальные компоненты Label,
TextBox
и два компонента Button.
При наборе текста в окне TextBox
изменяется надпись на компоненте Label,
при нажатии кнопки Сброс окно TextBox
очищается и изменяется надпись на
компоненте Label
, при нажатии кнопки Выход приложение
завершает свою работу (метод формы ‑
Close).Для выравнивания положения визуальных компонент на форме, выделите нужные компоненты и примените команду TextBox->Align. Добавьте еще несколько компонентов на форму и поработайте с группой компонентов: измените расположение, размер, какое-либо свойство компонентов, исключите компонент из группы, добавьте в группу.
Для составления программного кода обработчиков событий необходимо выбрать нужное событие на закладке Events в Инспекторе Объектов и дважды щелкнуть на поле справа от события или выбрать нужный обработчик из выпадающего списка, если он уже был запрограммирован. Для компонент Button запрограммируйте нужным образом обработчики событий Click, а для компонента TextBox ‑ обработчик TextChanged.
Для того, чтобы при запуске приложения активным был компонент TextBox, воспользуйтесь командой TextBox->TabIndex. Измените порядок обхода компонентов. Запустите Приложение. Воспользуйтесь клавишей Tab.
Закройте Приложение. Закройте Visual C++.
Задание 3
Запустите Visual Studio C++. Откройте Приложение с Заданием 2.
Р
азместите
на форме компонент MenuStrip.
Структура меню должна быть следующей.
Двойной щелчок мышью по размещенному на форме компоненту откроет окно [Design]. Используя свойства Text пунктов меню, создайте нужную структуру меню. Для использования клавиш мнемонического доступа к пунктам меню (Alt+подчеркнутая буква пункта) в свойстве Text, букву подчеркивать не надо, но перед ней следует набрать символ & (например, &File). Для определения клавиш быстрого доступа к пунктам меню используйте свойство ShortcutKeys.
Запрограммируйте работу пунктов Exit и About. Для этого, в обработчик события Click пункта Exit вставьте закрытие приложения, а в обработчик события Click пункта About вставьте вызов диалогового окна (MessageBox) вида:
П
осмотрите,
из чего состоит Ваше приложение, с
помощью менеджера Solution
Explorer.
Попробуйте исключить модуль из проекта,
добавить модуль в проект.
