Розробка програми з принципами об’єктно-орієнтованого програмування
Швидкість витікання ідеального газу із посудини під тиском. Молекулярна маса газу. Відхилення теплоємностей при постійному тиску. Застосування конструкторів у програмі. Призначення кожної з функцій та кожного з ідентифікаторів. Вхідні та вихідні дані.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 29.11.2011 |
Размер файла | 80,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Міністерство освіти і науки України
Сумський державний університет
Кафедра інформатики
Курсова робота
з дисципліни
«Системне програмування»
Варіант № 3
Виконала:
студентка групи ІН-82
Данечкіна Яна
Перевірила:
Скаковська А. М.
Суми
2010
Зміст
- Постановка задачі
- Пояснювальна записка
- Опис послідовності дій
- Пояснення призначення кожної з функцій
- Пояснення призначення кожного з ідентифікаторів
- Код програми
- Результати роботи програми
- Література
- Постановка задачі
- Швидкість витікання ідеального газу із посудини під тиском обчислюється за формулою:
- ,
- де R - універсальна газова константа, M - молекулярна маса газу, T - температура в посудині, P0 - тиск газу в посудині, P - зовнішній тиск.
- ,
- де - відхилення теплоємностей при постійному тиску і постійному об'ємі .
- Описати абстрактний клас «Об'кт_обчислення» з елементом даних «Обчислювальний_параметр». Передбачити чисті віртуальні функції:
- 1. ведення даних;
- 2. розрахунок обчислюваного параметру;
- 3. виведення результату і даних.
- Описати клас «Ідеальний_газ», похідний від абстрактного класу. У ньому додати лементи R, T, Kg, M, P, P0.
- Крім віртуальних функцій передбачити перевантажені операції присвоєння, порівняння (= =, ! =, <, < =, >, > =), а також конструктори: пустий, з ініціалізацією і копіювання.
- Привести приклад програми, в якій застосовуються усі конструктори, члени-функції і перевантажені оператори.
- При введенні даних слід мати на увазі: , , . Порядок значень інших параметрів: , , .
- Дані читати з файлу, а результат розрахунку вивести на екран.
Пояснювальна записка
Теоретичний огляд
Клас -- різновид абстрактного типу в об'єктно-орієнтованому програмуванні (ООП), що характеризується способом своєї побудови. Суть відмінності від інших абстрактних типів даних полягає у тому, що при заданні типу даних клас визначає одночасно і інтерфейс, і реалізацію для всіх своїх екземплярів, а виклик метода - конструктора є обов'язковим.
Абстрактний клас - це базовий клас (шаблон), котрий не передбачає створення екземплярів. Абстрактний клас може мати або не мати абстрактні методи та властивості. Абстрактні методи не реалізуються для класу, в якому вони описані, але повинні бути описані для його не абстрактних нащадків. Абстрактні класи є найбільш загальними абстракціями.
Конструктор -- спеціальний блок інструкцій, що викликаються при створенні об'єкту, при чому при його описанні (знаходяться у стеку чи статичній прам'яті ) чи динамічно (знаходяться в купи при використанні ключового слова new).
Конструктор схожий зі звичайним методом, але і має ряд суттєвих відмінностей. Він не має явним чином визначеного типу даних, що повертаються, не унаслідується і зазвичай має різні правила для модифікаторів, що розглядаються. Конструктори часто виділяють однойменністю з класом, в якому об'являються. Їх задача - ініціалізувати члени об'єкти і визначити інваріанти класу. Об'єкти, що не змінюються, теж повинні бути проініціалізовані конструктором. В С++ конструктор може бути перевантаженим.
Конструктор за замовчуванням - конструктор, що не приймає аргументів.
Конструктор копіювання - конструктор, що приймає в якості аргументу об'єкт, того ж класу, або посилання на нього.
Оператор присвоєння - оператор, що розміщує значення виразу джерела в змінну - значення. У своїх програмі я перевантажив оператор присвоєння з метою присвоєння одному екземпляру класу значень іншого екземпляру класу.
Чиста віртуальна функція - це функція, яка нічого не виконує і не доступна для виклику. Її прототип є шаблоном для функцій, що заміщають, у похідних класах.
Опис послідовності дій
Спочатку я створила абстрактний клас Object_Of_Computing та визначила в ньому поле techParameter і чисті віртуальні функції virtual void input()=0, virtual void calculation()=0, virtual void output()=0. Далі я створила похідний клас від Object_Of_Computing - клас IdealGas, у якому визначила поля R, T, Kg, M, P, P0, конструктори - пустий, з ініціалізацією та копіювання, перевантажені операції = =, ! =, <, < =, >, > = та операції лівого і правого зсувів, описала функції, прототипи яких містяться у абстрактному класі, реалізувала головну функцію void main(), у якій по черзі перевірила працездатність кожного з елементів данних, конструктори та методи.
Пояснення призначення кожної з функцій
Функція |
Призначення |
|
virtual void input() |
віртуальна функція, що призначена для зчитування даних з файлу |
|
virtual void output() |
віртуальна функція, що призначена для виведення даних на екран |
|
virtual void calculation() |
віртуальна функція, що призначена для розрахунку обчислювального параметру (швидкості витікання ідеального газу із посудини під тиском) |
|
void clrscr(); |
стандартна функція бібліотеки <conio.h>, призначена для очищення екрану |
|
void getch(); |
стандартна функція бібліотеки <conio.h>, призначена для затримки екрану |
|
double sqrt(число) |
стандартна функція бібліотеки <math.h>, призначена для обчислення квадратного кореня числа |
|
double pow(double x, double y) |
стандартна функція бібліотеки <math.h>, призначена для піднесення числа х до степеня у. |
|
Оператор |
Призначення |
|
friend void operator = =(IdealGas &a, IdealGas &b)friend void operator!=(IdealGas &a, IdealGas &b)friend void operator<(IdealGas &a, IdealGas &b)friend void operator<=(IdealGas &a, IdealGas &b)friend void operator>(IdealGas &a, IdealGas &b)friend void operator>=(IdealGas &a, IdealGas &b) |
оператори перевантаження операцій порівняння |
|
friend ifstream &operator>>(ifstream &ifs, IdealGas &ig) |
оператор перевантаження правого зсуву для файлового введення |
|
friend ostream &operator<<(ostream &os, IdealGas &ig) |
оператор перевантаження лівого зсуву для виведення на екран |
|
Конструктор |
Призначення |
|
IdealGas() |
пустий конструктор |
|
IdealGas(float r, float t, float kg, float m, float p, float p0) |
конструктор з ініціалізацією даних |
|
IdealGas(const IdealGas &src) |
конструктор копіювання |
Пояснення призначення кожного з ідентифікаторів
В умові |
У програмі |
|
R, універсальна газова константа |
float R |
|
M, молекулярна маса газу |
float M |
|
T, температура в посудині |
float T |
|
P0 , тиск газу в посудині |
float P0 |
|
P, зовнішній тиск |
float P |
|
Kg |
float Kg |
|
Обчислювальний_параметр |
float techParameter |
Код програми
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
class Object_Of_Computing
{
protected:
float techParameter;
public:
virtual void input()=0;
virtual void calculation()=0;
virtual void output()=0;
};
class IdealGas: public Object_Of_Computing
{
private:
float R, T, Kg, M, P, P0;
public:
friend void operator==(IdealGas &a, IdealGas &b);
friend void operator!=(IdealGas &a, IdealGas &b);
friend void operator<(IdealGas &a, IdealGas &b);
friend void operator<=(IdealGas &a, IdealGas &b);
friend void operator>(IdealGas &a, IdealGas &b);
friend void operator>=(IdealGas &a, IdealGas &b);
friend ifstream &operator>>(ifstream &ifs, IdealGas &ig);
friend ostream &operator<<(ostream &os, IdealGas &ig);
IdealGas(float r, float t, float kg, float m, float p, float p0)
{
R=r;
T=t;
Kg=kg;
M=m;
P=p;
P0=p0;
}
IdealGas()
{
}
IdealGas(const IdealGas &src)
{
R=src.R;
T=src.T;
Kg=src.Kg;
M=src.M;
P=src.P;
P0=src.P0;
}
virtual void input()
{
ifstream ifs("input.txt");
if(!ifs)
{
cout<<"Error: file \"dan.txt\" was not found"<<'\n';
getch();
exit(1);
}
ifs>>R;
ifs>>T;
ifs>>Kg;
ifs>>M;
ifs>>P;
ifs>>P0;
}
virtual void output()
{
cout<<R<<endl;
cout<<T<<endl;
cout<<Kg<<endl;
cout<<M<<endl;
cout<<P<<endl;
cout<<P0<<endl;
cout<<techParameter<<endl;
cout<<"";
}
virtual void calculation()
{
techParameter=sqrt(((2*R*T)/(Kg*M))*(1-pow((P/P0),Kg)));
}
};
void operator==(IdealGas &a, IdealGas &b)
{
cout<<"\n Operator '==':\n";
if(a.techParameter==b.techParameter)
cout<<" 'a' and 'b' are equal.\n";
else
cout<<" 'a' and 'b' are not equal.\n";
}
void operator!=(IdealGas &a, IdealGas &b)
{
cout<<"\n Operator '!=':\n";
if(a.techParameter!=b.techParameter)
cout<<"'a' and 'b' are not equal.\n";
else
cout<<"'a' and 'b' are equal.\n"<<endl;
}
void operator<(IdealGas &a, IdealGas &b)
{
cout<<"\n Operator '<':\n";
if(a.techParameter<b.techParameter)
cout<<"'a' is smaller than 'b'.\n";
else
cout<<"'a' is bigger or equals than 'b'.\n\n";
}
void operator<=(IdealGas &a, IdealGas &b)
{
cout<<"\n Operator '<=':\n";
if(a.techParameter<=b.techParameter)
cout<<"'a'is smaller or equals than 'b'.\n";
else
cout<<"'a'is bigger than 'b'.\n";
}
void operator>(IdealGas &a, IdealGas &b)
{
cout<<"\n Operator '>':\n";
if(a.techParameter>b.techParameter)
cout<<"'a'is bigger than 'b'.\n";
else
cout<<"'a'is smaller or equals than 'b'.\n";
}
void operator>=(IdealGas &a, IdealGas &b)
{
cout<<"\n Oerator '>=':\n";
if(a.techParameter>=b.techParameter)
cout<<"'a' is bigger or equals than 'b'.\n";
else
cout<<"'a' is smaller than 'b'.\n";
}
ifstream &operator>>(ifstream &ifs, IdealGas &ig)
{
ifs>>ig.R;
ifs>>ig.T;
ifs>>ig.Kg;
ifs>>ig.M;
ifs>>ig.P;
ifs>>ig.P0;
return ifs;
}
ostream &operator<<(ostream &os, IdealGas &ig)
{
os<<ig.R<<endl;
os<<ig.T<<endl;
os<<ig.Kg<<endl;
os<<ig.M<<endl;
os<<ig.P<<endl;
os<<ig.P0<<endl;
return os;
}
void main()
{
clrscr();
IdealGas ig1; // працює пустий конструктор
IdealGas ig2(8.31696,600,0.2867,28.96,1,5); // працює конструктор з ініціалізацією
ig1.input(); // працює функція зчитування з файлу
ig1.calculation(); // працює функція розрахунку обчислюваль-
// ного параметру
ig2.calculation();
ig1==ig2; // працюють оператори порівняння
ig1!=ig2;
ig1<ig2;
ig1<=ig2;
ig1>ig2;
ig1>=ig2;
IdealGas ig3(ig1); // працює конструктор копіювання
cout<<"Knstrurtor of copy\n"<<ig3<<endl;
cout<<"Output the information"<<endl;
ig1.output(); // працює функція виведення результатів на
// екран
getch();
}
Вхідні та вихідні дані
Вхідними даними є файл, у якому записані цілі або дробові числа, які характеризують параметри швидкості витікання ідеального газу з посудини під тиском. Також вхідними даними є ті ж параметри швидкості, які передаються як параметри у конструктор з ініціалізацією.
Вихідними даними є дані на екрані, ними є відомі параметри швидкості витікання ідеального газу та обчислена в ході виконання програми сама швидкість витікання ідеального газу.
Програма містить 1 файл - input.txt, це файл, у якому міститься інформація про відомі параметри швидкості витікання ідеального газу з посудини під тиском. Всі дані в ньому записані з нового рядка.
газ витікання програма функція
Результати роботи програми
input.txt
8.31696
400
0.2867
28.96
1
3
Вихідні дані:
Висновок
В результаті виконання курсової роботи я вдосконалила своє вміння розробки програм з принципами ООП, вдосконалила вміння використовувати віртуальні функції, перевантажені оператори, роботу з файлами та потоками.
Мною була створена консольна програма для обчислення швидкості витікання ідеального газу з посудини під тиском за заданою формулою і заданими параметрами та порівняння таких швидкостей у двох об'єктів класу IdealGas
Література
1. Конспект лекцій з дисципліни «Алгоритмічні мови».
2. Б. Страуструп - Язык программирования С++ . Второе дополненное издание.
3. http://ru.wikipedia.org/wiki/C%2B%2B - інформація по С++.
Размещено на Allbest.ru
Подобные документы
Порядок формування та описання масиву з трьох елементів, складання графіку зміни швидкості та витікання ідеального газу із ємкості під тиском. Порядок складання таблиці символічних імен, блок-схеми даного процесу. Текст розробленої програми мовою С.
курсовая работа [379,8 K], добавлен 15.08.2010Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.
курсовая работа [211,3 K], добавлен 19.08.2010Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.
курсовая работа [104,4 K], добавлен 14.03.2013Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.
курсовая работа [98,0 K], добавлен 06.05.2014Аналіз сучасного стану технологій програмування. Засоби реалізації об'єктів в мові C++, структура даних і функцій. Розробка програмного продукту - гри "трикутники", з використовуванням моделей, класів і функцій об’єктно-орієнтованого програмування.
курсовая работа [117,8 K], добавлен 14.03.2013Розробка програми імітації схеми життя лісового біому. Алгоритм пересування по головному полю. Основні глобальні функції програми. Динамічна ідентифікація типу даних. Вирішення завдань в області об’єктно-орієнтованого програмування засобами C++.
курсовая работа [423,1 K], добавлен 26.11.2014Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.
отчет по практике [2,0 M], добавлен 19.03.2015Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.
курсовая работа [41,0 K], добавлен 17.02.2009