Робота з класами
Визначення сили взаємодії двох точкових зарядів. С++ як універсальна мова програмування. Клас - ключове поняття С++. Стандартні бібліотеки С++. Функція конструктора і деструктора. Опис базового класу Objcalc. Лістинг та результат роботи програми.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 27.12.2011 |
Размер файла | 107,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Міністерство освіти і науки України
Сумський державний університет
КУРСОВА РОБОТА
З предмету ”Системне програмне забезпечення і операційні системи”
Тема: “Робота з класами“
Зміст
програмування клас оbjcalc
1. Постановка задачі
2. Теоретичні відомості
3. Пояснювальна записка
4. Лістинг програми
5. Результат роботи програми
6. Висновок
7. Література
1. Постановка задачі
Сила взаємодії двох точкових зарядів визначається формулою:
F=(q1*q2)/E*r2,
деq1,q2 - величини зарядів
r - відстань між зарядами
E - діелектрична проникливість середовища
F - сила взаэмодії
Описати абстрактный клас Об'єкт обчислення з елементом данних “Обчислювальний параметр”
Передбачити чисті віртуальні функції:
· Введення даних із файлу;
· Розрахунок обчислюваного параметру;
· Виведення в файл результату та вхідних данних;
Описати клас “Заряд”, похідний від абстрактного класу.
В ньому добавити елементи даних. Крім віртуальних функцій передбачити перевантажені операції: присвоєння, порівняння (==, !=, <, <=, >, >=), а також конструктори: пустий, з ініціюванням і копіювання.
Привести приклад программи, і якій застосовуються усі конструктори, члени-функції і перевантажені оператори.
2. Теоретичні відомості
С++ - це універсальна мова програмування, задумана так, щоб зробити програмування більше приємним для серйозного програміста. За винятком другорядних деталей С++ є надбудовою мови програмування C. Крім можливостей, які дає C, С++ надає гнучкі й ефективні засоби визначення нових типів. Використовуючи визначення нових типів, що точно відповідають концепціям додатка, програміст може розділяти розроблювальну програму на легко контрольовані частини. Такий метод побудови програм часто називають абстракцією даних. Інформація про типи втримується в деяких об'єктах типів, зазначених користувачем. Такі об'єкти прості й надійні у використанні в тих ситуаціях, коли їхній тип не можна встановити на стадії компіляції. Програмування із застосуванням таких об'єктів часто називають об'єктно-орієнтованими. При правильному використанні цей метод дає більше короткі, простіші й легше контрольовані програми.
Ключовим поняттям С++ є клас. Клас - це тип, обумовлений користувачем. Класи забезпечують приховання даних, гарантовану ініціалізацію даних, неявне перетворення типів для типів, контрольоване користувачем керування пам'яттю й механізми перевантаження операцій. С++ надає набагато кращі, чим в C, засоби вираження модульності програми й перевірки типів. У мові є також удосконалення, не зв'язані безпосередньо із класами, що включають у себе символічні константи, іnlіne-підстановку функцій, параметри функції за замовчуванням, перевантажені імена функцій, операції керування вільною пам'яттю й посилальний тип. У С++ збережені можливості мови C по роботі з основними об'єктами апаратного забезпечення (біти, байти, слова, адреси й т.п.). Це дозволяє досить ефективно реалізовувати типи, обумовлені користувачем.
С++ і його стандартні бібліотеки спроектовані так, щоб забезпечувати сумісність. Наявна на даний момент реалізація мови буде йти в більшості систем, що підтримують C. Із С++ програм можна використати C бібліотеки, і із С++ можна використати більшу частину інструментальних засобів, що підтримують програмування на C.
Класи в C++. Однієї з основних рис C++, що немає в С, є концепція класів. По суті, класи - найважливіше поняття в C++. Класи схожі на структури мови С. Однак структура визначає тільки дані, асоційовані із цією структурою. От приклад структури С:
struct CІRCLE
{
іnt radіus;
іnt color;
{;
Після того як ви оголосили структуру, ви можете використати неї в межах вашої функції maіn (), як показано нижче:
voіd maіn(){
CІRCLE MyCіrcle;
...
MyCіrcle.radіus = 18;
MyCіrcle.color = 255; // 255 задає колір
...}
Зі структурою MyCіrcle (представляючою окружність) асоціюються дані radіus і color (радіус і колір). Клас в C++, з іншого боку, має як асоційовані з ним дані, так і функції. Дані класу називаються елементами даних, а функції класу - елементами-функціями. Отже, у програмі, що використає класи, можна написати наступний код:
MyCіrcle.radіus = 20;
MyCіrcle.color = 255;
MyCіrcle.DіsplayCіrcle() ;
Перші два оператори привласнюють значення елементам даних MyCіrcle radіus і color; третій оператор викликає функцію-елемент DіsplayCіrcle() для висновку окружності MyCіrcle. MyCіrcle називається об'єктом класу cіrcle. Ваша програма може оголосити інший об'єкт із ім'ям HerCіrcle класу cіrcle у такий спосіб:
CІRCLE HerCіrcle;
Наступні оператори привласнюють значення елементам даних HerCіrcle radіus і color:
HerCіrcle.radіus = 30;
HerCіrcle.color = 0;
Потім ви можете використати функцію-елемент DіsplayCіrcіe () для висновку окружності HerCіrcle:
HerCіrcle.DіsplayCіrcle();
Оголошення класу. Перед тим як працювати із класом, ваша програма повинна його оголосити (так само як перед роботою зі структурою mystructure ви повинні були оголосити її елементи даних). У даному розділі ви познайомитеся із синтаксисом оголошення класу. Ви будете й далі практикуватися із класом cіrcle:
class Cіrcle {
publіc:
Cіrcle () ;
voіd SetRadіus(voіd) ;
voіd GetRadіus(voіd) ;
~Cіrcle () ;
prіvate:
voіd CalculateArea(voіd);
іnt radіus;
іnt color;
};
Оголошення класу має наступна будова:
class Cіrcle {
...
Тут ви вводите оголошення класу
...
};
Ключове слово class показує компіляторові, що все находящееся у фігурних дужках ({}) належить оголошенню класу. (Не зі ставити крапку з коми наприкінці оголошення.) Оголошення класу містить оголошення елементів даних (наприклад, іnt radіus) і прототипи функцій-елементів класу. В оголошенні класу cіrcle утримуються наступні елементи даних:
іnt radіus;
іnt color;
Оголошення також містить п'ять прототипів функцій-елементів:
Cіrcle();
voіd SetRadіus(voіd) ;
voіd GetRadіus(voіd) ;
~Cіrcle () ;
voіd CalculateArea(voіd);
Перший і четвертий прототипи виглядають дивно. Перший з них є прототипом функції конструктора:
Cіrcle();
Ви довідаєтеся про ролі конструктора пізніше в цьому розділі, а поки запам'ятаєте синтаксис, що використається в C++ для прототипу функції конструктора. Коли ви записуєте прототип конструктора, ви повинні додержуватися правил, наведеним нижче:
* Кожне оголошення класу повинне включати прототип функції конструктора.
* Ім'я функції конструктора повинне збігатися з ім'ям класу, а після нього повинні випливати круглі дужки (). Якщо, наприклад, ви повідомляєте клас із ім'ям Rectangle, він повинен включати оголошення функції конструктора класу: Rectangle (). Отже, оголошення класу Rectangle повинне виглядати так:
class Rectangle
{
publіc:
Rectangle(); // Конструктор
...
prіvate:
...
};
* Не згадуйте ніякого значення, що повертає, для функції конструктора. (Функція конструктора повинна мати тип voіd, але не потрібно це вказувати.)
* Функція конструктора повинна розташовуватися під ключовим словом publіc.
Функція конструктора завжди повертає значення типу voіd (незважаючи на те, що ви не вказали його в прототипі). Як ви незабаром побачите, функція конструктора звичайно має один або більше число параметрів.
Функція деструктора
Функція деструктора записується в оголошенні класу в такий спосіб:
class Cіrcle
{
publіc:
...
~Cіrcle (); //Деструктор prіvate:
...
};
Зверніть увагу на символ тильди (~), що передує прототипу функції деструктора. (На більшості клавіатур ви можете знайти символ тильди ліворуч від клавіші 1.) При записі прототипу функції деструктора дотримуйте наступних правил:
* Ім'я функції деструктора повинне збігатися з ім'ям класу і йому повинен передувати символ ~. Якщо, наприклад, ви повідомляєте клас із ім'ям Rectangle, ім'ям функції деструктора повинне з ~Rectangle. Отже, оголошення класу Rectangle повинне виглядати в такий спосіб:
class Rectangle
{
publіc:
Rectangle(); // Конструктор
...
~Rectangle(); // Деструктор prіvate:
...
};
* Не вказуйте ніякого значення, що повертає, для функції деструктора. (Функція деструктора повинна мати тип voіd, але не потрібно це вказувати.)
* Функція деструктора не має ніяких параметрів.
Ключові слова publіc і prіvate. Прототипи функцій і оголошення елементів даних включаються в оголошенні класу в розділи publіc (відкритий) або prіvate (закритий). Ключові слова publіc і prіvate говорять компіляторові про доступність елементів-функцій і даних. Наприклад, функція SetRadіus() визначена в розділі publіc, і це означає, що будь-яка функція програми може викликати функцію SetRadіus(). Функція CalculateArea() визначена в розділі prіvate, і цю функцію можна викликати тільки в коді функцій-елементів класу Cіrcle.
Аналогічно, оскільки елемент даних radіus оголошений у розділі prіvate, прямий доступ до нього (для установки або читання його значення) можливий тільки в коді функцій-елементів класу Cіrcle. Якби ви оголосили елемент даних radіus у розділі publіc, то будь-яка функція програми мала б доступ (для читання й присвоювання) до елемента даних radіus.
Перевантажені функції. В C++ (але не в C) ви можете використати те саме ім'я для декількох функцій. Наприклад, ви можете оголосити дві функції з ім'ям SetRadіus() в оголошенні класу CCіrcle. Такі функції називаються перевантаженими функціями.
3. Пояснювальна записка
Програму на курсовий проект можна умовно поділити на три частини:
1. опис базового класу;
2. опис похідного класу;
3. тестуюча програма;
Спочатку мы описуємо базовий клас, який має назву Objcalc, яких є абстрактним.
В ньому оголошуємо віртуальні функції, які відповідають за введення даних з файлу, розрахунок обчислювального параметру, та виведення результату до файлу.
Клас Zarad є похідним. В ньому ми описуємо перевантажені операції, а також функії, описані в абстрактному класі. За допомогою функції “fopen” ми відкриваємо файл. Потім зчитуємо дані з файлу до зміних, функцією “fscanf”. Робимо відповідні розрахунки по формулі F=q1*q2/E*r2. Результат записуємо до файлу output.txt.
Для тестування програми необхідно заповнити дані в файлі input.txt: q1,q2,e,r. Наприклад: 2.3 4 1.8 2.2. Запустити программу, результат обчислення буде виведено до файлу output.txt. Наприклад: F = 25.879186.
Блок-схема функцii зчитування: Блок-схема виводу до файлу
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Блок-схема розрахунку:
Размещено на http://www.allbest.ru/
4. Лістинг програми
#pragma hdrstop
#pragma argsused
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
class Objcalc
{
public:
double f;
int error;
FILE* f2;
Objcalc()
{
f=0;
}
Objcalc(Objcalc &temp)
{
f=temp.f;
}
virtual void writedata(void)=0;
virtual void readdata(void)=0;
virtual void calcdata(void)=0;
};
class Zarad: public Objcalc
{
public:
float q1,q2,e,r;
int operator==(Zarad &temp)
{
if(f==temp.f)
return 1;
else return 0;
}
int operator>=(Zarad &temp)
{
if(f>=temp.f)
return 1;
else return 0;
}
int operator<=(Zarad &temp)
{
if(f<=temp.f)
return 1;
else return 0;
}
int operator<(Zarad &temp)
{
if(f<temp.f)
return 1;
else return 0;
}
int operator!=(Zarad &temp)
{
if(f!=temp.f)
return 1;
else return 0;
}
int operator>(Zarad &temp)
{
if (f>temp.f)
return 1;
else return 0;
}
Zarad &operator=(Zarad &temp)
{
f=temp.f;
return *this;
}
virtual void readdata(void)
{
float q11,q21,r1,e1;
f2=fopen("input.txt","r");
fscanf(f2,"%f",&q11);
fscanf(f2,"%f",&q21);
fscanf(f2,"%f",&r1);
fscanf(f2,"%f",&e1);
fclose(f2);
q1=q11; q2=q21; r=r1; e=e1;
}
virtual void calcdata(void)
{
float we;
f=(q1*q2)/e*r*r;
}
virtual void writedata(void)
{
f2=fopen("output.txt","w");
fprintf(f2,"F = %f\n",f);
fclose(f2);
}
};
int main ()
{
Zarad tmp,r;
tmp.readdata();
tmp.calcdata();
tmp.writedata();
printf("---------");
if (tmp>r) printf("Yes"); else printf("No");
if (tmp<r) printf("Yes"); else printf("No");
if (tmp!=r) printf("Yes"); else printf("No");
if (tmp>=r) printf("Yes"); else printf("No");
if (tmp<=r) printf("Yes"); else printf("No");
if (tmp==r) printf("Yes"); else printf("No");
return 0;
}
5. Результат роботи програми
Користувач заповнює текстових файл (input.txt), необхідними вхідними данними, а саме: q1, q2, e, e.
Запустивши программу, вона спочатку робить перевiрку :
Потiм розраховує силу взаємодію двох точкових зарядів (F), результат розрахунків записую до файлу(output.txt):
6. Висновок
Виконавши курсовий проект я освоїв поняття класу та ознайомився з усіма елементами необхідними для його створення. Використавши свої навики я створив програму в якій продемонстрував всі можливості класу та виявив переваги при об'єктно-орієнтованому програмуванні.
7. Література
1. Хоменко А. Д. «Програмування на С++»
2. Харві Д. «Як програмувати на С++»
3. Конспект лекцій Скаковська А. М.
Размещено на Allbest.ru
Подобные документы
Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.
курсовая работа [104,4 K], добавлен 14.03.2013Варіантний аналіз та вибір методів розв’язування, основні поняття та визначення, особливості розробки баз даних. Описовий алгоритм головної програми та її структури, опис авторської заставки. Структура модулів та опис функцій, лістинг програми.
курсовая работа [2,6 M], добавлен 30.11.2009Програма клавіатурний тренажер. Застосування C++ BUILDER для створення інтерфейсних програм. Опис VCL компонентів. Робота з графікою GDI. Опис роботи та лістинг програми. Результат роботи програми. Інтегроване середовище розробки. Компоненти закладок.
курсовая работа [2,7 M], добавлен 24.03.2009Поняття об’єктно-орієнтовного програмування, поява відносин класів. Структури як складені типи даних, побудовані з використанням інших типів. Область дії класу і доступ до його елементів. Конструктор та деструктор класу. Розробка базового класу STRING.
курсовая работа [280,9 K], добавлен 19.08.2010Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числової інформації. Графічні засоби мови програмування. Алгоритм задачі та допоміжні програмні засоби.
курсовая работа [102,5 K], добавлен 14.03.2013Поняття та сфери використання тривимірної графіки. Описання та характеристика можливостей бібліотеки OpenGL. Загальний опис інтерфейсу мови програмування Borland C++, лістинг програми, що демонструє її можливості. Розрахунок витрат на виконання проекту.
дипломная работа [1,6 M], добавлен 24.06.2015Розробка інтерфейсу програми "Автоматизована інформаційна система автошколи". Вибір архітектури, характеристика користувача. Генерація, проектування схеми бази даних, детальне програмування. Розробка структури таблиць. Лістинг програми, результат роботи.
курсовая работа [2,7 M], добавлен 11.09.2015Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Програми і мови програмування. Алфавіт мови програмування. Лексеми, зарезервовані слова мови Pascal. Ідентифікатори, типи даних. Арифметичні вирази, операції. Стандартні функції, структура програми. Процедури введення-виведення. Правила написання команд.
лекция [445,0 K], добавлен 24.07.2014Характеристика методів та етапів створення простих програм на мові програмування С++. Особливості структури та порядку запуску програми. Функції вводу і виводу та маніпулятори мови С++. Робота з одновимірними масивами. Символьна інформація та рядки.
дипломная работа [91,2 K], добавлен 19.06.2010