Розробка абстрактного класу pruzhyna в об’єктно-орієнтованому програмуванні

Поняття абстрактного класу в об’єктно-орієнтованому програмуванні. Описання класу pruzhyna, створення консольної програми для обчислення коефіцієнта передачі пружини стискання з циліндричної проволоки круглого перетину за заданою формулою і параметрами.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 25.11.2011
Размер файла 100,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Сумський державний університет

Кафедра інформатики

Курсова робота

з дисципліни

Системне програмування

Варіант № 14

Виконав: студент групи ІН-82

Родін Іван

Перевірила: Скаковська А.М.

Суми 2010

Зміст

  • Постановка задачі
  • Пояснювальна записка
    • Опис послідовності дій
    • Пояснення призначення кожної з функцій
    • Пояснення призначення кожного з ідентифікаторів
  • Код програми
  • Результати роботи програми
  • Література

Постановка задачі

Коефіцієнт передачі пружини стискання з циліндричної проволоки круглого перетину обчислюється за формулою:

,

де D - діаметр пружини, d - діаметр проволоки, n - кількість робочих витків пружини, G - модуль зсуву.

Описати абстрактний клас «Об'єкт_обчислення» з елементом даних «Обчислювальний_параметр». Передбачити чисті віртуальні функції:

1. прочитання даних з файлу;

2. розрахунок обчислюваного параметру;

3. виведення результату і даних у файл.

Описати клас «Пружина», похідний від абстрактного класу. У ньому додати лементи D, d, n, G.

Крім віртуальних функцій передбачити перевантажені операції присвоєння, порівняння (= =, ! =, <, < =, >, > =), а також конструктори: пустий, з ініціалізацією і копіювання.

Привести приклад програми, в якій застосовуються усі конструктори, члени-функції і перевантажені оператори.

Порядок значень параметрів: модуль зсуву для сталі 8100 кг/мм2 - константа. Значення D, d, n задати самостійно.

Пояснювальна записка

Теоретичний огляд

Клас -- різновид абстрактного типу в об'єктно-орієнтованому програмуванні (ООП), що характеризується способом своєї побудови. Суть відмінності від інших абстрактних типів даних полягає у тому, що при заданні типу даних клас визначає одночасно і інтерфейс, і реалізацію для всіх своїх екземплярів, а виклик метода - конструктора є обов'язковим.

Абстрактний клас - це базовий клас (шаблон), котрий не передбачає створення екземплярів. Абстрактний клас може мати або не мати абстрактні методи та властивості. Абстрактні методи не реалізуються для класу, в якому вони описані, але повинні бути описані для його не абстрактних нащадків. Абстрактні класи є найбільш загальними абстракціями.

Конструктор -- спеціальний блок інструкцій, що викликаються при створенні об'єкту, при чому при його описанні (знаходяться у стеку чи статичній пам'яті ) чи динамічно (знаходяться в купи при використанні ключового слова new).

Конструктор схожий зі звичайним методом, але і має ряд суттєвих відмінностей. Він не має явним чином визначеного типу даних, що повертаються, не унаслідується і зазвичай має різні правила для модифікаторів, що розглядаються. Конструктори часто виділяють однойменністю з класом, в якому об'являються. Їх задача - ініціалізувати члени об'єкти і визначити інваріанти класу. Об'єкти, що не змінюються, теж повинні бути проініціалізовані конструктором. В С++ конструктор може бути перевантаженим.

Конструктор за замовчуванням - конструктор, що не приймає аргументів.

Конструктор копіювання - конструктор, що приймає в якості аргументу об'єкт, того ж класу, або посилання на нього.

Оператор присвоєння - оператор, що розміщує значення виразу джерела в змінну - значення. У своїх програмі я перевантажив оператор присвоєння з метою присвоєння одному екземпляру класу значень іншого екземпляру класу.

Чиста віртуальна функція - це функція, яка нічого не виконує і не доступна для виклику. Її прототип є шаблоном для функцій, що заміщають, у похідних класах.

Опис послідовності дій

Спочатку я створив абстрактний клас оbject та визначив в ньому поле К і чисті віртуальні функції virtual void fileread()=0, virtual void calcu()=0, virtual void filesave ()=0. Далі я створив похідний клас від оbject - клас pruzhyna, у якому визначив поля D, d, n, G, конструктори - пустий, з ініціалізацією та копіювання, перевантажені операції = =, ! =, <, < =, >, > = та операції лівого і правого зсувів, описав функції, прототипи яких містяться у абстрактному класі, реалізував головну функцію void main(), у якій по черзі перевірив працездатність кожного з елементів даних, конструктори та методи.

Пояснення призначення кожної з функцій

Функція

Призначення

virtual void fileread()

віртуальна функція, що призначена для зчитування даних з файлу

virtual void filesave ()

віртуальна функція, що призначена для виведення даних на екран

virtual void calc()

