Потужність вісьсиметричного розбризкувача
Розробка програми, яка розраховує потужність рідинного вісьсиметричного розбризкувача і демонструє основні аспекти об’єктно-орієнтованого програмування, а саме розробку класів, зв’язків між ними та такі явища як інкапсуляція, поліморфізм та спадкування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 18.12.2011 |
Размер файла | 155,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КУРСОВА РОБОТА
з предмету: «Алгоритмічні мови»
на тему: «Потужність вісьсиметричного розбризкувача»
Зміст
Постановка задачі
Теоретичні відомості
Пояснювальна записка
Код програми
Результати роботи програми
Висновки
Список літератури
Постановка задачі
Потужність, яка витрачається на розбризкування рідини вісьосиметричним розбризкувачем, визначається за формулою
де ? - щільність рідини;
? - кутова швидкість обертання розбризкувача;
Sotv - площа одного отвору;
R - радіус оболонки;
? - коефіцієнт добутку
?s - площа перфорованої поверхні розбризкування, віднесена доодного отвору витікання.
g - прискорення вільного падіння
H - напор рідини.
Описати абстрактний клас „Об'єкт обчислення” з елементом даних „Обчислюваний-параметр”.
Передбачити чисті віртуальні функції:
1) Введення даних із файлу;
2) Розрахунок обчислюваного параметру;
3) Виведення в файл результату та вхідних даних.
Описати клас „Розбризкувач”, похідний від абстрактного класу. В ньому добавити елементи даних: ?,?,Sotv,R,?,?s,g, Н.
Крім віртуальних функцій передбачити перевантажені операції присвоєння, порівняння
(= =, !=, <, <=, >, >=), а також конструктори: пустий, з ініціалізацією і копіювання.
Привести приклад програми, в якій застосовуються ці конструктори, члени-функції і перевантажені оператори.
Порядок значень параметрів:
? =1000 кг/м3 ;
H =0,3-:-0,6;
? = 100 -:- 120 рад/с;
Sotv =1*10-6 -:-1,2*10-6 м2;
R =0,15 -:- 0,25 м2;
? =0,65;
?s =1*10-4 м2;
g =9,81 м/с2;
Теоретичні відомості
C++ -- мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа «Сі з класами». Страуструп перейменував мову у C++ у 1983 р. Базується на мові С. Визначена стандартом ISO/IEC 14882:2003.
Підтримує різні парадигми програмування, поєднує властивості як високорівневих, так і низькорівневих мов. У порівнянні з його попередником - мовою C, - найбільшу увагу приділено підтримці об'єктно-орієнтованого програмування. Назва «C + +» походить від назви мови C, в якому унарний оператор + + позначає інкремент змінної.
C + + додає до C об'єктно-орієнтовані можливості. Він вводить класи, які забезпечують три найважливіші властивості ООП: інкапсуляцію, успадкування і поліморфізм.
Інкапсуляція - одна з трьох основних концепцій об'єктно-орієнтованого програмування і дизайну. Мається на увазі, що об'єкт вміщує не тільки дані, але і правила їх обробки, оформлені в вигляді виконуваних фрагментів. А також те, що доступ до стану об'єкта напряму забороняється, і ззовні можна взаємодіяти з об'єктом тільки через заданий інтерфейс, що дозволяє знизити зв'язність.
Успадкувамння - метод утворення нових класів на основі використання вже існуючих. У C++ при успадкуванні одного класу від іншого успадковується реалізація класу, плюс клас-спадкоємець може додавати свої поля і функції або перевизначити функції базового класу. Множинне успадкування дозволено. Спадкування буває публічним, захищеним і закритим.
Поліморфізм - є здатність екземплярів підкласу грати роль об'єктів батьківського класу, завдяки чому екземпляри підкласу можна використовувати там, де використовуються екземпляри батьківського класу.
Дружні функції - функції які фактично не належать даному класу, але можуть використовувати його приватні змінні та методи.
Віртуальний метод або віртуальна функція - метод об'єкта в об'єктно-орієнтованому програмуванні, різний для базового класу і класу нащадка.
Чиста віртуальна функція - це функція, яка нічого не виконує і не доступна для виклику. Її прототип є шаблоном для функцій, що заміщають її у похідних класах.
Абстрактний клас - це базовий клас (шаблон), котрий не передбачає створення екземплярів. Абстрактний клас може мати або не мати абстрактні методи та властивості. Абстрактні методи не реалізуються для класу, в якому вони описані, але повинні бути описані для його не абстрактних нащадків.
Конструктор класу - спеціальний блок інструкцій, який викликається при створенні об'єкта. Конструктор схожий з методом, але відрізняється тим, що не має явним чином визначеного типу даних, що повертаються, не успадковується.
Пустий конструктор - конструктор, що не приймає аргументів.
Конструктор копіювання - конструктор, що приймає в якості аргументу об'єкт, того ж класу, або посилання на нього.
Перевантаження операторів - один із способів реалізації поліморфізму, що полягає в можливості одночасного існування в одній області видимості декількох різних варіантів застосування оператора, що мають одне і те ж ім'я, але розрізняються типами параметрів, до яких вони застосовуються.
Пояснювальна записка
Код програми знаходиться в файлі vovk.cpp
В файлі описуються два класи Objectdoslid та Sprinkler (наслідує Objectdoslid)
Спочатку підключаються бібліотеки:
#include <iostream.h> - файл заголовків методів класів потоків вводу виводу інформації;
#include <fstream.h> - файл заголовків методів класів потоків для роботи з файлами;
#include <stdlib.h> - файл заголовків методи якого контролюють роботу програми, дозволяють переводити дані в різні типи, та інше.
#include <conio.h> - файл заголовків, який передбачає методи роботи з консоллю.
#include <math.h> - файл заголовків, який містить математичні функції.
Потім оголошується клас «Objectdoslid»:
class Objectdoslid
{
protected:
double obchParameter;
public:
virtual void input()=0;
virtual void calculation()=0;
virtual void output()=0;
};
Мітка protected означає, що дана змінна буде доступною з похідних класів, а мітка public означає, що дані змінні будуть доступні будь-де. В цьому блоці:
1) оголошено змінну obchParameter типу double, яка буде використовуватись для зберігання результатів обчисленнь;
2) оголошено прототипи чистих віртуальних функцій.
Далі описуємо клас Sprinkler похідний від абстрактного класу. В ньому добавлено елементи даних типу double та конструктори (пустий, з ініціалізацією та копіювання), перевантажені оператори =, ==, !=, >=, >, <=, < та конструктори: пустий, з ініціюванням та копіювання, також в ньому перевизначені віртуальні функції абстрактного класу: calculation, output, input;
Функції output, input відповідають за введення/виведення інформації в файл та на екран.
Функція calculation призначена для розрахування формули.
Після визначення класів описуються дружні функції, які об'явлені в класі Sprinkler.
Таблиця символьних ідентифікаторів
В умові |
В програмі |
|
? - щільність рідини; |
Ro |
|
? - кутова швидкість обертання розбризкувача; |
Omg |
|
Sotv - площа одного отвору; |
Fotv |
|
R - радіус оболонки; |
R |
|
? - коефіцієнт добутку |
Mu |
|
?s - площа перфорованої поверхні розбризкування, віднесена доодного отвору витікання. |
DS |
|
g - прискорення вільного падіння |
G |
|
H - напор рідини. |
H |
Код програми
програмування розбризкувач інкапсуляція поліморфізм
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define constG 9.81
class Objectdoslid
{
protected:
double obchParameter;
public:
virtual void input()=0;
virtual void calculation()=0;
virtual void output()=0;
};
class Sprinkler: public Objectdoslid
{
private:
double Ro, H, Omg, Fotv, R, Mu, DS, G;
public:
friend void operator==(Sprinkler &a, Sprinkler &b);
friend void operator!=(Sprinkler &a, Sprinkler &b);
friend void operator<(Sprinkler &a, Sprinkler &b);
friend void operator<=(Sprinkler &a, Sprinkler &b);
friend void operator>(Sprinkler &a, Sprinkler &b);
friend void operator>=(Sprinkler &a, Sprinkler &b);
friend ifstream &operator>>(ifstream &ifs, Sprinkler &Spr);
friend ostream &operator<<(ostream &os, Sprinkler &Spr);
friend ofstream &operator<<(ofstream &ofs, Sprinkler &Srp);
Sprinkler(double ro, double h, double omg, double fotv, double r, double mu, double dS, double g)
{
Ro=ro;
H=h;
Omg=omg;
Fotv=fotv;
R=r;
Mu=mu;
DS=dS;
G=g;
}
Sprinkler()
{
}
Sprinkler(const Sprinkler &src)
{
Ro=src.Ro;
H=src.H;
Omg=src.Omg;
Fotv=src.Fotv;
R=src.R;
Mu=src.Mu;
DS=src.DS;
G=src.G;
}
virtual void input()
{
ifstream ifs("input.txt");
if(!ifs)
{
cout<<"Fail ne znaydeno"<<'\n';
getch();
exit(1);
}
ifs>>Ro;
ifs>>H;
ifs>>Omg;
ifs>>Fotv;
ifs>>R;
ifs>>Mu;
ifs>>DS;
ifs>>G;
}
virtual void output()
{
ofstream ofs("output.txt");
ofs<<Ro<<endl;
ofs<<H<<endl;
ofs<<Omg<<endl;
ofs<<Fotv<<endl;
ofs<<R<<endl;
ofs<<Mu<<endl;
ofs<<DS<<endl;
ofs<<G<<endl;
ofs<<obchParameter<<endl;
cout<<Ro<<endl;
cout<<H<<endl;
cout<<Omg<<endl;
cout<<Fotv<<endl;
cout<<R<<endl;
cout<<Mu<<endl;
cout<<DS<<endl;
cout<<G<<endl;
cout<<obchParameter<<endl;
cout<<"";
}
virtual void calculation()
{
obchParameter=(2/3)*((M_PI*Ro*Omg*Omg*Fotv*Mu*R*R*R)/(G*DS))*pow(Omg*Omg*R*R+2*G*H,3/2);
cout<<obchParameter;
}
};
void operator==(Sprinkler &a, Sprinkler &b)
{
cout<<"\n Operator '==':\n";
if(a.obchParameter==b.obchParameter)
cout<<" 'a' ta 'b' rivni.\n";
else
cout<<" 'a' ta 'b' ne rivni.\n";
}
void operator!=(Sprinkler &a, Sprinkler &b)
{
cout<<"\n Operator '!=':\n";
if(a.obchParameter!=b.obchParameter)
cout<<"'a' ta 'b' ne rivni.\n";
else
cout<<"'a' ta 'b' rivni.\n";
}
void operator<(Sprinkler &a, Sprinkler &b)
{
cout<<"\n Operator '<':\n";
if(a.obchParameter<b.obchParameter)
cout<<"'a' menshe nizh 'b'.\n";
else
cout<<"'a' bilshe, chi rivne 'b'.\n";
}
void operator<=(Sprinkler &a, Sprinkler &b)
{
cout<<"\n Operator '<=':\n";
if(a.obchParameter<=b.obchParameter)
cout<<"'a' menshe, chi rivne 'b'.\n";
else
cout<<"'a' bilshe, nizh 'b'.\n";
}
void operator>(Sprinkler &a, Sprinkler &b)
{
cout<<"\n Operator '>':\n";
if(a.obchParameter>b.obchParameter)
cout<<"'a' bilshe nizh 'b'.\n";
else
cout<<"'a' menshe, chi rivne 'b'.\n";
}
void operator>=(Sprinkler &a, Sprinkler &b)
{
cout<<"\n Oerator '>=':\n";
if(a.obchParameter>=b.obchParameter)
cout<<"'a' bilshe chi rivne 'b'.\n";
else
cout<<"'a' menshe, nizh 'b'.\n"<<endl;
}
ifstream &operator>>(ifstream &ifs, Sprinkler &Spr)
{
ifs>>Spr.Ro;
ifs>>Spr.H;
ifs>>Spr.Omg;
ifs>>Spr.Fotv;
ifs>>Spr.R;
ifs>>Spr.Mu;
ifs>>Spr.DS;
ifs>>Spr.G;
return ifs;
}
ostream &operator<<(ostream &os, Sprinkler &Spr)
{
os<<Spr.Ro<<endl;
os<<Spr.H<<endl;
os<<Spr.Omg<<endl;
os<<Spr.Fotv<<endl;
os<<Spr.R<<endl;
os<<Spr.Mu<<endl;
os<<Spr.DS<<endl;
os<<Spr.G<<endl;
os<<Spr.obchParameter<<endl;
return os;
}
ofstream &operator<<(ofstream &ofs, Sprinkler &Spr)
{
ofs<<Spr.Ro<<endl;
ofs<<Spr.H<<endl;
ofs<<Spr.Omg<<endl;
ofs<<Spr.Fotv<<endl;
ofs<<Spr.R<<endl;
ofs<<Spr.Mu<<endl;
ofs<<Spr.DS<<endl;
ofs<<Spr.G<<endl;
ofs<<Spr.obchParameter<<endl;
}
void main()
{
clrscr();
Sprinkler sp1;
Sprinkler sp2(1000,0.3,100,1*pow(10,-6),0.15,0.65,1*pow(10,-4),constG);
sp1.input();
sp1.calculation();
sp2.calculation();
sp1==sp2;
sp1!=sp2;
sp1<sp2;
sp1<=sp2;
sp1>sp2;
sp1>=sp2;
Sprinkler sp3(sp1);
cout<<"Dani z faily: \n";
cout<<sp1;
cout<<"Dani z programu: \n";
cout<<sp2;
cout<<"Dani stvoreni konstruktorom: \n";
sp3.output();
getch();
}
Результати роботи програми
Спочатку необхідно записати необхідні вхідні дані до файлу «input.txt».
Рис. 1 - файл вхідних даних
Потім запускаємо програму.
Рис. 2 - результати програми
Результат роботи програми записується в файл «out.txt».
Рис. 3 - файл вихідних даних
Висновки
Під час виконання завдання курсової роботи, була розроблена програма, яка розраховує потужність рідинного розбризкувала. Дана програма демонструє основні аспекти об'єктно-орієнтованого програмування, а саме розробка класів, та зв'язків між ними, та такі явища як інкапсуляція, поліморфізм та спадкування.
За період побудови алгоритму роботи програми та її коду, мною були набуті деякі навички використання принципів об'єктно-орієнтованого програмування.
Список літератури
1. Конспект лекцій.
2. Бьерн Страуструп - Программирование. Принципы и практика использования С++, Издательство: Вильямс, Год: 2011, Страниц: 1246.
3. http://ru.wikipedia.org/wiki
- http://ru.wikipedia.org/wiki/Объектно_ориентированное_програмирование
- http://ru.wikipedia.org/wiki/C++
4. http://www.cplusplus.com
Размещено на Allbest.ru
Подобные документы
Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.
курсовая работа [211,3 K], добавлен 19.08.2010Ключові поняття мови об’єктно-орієнтованого програмування C++: інкапсуляція, наслідування, абстракція, поліморфізм. Об’ява класів у мові С++. Графічні засоби. Пошук відстані між точками. Опис класів і об’єктів. Програма графічної задачі. Лістинги файлів.
курсовая работа [144,3 K], добавлен 14.03.2013Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.
курсовая работа [98,0 K], добавлен 06.05.2014Концепції об'єктно-орієнтованого програмування. Конструктори та деструктори. Успадкування класів. Побудова об’єктної моделі. Визначення об'єктів та класів і зв’язків між ними. Реалізація програми в середовищі Visual Studio C++. Інтерфейс програми.
курсовая работа [743,7 K], добавлен 25.01.2016Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.
курсовая работа [104,4 K], добавлен 14.03.2013Клавіатурний тренажер - вид програмних додатків або онлайн-сервісів, призначених для навчання набору на комп'ютерній клавіатурі. Інкапсуляція - приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення.
курсовая работа [1,7 M], добавлен 20.05.2017Розробка програми імітації схеми життя лісового біому. Алгоритм пересування по головному полю. Основні глобальні функції програми. Динамічна ідентифікація типу даних. Вирішення завдань в області об’єктно-орієнтованого програмування засобами C++.
курсовая работа [423,1 K], добавлен 26.11.2014Розробка програми для тренування швидкого десяти пальцевого набору тексту на клавіатурі за допомогою класів, які будуть містити в собі параметри об’єктів та їх методи. Аналіз об'єкту програмування. Основні принципи об'єктно-орієнтованого програмування.
курсовая работа [1,8 M], добавлен 18.05.2017