- •Рейтингова система оцінювання знань та умінь з ооп 2012-2013 н.Р.
- •Вимоги до звіту з лабораторних робіт
- •Класи потоків Лабораторна робота 1
- •1.1 Теоретичні відомості
- •1.1.1. Методи класів потоків
- •1.1.2. Маніпулятори
- •1.1.3. Деякі методи класів файлових потоків
- •1.2 Приклад програми Умова задачі
- •Алгоритм задачі
- •Текст програми
- •Результати виконання програми
- •1.3 Варіанти завдань
- •1.4 Контрольні запитання
- •Інкапсуляція. Інтерфейси класів . Діаграми прецедентів і класів Лабораторна робота 2
- •2.1 Теоретичні відомості Етапи об’єктно-орієнтованого проектування та моделювання
- •Діаграма варіантів використання(use-case diagram)
- •Ідентифікація класів
- •Ідентифікація атрибутів
- •Ідентифікація операцій (методів)
- •Типові схеми uml діаграм
- •2.2 Програма роботи
- •2.3 Варіанти завдань
- •2.4 Приклад виконання роботи Задача
- •Об’єктно-орієнтоване проектування Зображення класів в uml
- •Ідентифікація атрибутів
- •Структура проекту
- •Інтерфейси та реалізації класів програми
- •2.5 Контрольні запитання
- •Конструктори та деструктори класів Діаграми прецедентів і класів Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.2 Програма роботи
- •3.3 Варіанти завдань
- •3.4 Приклад виконання роботи Задача
- •Реалізація конструкторів і деструкторів деяких класів
- •3.5 Контрольні запитання
- •Методи класів: аксесори, ітератори, утілити, предикатні функції . Діаграми класів, діяльності, послідовності Лабораторна робота № 4
- •4.1 Теоретичні відомості
- •4.2 Програма роботи
- •4.3 Варіанти завдань
- •4.4 Приклад виконання роботи Задача
- •Реалізація деяких методів-аксесорів, предикатних функцій, функцій-утілит, методів, які забезпечують функціональність об’єктів
- •Результати виконання роботи
- •4.5 Контрольні запитання
- •Константні та статичні члени класів. Вбудовані функції. Діаграми класів, послідовності Лабораторна робота № 5
- •5.1 Теоретичні відомості
- •5.2 Програма роботи
- •5.3 Варіанти завдань
- •5.4 Приклад виконання роботи Задача 5_1
- •Приклади деяких константних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •Задача 5_2
- •Приклади деяких статичних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •5.5 Контрольні запитання
- •Перевантаження операцій та функцій. Дружні функції Діаграми класів, станів і переходів Лабораторна робота 6
- •6.1 Теоретичні відомості
- •6.2 Програма роботи
- •6.3 Варіанти завдань
- •6.4 Приклад виконання роботи
- •6.5 Контрольні запитання
- •Просте успадкування класів. Поліморфізм. Віртуальні функції Діаграма класів, кооперацій. Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2 Програма роботи
- •9.2. Приклад програми Умова задачі 9
- •Алгоритм задачі 9
- •Текст програми 9
- •Результати роботи програми 9
- •9.3. Варіанти завдань
- •9.4. Контрольні запитання
- •Методи внутрішнього сортування (сортування масивів) Лабораторна робота 10
- •Методи зовнішнього сортування (сортування файлів) Лабораторна робота 11
9.2. Приклад програми Умова задачі 9
Піднести будь-яке число до будь-якого степеня. Передбачити аналіз таких виключних ситуацій: від’ємне число у дробовому степені, нуль у від’ємному степені. При виникненні виключення програма повторює запит на введення даних і продовжує роботу. Програма закінчує роботу, якщо не виникає виключення.
Алгоритм задачі 9
Повторювати дії, доки не отримано правильного результату
Увести число і його степінь.
Якщо число >0, то піднести число до введеного степеня.
Якщо число <0, то виконати такі дії:
Виділити цілу і дробову частини степеня.
Якщо дробова частина степеня дорівнює 0 і його ціла частина непарна, тоді піднести число до степеня та отримати від’ємний результат;
Інакше отримати додатний результат піднесення числа до степеня;
Якщо степінь дробовий і число від’ємне, то формувати виключення;
Якщо число і степінь дорівнюють 0, тоді результат дорівнює 1;
Якщо степінь <1, то формувати виключення:
опрацювати виключення заданого типу:
відобразити повідомлення про помилку;
передати виключення його обробнику в точку виклику виключення;
якщо виключення нетипізоване, то вивести повідомлення про повторення обчислень;
Кінець циклу.
Текст програми 9
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ інтерфейсу класу /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
/////////////////////////////////файл lab12.h – заголовний файл ///////////////////////////////////////////////
class Error // клас генерування виключень
{ double b; //число, яке підноситься до степеня
double e; //степінь public :
//конструктор ініціалізації об’єкта виключення
Error(double bb, double ee) : b(bb), e(ee) { }
void Report(); // звіт про виключні ситуації
};
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ реалізація класу та тестова програма \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
///////////////////////////////////////файл lаb12.cpp – вихідний файл /////////////////////////////////////////
#include <iostream.h>
#include <math.h>
#include “lab12.h”
////////////////////////////////// реалізація класу виключення /////////////////////////////////////////////////////
void Error::Report() //виведення повідомлень про причину виключення
{ cout << "Domain error:"
<< " base:" << b << " exponent:" << e << endl
<< "Press Enter to continue...";
char c; cin.get(c); //чекання натиску клавіші
}
//////////////// піднесення числа до степеня, генерація виключних ситуацій //////////////////////
double Power(double b, double e) throw(Error)
{ if (b > 0.0) return exp(e * log(b));
if (b < 0.0) //число від’ємне
{ double ipart; //ціла частина степеня
double fpart = modf(e, &ipart); //виділення цілої і дробової частин степеня
if (fpart == 0) //якщо дробової частини немає
{ if (fmod(ipart, 2) != 0) // перевірка на парність цілої частини
return -exp(e * log(b)); //число від’ємне, степінь цілий непарний
else return exp(e * log(b)); } //число від’ємне степінь цілий парний
else //число від’ємне, степінь дробовий
throw Error(b, e);//формування виключення: будується об’єкт класу error
}
else //об’єкт ініціалізується значенням b, e
{
if (e == 0.0) return 1.0; //степінь=0, результат=1
if (e < 1.0) throw Error(b, e); //степінь дробовий, число=0: виключення
return 0.0; //число = 0, результат = 0
}
}
//////////////////////////////////////////////////// тестова програма /////////////////////////////////////////////////////
int main(){
for( ; ; ) // нескінченний цикл переривається по return 0
{ try
{
try
{ double base, exponent, result;
cout << "base? "; cin >> base;
cout << "exponent? "; cin >> exponent;
result = Power(base, exponent); //генерація виключної ситуації
cout << "result == " << result << endl;
} // try
catch (Error& e) //обробка виключення
{
e.Report(); //виведення повідомлення про помилку
throw e;
} //передати ситуацію в точку виклику
return 0; //якщо не було виключень
} //end of try
catch(...) //обробка нетипізованого виключення
{
cout<<"error, try again"<<endl; }
} // end of for
}