віртуальна функція, що призначена для розрахунку обчислювального параметру (коефіцієнта передачі пружини стискання з циліндричної проволоки круглого перетину)

void clrscr();

стандартна функція бібліотеки <conio.h>, призначена для очищення екрану

void getch();

стандартна функція бібліотеки <conio.h>, призначена для затримки екрану

double pow(double x, double y)

стандартна функція бібліотеки <math.h>, призначена для піднесення числа х до степеня у.

Оператор

Призначення

pruzhyna & operator = (pruzhyna&src)

pruzhyna & operator = (pruzhyna&src)

pruzhyna & operator != (pruzhyna&src)

pruzhyna & operator < (pruzhyna&src)

pruzhyna & operator <= (pruzhyna&src)

pruzhyna & operator > (pruzhyna&src)

pruzhyna & operator >= (pruzhyna&src)

оператори перевантаження операцій

friend ifstream &operator>>(ifstream &ifs, pruzhyna &x)

friend ostream &operator<<(ostream &os, pruzhyna &x)

оператори перевантаження правого та лівого зсуву для файлового введення/виведення

Конструктор

Призначення

pruzhyna()

пустий конструктор

pruzhyna(double _D, double _d, double _n, double _G):D(_D),d(_d),n(_n),G(_G)

конструктор з ініціалізацією даних

pruzhyna(const pruzhyna & src)

конструктор копіювання

Пояснення призначення кожного з ідентифікаторів

В умові

У програмі

D, діаметр пружини

float D

d, діаметр проволоки

float d

n, кількість робочих витків пружини

float n

G, модуль зсуву

float G

Обчислювальний_параметр

float K

Код програми

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

#include<fstream.h>

#include<conio.h>

#include<iostream.h>

class object

{

protected:

float K;

public:

virtual void fileread()=0;

virtual void calc()=0;

virtual void filesave()=0;

};

class pruzhyna: public object

{

private:

float D;

float d;

float n;

float G;

public:

friend ostream &operator<<(ostream &os, pruzhyna &x);

friend ifstream &operator>>(ifstream &ifs, pruzhyna &x);

friend ofstream &operator<<(ofstream &ofs, pruzhyna &x);

//konstruktor s inicial. danux

pruzhyna(double _D, double _d, double _n, double _G):D(_D),d(_d),n(_n),G(_G)

{

}

//konstruktor kopirovaniya

pruzhyna(const pruzhyna & src)

{

D=src.D;

d=src.d;

n=src.n;

G=src.G;

}

//pustoy konstruktor

pruzhyna()

{

}

//vvod danykh s faylu

void fileread()

{

ifstream in("dan.txt");

in>>D>>d>>n>>G;

cout<<"dani z fayla \"dan.txt\":\n D="<<D<<" d="<<d<<" n="<<n<<" G="<<G;

in.close();

}

//raschet danux

void calc()

{

K=(8*pow(D,3)*n)/(G*pow(d,4));

cout<<"K="<<K<<endl;

}

//vivod v fayl rezyltat i vxodyasch. danux

void filesave()

{

ofstream ofs("rez.txt");

ofs<<"D="<<D<<" d="<<d<<" n="<<n<<" G="<<G<<"K="<<K;

cout<<"resultat bil zapisan v fayl rez.txt";

ofs.close();

}

//peregruzka operaciy prusv.

pruzhyna & operator = (pruzhyna&src)

{

D=src.D;

d=src.d;

n=src.n;

G=src.G;

return *this;

}

//peregruzka operaciy sravnenia

pruzhyna & operator == (pruzhyna&src)

{

cout<<"\n operator ==";

if(K==src.K)

cout<<" K1 i K2 ravnu.";

else

cout<<" K1 i K2 ne ravnu.";

return *this;

}

pruzhyna & operator != (pruzhyna&src)

{

cout<<"\n operator !=";

if(K!=src.K)

cout<<"K1 i K2 ne ravnu.";

else

cout<<"K1 i K2 ravnu.";

return *this;

}

pruzhyna & operator < (pruzhyna&src)

{

cout<<"\n operator <";

if(K<src.K)

cout<<"K1 < K2.";

else

cout<<"K1 ne menwe K2.";

return *this;

}

pruzhyna & operator <= (pruzhyna&src)

{

cout<<"\n operator <=";

if(K<=src.K)

cout<<"K1 <= K2.";

else

cout<<"K1 bolshe K2.";

return *this;

}

pruzhyna & operator > (pruzhyna&src)

{

cout<<"\n operator >";

if(K>src.K)

cout<<"K1 > K2.";

else

cout<<"K1 ne bolwe K2.";

return *this;

}

pruzhyna & operator >= (pruzhyna&src)

{

cout<<"\n operator >=";

if(K>=src.K)

cout<<"K1 >= K2.";

else

cout<<"K1 menwe K2.";

return *this;

}

};

