- •Тема 1. Обєктно - орієнтовне програмування 4
- •Тема 2. Основні концепції парадигми програмування 14
- •Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) 88
- •Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library) 91
- •Тема 9. Шаблони проектування stl (Standard Template Library) 104
- •Лекція № 1 Тема 1. Обєктно - орієнтовне програмування План лекції
- •Зміст лекції Вступ.
- •1.1. Поняття те визначення ооп.
- •1.2. Об' єктно - орієнтована методологія (оом).
- •1.3. Об' єктно - орієнтовані мови програмування.
- •1.4. Системи і середовища програмування топ.
- •Лекція № 2 Тема 2. Основні концепції парадигми програмування План лекції
- •Зміст лекції
- •2.1. Парадигми програмування: об' єктно - орієнтована парадигма.
- •2.2. Основні концепції топ.
- •2.3. Моделювання. Об' єктна декомпозиція.
- •2.4. Ідеї топ. Топ принцип - поліморфізм.
- •2.5. Інкапсуляція. Наслідування.
- •2.6. Об' єктний рефакторинг.
- •2.7. Системи і середовища програм.
- •Лекція № 3
- •План лекції
- •Зміст лекції
- •3.1. Абстракції даних
- •3.4. Типи, що перераховують
- •3.5. Вирази
- •3.6. Інструкції
- •Лекція № 4
- •План лекції
- •Зміст лекції
- •4.2. Структура програми, функція main без параметрів.
- •4.3. Основні типи даних.
- •4.4. Константи, змінні, вирази та пріоритет операцій.
- •4.5. Базові конструкції структурного програмування - галуження, цикл, передача управління.
- •4.6. Загальні та бітові логічні операції.
- •4.7. Тернарний опертор.
- •4.8. Вказівники і посилання; масиви.
- •Лекція № 5
- •План лекції
- •Зміст лекції
- •5.1. Користувацькі типи - typedef, enum, struct, union. Функції.
- •5.2. Передача параметрів та повернення значень з функцій.
- •5.3. Рекурсія, перевантаження функцій, функція main з параметрами.
- •5.4. Глобальні і локальні визначення, простори імен та їх використання.
- •5.5. Директиви препроцесора.
- •5.6. Стандартний ввід/вивід - бібліотека stdio.H.
- •5.7. Основи потокового введенню/виводу - бібліотека iostream.H.
- •Лекція № 6
- •План лекції
- •Зміст лекції
- •6.2. Екземпляри класів або об' єкти.
- •6.3. Поля (атрибути) та методи.
- •6.4. Специфікатори доступу (private, protected, public).
- •6.5. Вказівник this.
- •6.6. Перевантаження методів.
- •6.7. Конструктори і деструктори класів.
- •6.8. Перевантаження конструкторів.
- •6.9. Конструктори копіювання та перетворення.
- •6.10. Закон Деметри
- •Лекція № 7 Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) План лекції
- •2.Основні поняття та принципи.
- •3.Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •4.Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності. Зміст лекції
- •7.1. Сфера застосування.
- •7.2. Основні поняття та принципи.
- •7.3. Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •7.4. Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності.
- •Лекція № 8 Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library)
- •План лекції
- •Зміст лекції
- •8.1. Бібліотека стандартних шаблонів - stl (призначення, основні можливості, сфера застосування).
- •8.2. Стандартні потоки і потокові класи.
- •8.3. Стрічки (основні операції та функції; переваги порівняно із c - стрічками).
- •8.4. Поняття про контейнери, ітератори, функціональні об' єкти та алгоритми stl.
- •Лекція № 9 Тема 9. Шаблони проектування stl (Standard Template Library) План лекції
- •1.Шаблони проектування (designpatterns).
- •Зміст лекції
- •9.1. Шаблони проектування (designpatterns).
- •9.2. Класифікація шаблонів проектування stl (creational, structural, behavior, concurrencypatterns).
- •9.3. Можливості застосування шаблонів проектування stl.
6.8. Перевантаження конструкторів.
Перевантаження функцій-членів класу
Функції-члени класу можна перевантажувати так само, як і будь-які інші функції в C++, тобто в класі допускається існування декількох функцій з однаковим ім'ям. Правильний варіант функції автоматично вибирається компілятором залежно від кількості і типів аргументів, заданих в прототипі функції. У наступній програмі створюється переобтяжена функція number() класу absolute_value, яка повертає абсолютне значення як цілочисельних аргументів, так і аргументів з плаваючою комою. У першому випадку для цього використовується бібліотечна функція abs(), що приймає аргумент типу int, в другому - fabs ( ), що приймає аргумент типу double.
//
// // absolute. cpp
// // Ця програма на мові C++ демонструє використання переобтяжених
// // функцій-членів класу. Програма обчислює абсолютне значення чисел
// // типу int і double.
##include <iostream.h>
##include <math.h> // містить прототипи функцій abs() і fabs()
class absolute value { public:
int number (int);
double number (double);
int absolute_value::number(int test_data) return(abs(test_data)); double absolute_value::number(double test_data) return(fabs(test_data)); }
main()
absolute_value neg_number;
cout<< "Абсолютне значення числа - 583 рівне << neg_number.number(-
583) << endl;
cout<< "Абсолютне значення числа - 583.1749 рівно "
<< neg_number. number (- 583.1749)<< endl; return (0); )
Ось якими будуть результати роботи програми :
Абсолютне значення числа - 583 рівне 583 Абсолютне значення числа - 583.1749 рівно
583.175
У програмі, що приводиться далі, у функцію trig_calc() передається значення кута в одному з двох форматів : числовому або строковому. Програма обчислює синус, косинус і тангенс кута.
//
// // overload. срр
// // Ця програма на мові C++ містить приклад переобтяженої функції
// // що набуває значення кута як в числовому виді, так і у форматі
// // градуси/хвилини/секунди.
//
##include <iostream.h>
##include <math.h>
##include <string.h>
const double DEG_TO_RAD = 0.0174532925; class trigonometric { double angle; public:
void trig_calc(double);
void trig_calc(char *); };
void trigonometric::trig_calc(double degrees)!
angle = degrees;
cout << "\nДля кута " << angle << " градусів :" << endl;
cout << "синус рівний " << sin (angle * DEG TO_RAD) << endl; cout << "косинус рівний " << cos(angle * DEG_TO_RAD) << endl; cout << "тангенс рівний " << tan(angle * DEG_TO_RAD) << endl; } void trigonometric::trig_calc(char *dat)(
char *deg, *min, *sec; deg = strtok(dat, "d"); min = strtok(0, "m"); sec = strtok(0","s);
angle = atof(deg) + atof(min)/60.0 + atof (sec)/360.0;
cout<< "\nДля кута". << angle << " градусів :" << endl;
cout << "синус рівний ' " << sin(angle * DEG_TO_RAD) << endl; cout << "косинус рівний " << cos(angle * DEG_TO_RAD) << endl; cout << "тангенс рівний " << tan (angle * DEG_TO_RAD) << endl; } main ()
( ( trigonometric data;
data.trig_calc(75.0);
char str1[] = "35 d 75m 20s"; data.trig_calc(str1);
data.trig_calc(145.72);
char str2[l= "65 d45m 30s"; data.trig_calc (str2);
return(0); }
У програмі використовується бібліотечна функція strtok(), прототип якої знаходиться у файлі STRING.H. Ця функція сканує рядок, розбиваючи її на лексеми, ознакою кінця яких служить один з символів, перерахованих в другому аргументі. Довжина кожної лексеми може бути довільною. Функція повертає покажчик на першу виявлену лексему. Лексеми можна читати одну за іншою шляхом послідовного виклику функції strtok( ).
Річ у тому, що після кожної лексеми вона вставляє в рядок символ \0 замість символу-роздільника. Якщо при наступному виклику як перший аргумент вказати 0, функція продовжить читання рядка з цього місця. Коли в рядку більше немає лексем, повертається нульовий покажчик.
Розглянута програма дозволяє задавати значення кута у вигляді рядка з вказівкою градусів, хвилин і секунд. Ознакою кінця першої лексеми, що містить кількість градусів, служить буква d, другої лексеми - т, третьою, - s. Кожна витягнута лексема перетвориться в число за допомогою стандартної бібліотечної функції atof() з файлу МАТН.Н.
Нижче представлені результати роботи програми :
Для кута 75 градусів: синус дорівнює 0.965926 косинус дорівнює 0.258819 тангенс дорівнює 3.73205
Для кута 36.3056 градусів: синус дорівнює 0.592091 косинус дорівнює 0.805871 тангенс дорівнює 0.734722
Для кута 145.72 градусів:
синус дорівнює 0.563238 косинус рівний - 0.826295 тангенс рівний - 0.681642
Для кута 65.8333 градусів: синус дорівнює 0.912358 косинус дорівнює 0.409392 тангенс дорівнює 2.22857
