Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Объектно-ориентированные языки программирования : в 3 ч. Ч. II

Покупка
Артикул: 717065.02.99
Доступ онлайн
50 ₽
В корзину
В предлагаемом учебном пособии представлены основные инструменты программирования оконных интерфейсов средствами компилятора С++ в операционной среде системы Windows. Учебное пособие предназначено для студентов направлений подготовки 230400 «Информационные системы и технологии» и 230700 «Прикладная информатика».
Дудецкий, В. Н. Объектно-ориентированные языки программирования : в 3 ч. Ч. II : учебное пособие / В. Н. Дудецкий. - 3-е изд., стер. - Москва : ФЛИНТА, 2021. - 40 с. - ISBN 978-5-9765-2253-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/1843730 (дата обращения: 19.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
В.Н. Дудецкий 

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ

ЯЗЫКИ ПРОГРАММИРОВАНИЯ 

Часть 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) 
{ 

Доступ онлайн
50 ₽
В корзину