ifstream &operator>>(ifstream &ifs, pruzhyna &x)

{

ifs>>x.D;

ifs>>x.d;

ifs>>x.n;

ifs>>x.G;

return ifs;

}

ofstream &operator<<(ofstream &ofs, pruzhyna &x)

{

ofs<<x.D<<endl;

ofs<<x.d<<endl;

ofs<<x.n<<endl;

ofs<<x.G<<endl;

return ofs;

}

ostream &operator<<(ostream &os, pruzhyna &x)

{

os<<x.D<<endl;

os<<x.d<<endl;

os<<x.n<<endl;

os<<x.G<<endl;

return os;

}

void main()

{

clrscr();

pruzhyna p1;

pruzhyna p2(1,2,3,8100);

p1.fileread();

p1.calc();

p2.calc();

p1==p2;

p1!=p2;

p1<p2;

p1<=p2;

p1>p2;

p1>=p2;

pruzhyna p3;

p3=p1;

cout<<"operatsiya prisvoeniya\n"<< p3 <<endl;

pruzhyna p4(p2);

cout<<"konstruktor copirovaniya\n"<< p4 <<endl;

cout<<"vivod informatsii"<<endl;

p1.filesave();

getch();

}

Вхідні та вихідні дані

Вхідними даними є файл, у якому записані цілі або дробові числа, які характеризують параметри коефіцієнта передачі пружини стискання з циліндричної проволоки круглого перетину. Також вхідними даними є ті ж параметри коефіцієнта передачі пружини стискання з циліндричної проволоки круглого перетину, які передаються як параметри у конструктор з ініціалізацією.

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

Програма містить 2 файли - dan.txt - це файл, у якому міститься інформація про відомі параметри коефіцієнта передачі пружини стискання з циліндричної проволоки круглого перетину, і rez.txt, куди заносяться обчислені дані.

програма абстрактний клас pruzhyna

Результати роботи програми

Вхідні дані:

Вихідні дані:

Висновок

В результаті виконання курсової роботи я вдосконалив своє вміння розробки програм з принципами ООП, вдосконалив вміння використовувати віртуальні функції, перевантажені оператори, роботу з файлами та потоками.

Мною була створена консольна програма для обчислення коефіцієнта передачі пружини стискання з циліндричної проволоки круглого перетину за заданою формулою і заданими параметрами та порівняння таких коефіцієнтів передачі пружини стискання з циліндричної проволоки круглого перетину у двох об'єктів класу pruzhyna.

Література

1. Конспект лекцій з дисципліни «Алгоритмічні мови»

2. Б. Страуструп - Язык программирования С++. Второе дополненное издание

3. http://ru.wikipedia.org/wiki/C%2B%2B - інформація по С++

Размещено на Allbest.ru


Подобные документы

  • Поняття об’єктно-орієнтовного програмування, поява відносин класів. Структури як складені типи даних, побудовані з використанням інших типів. Область дії класу і доступ до його елементів. Конструктор та деструктор класу. Розробка базового класу STRING.

    курсовая работа [280,9 K], добавлен 19.08.2010

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.

    курсовая работа [211,3 K], добавлен 19.08.2010

  • Сутність прикладної програми – класу, який містить процедуру main, в якому створюється вікно з кнопками управління. Аплет – пакет класу Java, який виконується різними прикладними програмами. Ініціалізація змінних та встановлення розміру вікна аплету.

    лабораторная работа [11,8 K], добавлен 09.06.2012

  • Поняття та види векторів. Прості математичні операції над ними. Векторний добуток, його геометричні та алгебраїчні властивості. Визначення та реалізація програмного класу багатовимірних векторів. Перевантажені оператори та дружні оператор-функції.

    курсовая работа [110,1 K], добавлен 15.01.2012

  • Характеристика системи обробки даних в програмно-орієнтованому програмуванні. Класифікація та різновиди обчислювальних комплексів. Підходи до реалізації алгоритмів. Класифікація Хендлера. Компонентно-ієрархічний підхід до розробки ПООСІК, його принципи.

    курс лекций [2,1 M], добавлен 25.03.2011

  • Основні аспекти використання стандартних компонентів ООС програмування Delphi для створення звітної документації. Опис компонентів – QReport, PrintDialog та PrintSetupDialog. Приклади створення звітів. Iнше програмне забезпечення для побудови звітів.

    курсовая работа [488,4 K], добавлен 08.12.2008

  • Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.

    курсовая работа [104,4 K], добавлен 14.03.2013

  • Розробка методу-члену класу для створення нового одновимірного масиву з кількості всіх негативних елементів кожного рядка заданого двовимірного динамічного масиву. Особливість виводу змісту масиву на екран. Аналіз перевірки правильності роботи програми.

    лабораторная работа [131,2 K], добавлен 18.11.2021

  • Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.

    отчет по практике [2,0 M], добавлен 19.03.2015

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