- •Календарний план виконання роботи
- •Анотація
- •Розділ 1. Постановка задачі
- •1.1 Уточнена постановка задачі на розробку програмного забезпечення
- •Розділ 2. Опис алгоритмів і програм
- •2.1 Опис глобальних змінних
- •2.2 Опис об’єктів та їх методів
- •2.3 Діаграма класів
- •2.4 Тексти програми
- •Розділ 3. Тестування програмного забеспечення
- •3.1 Вимоги до програмно-технічного забезпечення
- •3.2 Аналіз результатів тестування
- •3.3 Інструкція користувача
- •Висновок
- •Використані джерела
Розділ 1. Постановка задачі
1.1 Уточнена постановка задачі на розробку програмного забезпечення
Створити клас Коло на координатній площині. Дані класу - координати центра кола та радіус. Клас має конструктор за замовчуванням, конструктор кола одиничного радіуса, і конструктор довільного кола.
Визначити методи для визначення довжини кола та площі кола, виведення параметрів кола на екран.
1. Описати об'єкти створеного типу, звернутися до методів.
2. Створити динамічні об'єкти створеного типу, звернутись до їх методів.
3. Створити метод шоу для графічного відображення різних об'єктів класу.
4. Як метод класу перевантажити унарну операцію ++ для збільшення радіусу кола.
Класам-нащадком для кола оголосити клас Кільце, який має додаткові полі – внутрішній радіус і метод Площа. Визначити конструктор кільця. Виведіть дані на екран з використанням методу базового класу.
Розділ 2. Опис алгоритмів і програм
Таблиця 2.1
2.1 Опис глобальних змінних
Ім’я |
Тип |
Призначення |
choice |
int |
Визначення пункту меню |
x |
int |
Тимчасова зміна, що містить координату кола по осі ox |
y |
int |
Тимчасова зміна, що містить координату кола по осі oy |
r |
int |
Тимчасова змінна, що містить радіус кола |
wm |
int |
Змінна для вибору режиму роботи з програмою |
Таблиця 2.2
2.2 Опис об’єктів та їх методів
Клас |
Дані та методи |
Опис |
CCircle |
int r; int x; int y; CCircle(); CCircle(int _r); CCircle(int _x, int _y, int _r); circleLength(); void circleArea(); CCircle operator++(int notused); void show(); |
Клас CCircle містить дані про коло, його положення та радіус. Включає наперед визначені конструктор за замовчуванням, конструктор кола одиничного радіуса, і конструктор довільного коло. А також методи для визначення довжини кола та площі кола, виведення параметрів кола на екран. |
Ring |
int iR; void ringArea(); |
Клас Ring наслідує клас CCircle, містить в собі дані кільце, його внутрішній радіус, а також метод для визначення площі кільця. |
2.3 Діаграма класів
2.4 Тексти програми
Лістинг головного файлу програми «main.cpp»:
#include <stdio.h>
#include <conio.h>
#include <iostream> /* Вібліотека вводу-виводу */
#include <windows.h>
#include <graphics.h> /* Бібліотека роботи з графікою */
#include "Circle.h" / Клас Коло */
#include "Ring.h" / Клас Кільце */
using namespace std; /* Простір імен std */
int choice, x, y, r, wm;
CCircle MyCircle; /* Оголошення статисного об'єкту MyCircle*/
CCircle *DMyCircle = &MyCircle; /* Оголошення динамічного об’єкту */
int main()
{
setlocale(LC_ALL, "Russian");
system("cls"); /* Очистка екрану */
std::cout<<" Оберіть метод роботи з програмою"<<endl;
std::cout << " ************************************************\n";
std::cout << " 1. Використати конструктор за замовчуванням\n";
std::cout << " 2. Використати конструктор одиничного кола\n";
std::cout << " 3. Використати конструктор довільного кола\n";
std::cout << " ************************************************\n";
std::cout << " Ваш вибір: "; cin >> wm;
switch(wm)
{
case 1:
{
CCircle MyCircle;
CCircle *DMyCircle = &MyCircle;
break;
}
case 2:
{
CCircle MyCircle(1);
CCircle *DMyCircle = &MyCircle;
break;
}
case 3:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Формування конструктора довільного кола\n";
std::cout << "\n ************************************************\n";
std::cout<<"\n Введіть координату х: "; std::cin>>x;
std::cout<<"\n Введіть кооридинату y: "; std::cin>>y;
std::cout<<"\n Введіть радіус кола: "; std::cin>>r;
CCircle MyCircle(x, y, r);
CCircle *DMyCircle = &MyCircle;
break;
}
default:
{
std::cout << "\n Ви помилились цифрою, буде застосований конструктор за замовчуванням...\n";
CCircle MyCircle;
CCircle *DMyCircle = &MyCircle;
break;
}
}
Ring CRing;
Ring *DCRing = &CRing;
do {
system("cls"); /* Очистка екрану */
std::cout << "\n Головне меню програми\n";
std::cout << "\n**************************************\n\n";
std::cout << " 1. Задати дані класу коло \n";
std::cout << " 2. Визначити довжину кола \n";
std::cout << " 3. Визначити площу кола \n";
std::cout << " 4. Збільшити радіус кола на 1 \n";
std::cout << " 5. Задати дані класу кільця \n";
std::cout << " 6. Визначити площу кільця\n";
std::cout << " 7. Графічне відображення об’єктів \n";
std::cout << " 8. Про автора\n";
std::cout << " 9. Вихід \n";
std::cout << "\n**************************************\n\n";
std::cout << " --- Оберіть необхідний пункт меню: ";
std::cin >> choice;
switch (choice)
{
case 1:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Задання даних класу коло \n";
std::cout << "\n**************************************\n\n";
std::cout<<"\n Введіть координату х: "; std::cin>>DMyCircle->x;
std::cout<<"\n Введіть координату y: "; std::cin>>DMyCircle->y;
std::cout<<"\n Введть радіус кола: "; std::cin>>DMyCircle->r;
if(DMyCircle->r <= 0)
{
std::cout<<"\n Помилка! Радіус кола не можу бути від’ємним або рівним 0.\n";
system("pause");
exit(-1);
}
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 2:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Визначення довжини кола \n";
std::cout << "\n**************************************\n\n";
MyCircle.circleLength(); /* Виклик методу обчислення довжини кола */
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 3:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Визначення площі кола \n";
std::cout << "\n**************************************\n\n";
MyCircle.circleArea();/* Виклик методу обчислення площі кола */
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 4:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Збільшення радіусу кола на 1 \n";
std::cout << "\n**************************************\n\n";
std::cout << "\n Нинішній радіус кола рівний: "<<MyCircle.r;
std::cout << "\n\n**************************************\n";
MyCircle++; /* Операція інкременту радіуса кола */
std::cout<<"\n Операція інкременту здійснена успішно. \n Радіус кола рівний: "<<DMyCircle->r<<endl;
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 5:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Задання даних класу кільце \n";
std::cout << "\n**************************************\n\n";
std::cout<<"\n Введіть радіус кільця: "; std::cin>>DCRing->r;
std::cout<<"\n Введіть внутрішній радіус кільця: "; std::cin>>DCRing->iR;
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 6:
{
system("cls"); /* Очистка екрану */
std::cout << "\n Визначення площі кільця \n";
std::cout << "\n**************************************\n\n";
DCRing->ringArea();/* Виклик методу обчислення площі кільця */
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 7:
{
system("cls"); /* Очистка екрану */
initwindow(800,600);
/* Виклик методу графічного відображення кола */
DMyCircle->show(DMyCircle->r);
std::cout << "\n**************************************\n\n";
system("pause");
break;
}
case 8:
{
system("cls"); /* Очистка екрану */
std::cout << "\n****************************************************************\n\n";
std::cout<<"\n\n\n\t\t Автор програми: Левчук Владислав Вікторович";
std::cout<<"\n\t\t Студент: ВТ НУХТ";
std::cout<<"\n\t\t Курс: 3";
std::cout<<"\n\t\t Група: 37\n\n\n";
std::cout << "\n****************************************************************\n\n";
system("pause");
break;
}
case 9:
{
break;
}
default:
{
std::cout << "\n Ви помилились цифрою, поверніться у попереднє меню та спробуйте ще раз...\n";
system("pause");
main();/* Виклик головної функції програми */
break;
}
}
} while(choice != 9);
system("pause");
return 0;
}
Лістинг бібліотеки класу Коло «Circle.h»:
#ifndef CCIRCLE_H
#define CCIRCLE_H
#include <windows.h>
#include <graphics.h>
static const double PI = 3.1415926;
class CCircle
{
public:
int r;
int x;
int y;
CCircle();
CCircle(int _r);
CCircle(int _x, int _y, int _r);
void circleLength();
void circleArea();
CCircle operator++(int notused);
void show(int _r);
};
#endif
Лістинг реалізації класу Коло «Circle.cpp»:
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <graphics.h>
#include <string.h>
#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include "Circle.h"
CCircle::CCircle()
{
x = y = 100;
r = 80;
}
CCircle::CCircle(int _r)
{
x = 100;
y = 100;
r = _r;
}
CCircle::CCircle(int _x, int _y, int _r)
{
x = _x;
y = _y;
r = _r;
}
void CCircle::circleLength()
{
double pi = 3.14;
double circle_length = 2 * PI * r;
std::cout << " Радіус кола: " << r << "\n";
std::cout << " Довжина кола рівна: " << circle_length << "\n";
}
void CCircle::circleArea()
{
double pi = 3.14;
double circle_area = pi * (r * r);
std::cout << " Площа кола рівна: " << circle_area << "\n";
}
CCircle CCircle::operator++(int notused)
{
CCircle tmp = *this;
r += 1;
return tmp;
}
void CCircle::show(int _r)
{
system("cls"); /* Очистка екрану */
setcolor(4);
circle(x, y, _r);
floodfill(x,y,4);
setcolor(8);
char chars[30];
sprintf(chars,"%s%d","Коло з радіусом: ",_r);
line(x, y, x+_r, y-20);
line(x+_r, y-20, x+_r+170, y-20);
outtextxy(x + _r + 5, y-20-20, chars);
system("pause");
closegraph();
}
Лістинг класу Кільце «Ring.h»:
#ifndef RING_H
#define RING_H
class Ring : public CCircle
{
public:
int iR;
Ring();
void ringArea();
};
#endif
Лістинг реалізації класу Кільце «Ring.cpp»:
#include <iostream>
#include <conio.h>
#include "Circle.h"
#include "Ring.h"
Ring::Ring()
{
iR = 0;
}
void Ring::ringArea()
{
double pi = 3.14;
double ring_area = pi * (r * r - iR * iR);
std::cout << Площа кільця рівна: " << ring_area << "\n";
}
