Объектно-ориентированные языки программирования : в 3 ч. Ч. II
Покупка
Тематика:
Программирование на C и C++
Издательство:
ФЛИНТА
Автор:
Дудецкий Владимир Николаевич
Год издания: 2021
Кол-во страниц: 40
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9765-2253-4
Артикул: 717065.02.99
Доступ онлайн
В корзину
В предлагаемом учебном пособии представлены основные инструменты программирования оконных интерфейсов средствами компилятора С++ в операционной среде системы Windows. Учебное пособие предназначено для студентов направлений подготовки 230400 «Информационные системы и технологии» и 230700 «Прикладная информатика».
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
В.Н. Дудецкий ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Часть II Учебное пособие 3-е издание, стереотипное Москва Издательство «ФЛИНТА» 2021
УДК 004.43(075.8) ББК 32.973-018.1я73 Д81 Д81 Дудецкий В.Н. Объектно-ориентированные языки программирования : учебное пособие : в 3 ч. Ч. II / В.Н. Дудецкий. — 3-е изд., стер. — М.: ФЛИНТА, 2021. — 40 с. — ISBN 978-5-9765-2253-4. — Текст : электронный. В предлагаемом учебном пособии представлены основные инструменты программирования оконных интерфейсов средствами компилятора С++ в операционной среде системы Windows. Учебное пособие предназначено для студентов направлений подготовки 230400 «Информационные системы и технологии» и 230700 «Прикладная информатика». УДК 004.43(075.8) ББК 32.973-018.1я73 ISBN 978-5-9765-2253-4 © Дудецкий В.Н., 2015 © Издательство «ФЛИНТА», 2015
ОГЛАВЛЕНИЕ Введение …………………………………………………………………….. 4 1. Дюймы-сантиметры ……………………………………………………… 5 2. Конвертор ………………………………………………………………… 8 3. Фотоателье ………………………………………………………………... 11 4. Комплектация ……………………………………………………………. 13 5. Жалюзи …………………………………………………………………... 16 6. Калькулятор ……………………………………………………………… 19 7. Просмотр иллюстраций ………………………………………………….. 24 8. Слайд-шоу ……………………………………………………………….. 28 9. Секундомер ………………………………………………………………. 33 10. Часы ……………………………………………………………………... 35
Введение Язык С++ является развитием языка С, занимающего едва ли не первое место по распространенности среди инструментальных средств системного программирования во всем мире. В С++, по сравнению с С, введен механизм классов. Класс является фундаментальным механизмом, с введением которого С++ приобрел статус объектно-ориентированного языка программирования. Данное учебное пособие является второй частью учебного пособия «Объектно-ориентированные языки программирования». Часть вторая предназначена для обучения программированию приложений Windows Forms в Mirosoft Visual C++. В учебном пособии приведено большое количество примеров программ разной степени сложности, содержащих подробные комментарии, облегчающих успешное освоение программирования на языке С++.
1. ДЮЙМЫ-САНТИМЕТРЫ Программа Дюймы-сантиметры, ее форма приведена на рис. 1, демонстрирует использование компонентов TextBox и Label для ввода исходных данных и отображения результата. Программа спроектирована таким образом, что в поле редактирования пользователь может ввести только правильные данные — дробное число. Значения свойств формы приведены в табл. 1. Рис. 1. Форма программы Дюймы-сантиметры Таблица 1 Значения свойств формы Свойство Значение Комментарий Text Дюймысантиметры Текст заголовка StartPosition CenterScreen Начальное положение окна —в центре экрана FormBorderStyle FixedSingle Тонкая граница окна. Пользователь не сможет изменить размер окна путем перемещения его границы MaximizeBox False Кнопка Развернуть окно недоступна. Пользователь не сможет развернуть окно программы на весь экран Font Tahoma; 9pt Шрифт, наследуемый компонентами формы // щелчок на кнопке OK private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double inch; // расстояние в дюймах double sm; // расстояние в сантиметрах // Если в поле редактирования нет данных, // то при попытке преобразовать пустую // строку в число возникает исключение. try { inch = Convert::ToDouble(textBox1->Text);
sm = inch * 2.54; label2->Text = inch.ToString("n") + " inches — " + sm.ToString("n") + " см"; } catch (System::FormatException^ ex ) { // обработка исключения: // — сообщение MessageBox::Show( "Надо ввести исходные данные", "Дюймы-сантиметры", MessageBoxButtons::OK, MessageBoxIcon::Exclamation); // — установить курсор в поле редактирования textBox1->Focus(); } } // нажатие клавиши в поле textBox private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) { // Правильными символами считаются цифры, // запятая, <Enter> и <Backspace>. // Будем считать правильным символом // также точку, но заменим ее запятой. // Остальные символы запрещены. // Чтобы запрещенный символ не отображался // в поле редактирования, присвоим // значение true свойству Handled параметра e if ((e->KeyChar >= '0') && (e->KeyChar <= '9')) { // цифра return; } if (e->KeyChar == '.') { // точку заменим запятой e->KeyChar = ','; } if (e->KeyChar == ',') { if (textBox1->Text->IndexOf(',') != -1) { // запятая уже есть в поле редактирования e->Handled = true; }
return; } if ( Char::IsControl(e->KeyChar) ) { // <Enter>, <Backspace>, <Esc> if ( e->KeyChar == (char) Keys::Enter) // нажата клавиша <Enter> // установить "фокус" на кнопку OK button1->Focus(); return; } // остальные символы запрещены e->Handled = true; }
2. КОНВЕРТОР Программа Конвертор, ее форма приведена на рис. 2, демонстрирует обработку одной функцией событий от нескольких однотипных компонентов. Функции обработки событий KeyPress и TextChanged для компонента textBox1 (поле Курс) создаются обычным образом, затем они указываются в качестве функций обработки соответствующих событий для компонента textBox2 (поле Цена). Рис. 2. Форма программы Конвертор // щелчок на кнопке OK private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double usd; // цена в долларах double k; // курс double rub; // цена в рублях usd = System::Convert::ToDouble(textBox1->Text); k = System::Convert::ToDouble(textBox2->Text); rub = usd * k; label3->Text = usd.ToString("n") + "$ = " + rub.ToString("c"); } // Эта функция обрабатывает нажатие клавиши в полях // редактирования textBox1 (Курс) и textBox2 (Цена). // Сначала надо обычным образом создать функцию // обработки события KeyPress для компонента // textBox1, затем — указать ее в качестве // обработчика этого же события для компонента textBox2 private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) { if ((e->KeyChar >= '0') && (e->KeyChar <= '9')) return;
if (e->KeyChar == '.') e->KeyChar = ','; if (e->KeyChar == ',') { if (sender->Equals(textBox1)) { if ((textBox1->Text->IndexOf(',') != -1) || (textBox1->Text->Length == 0)) { e->Handled = true; } } else { if ((textBox2->Text->IndexOf(',') != -1) || (textBox2->Text->Length == 0)) { e->Handled = true; } } return; } if (Char::IsControl(e->KeyChar)) { if (e->KeyChar == (char)Keys::Enter) { if (sender->Equals(textBox1)) // клавиша <Enter> нажата в поле Курс // переместить курсор в поле Цена textBox2->Focus(); else // клавиша <Enter> нажата в поле Цена // установить фокус на кнопку OK button1->Focus(); } return; } // остальные символы запрещены e->Handled = true; } // Функция обрабатывает событие TextChanged (изменился // текст в поле редактирования) обоих компонентов TextBox. // Сначала надо обычным образом создать функцию // обработки события TextChanged для компонента // textBox1, затем — указать ее в качестве // обработчика события TextChanged для компонета textBox2 private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
{ label3->Text = ""; // очистить поле отображения // результата расчета if ((textBox1->Text->Length == 0) || (textBox2->Text- >Length == 0)) // в поле редактирования нет данных // сделать кнопку OK недоступной button1->Enabled = false; else // сделать кнопку OK доступной button1->Enabled = true; }
3. ФОТОАТЕЛЬЕ Программа Фотоателье, ее форма приведена на рис. 3, позволяет рассчитать стоимость печати фотографий. Демонстрирует использование компонента RadioButton. Рис. 3. Форма программы Фотоателье // щелчок на кнопке OK private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double cena = 0 ; // цена int n; // кол-во фотографий double sum; // сумма if (radioButton1->Checked) cena = 8.50; if (radioButton2->Checked) cena = 10; if (radioButton3->Checked) cena = 15.5; n = Convert::ToInt32(textBox1->Text); sum = n * cena; label2->Text = "Цена: " + cena.ToString("c") + "\nКоличество: " + n.ToString() + "шт.\n" + "Сумма заказа: " + sum.ToString("C"); } // изменилось содержимое поля редактирования private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
Доступ онлайн
В корзину