Розробка програми з принципами об’єктно-орієнтованого програмування

Швидкість витікання ідеального газу із посудини під тиском. Молекулярна маса газу. Відхилення теплоємностей при постійному тиску. Застосування конструкторів у програмі. Призначення кожної з функцій та кожного з ідентифікаторів. Вхідні та вихідні дані.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.