Автор работы: Пользователь скрыл имя, 22 Ноября 2013 в 17:13, курсовая работа
Одним з головних завдань в навчанні є розвиток творчих і дослідницьких здібностей студентів. На уроках програмування застосування комп'ютерів дозволяє вчиться займатися дослідницькою роботою при вирішенні завдань з різних областей (наприклад, фізичні, математичні, економічні завдання). При цьому студенти повинні навчитися чітко формулювати завдання, вирішувати її і оцінювати отриманий результат.
Використання нових інформаційних технологій дозволяє вирішувати деякі завдання нетрадиційними способами, а також вирішувати прикладні завдання, які раніше не могли розглядатися через складність математичного апарату.
Всту*
Використання специфікаторів доступу класу
Дані та методи класу
Визначення методів класу поза класом та операція глобального дозволу
Використання класів. Створення об’єктів. Доступ до полів та методів.
Клас як тип даних
Конструктори.
Деструктор*.
Об’єкти, що повертаються функціє*
Висновки
Список використаної літератур*
Тепер у нас є два явно визначені конструктори з тим самим імене* Distance(), і тому кажуть, що конструктор є перезавантаженим. Який з цих двох конструкторів виконається під час створення нового об’єкта, залежить від того, скільки аргументів використовується при виклику:
Distance dist; //конструктор без параметрі*
Distance dist2(11,6.25); //конструктор з 2 параметрами
8. ДЕСТРУКТОРИ. |
Деструктор викликається автоматично при знищенні об'єкта. Деструктор має те ж ім'я, що й клас, але перед ним стоїть симво* “~”. Деструктор класу викликається при знищенні об'єкта - наприклад, коли виконувана програма залишає область дії, у якій був створений об'єкт цього класу.
Насправді деструктор сам не знищує об'єкт - він виконує підготовку завершення перед тим, як система звільняє область пам'яті, у якій зберігався об'єкт, щоб використати її для розміщення нових об'єктів.
Існує декілька правил застосування деструкторі*:
Деструктор викликається автоматично, коли об’єкт виходить з області видимості:
Деструктор може виконувати і деякі інші дії, наприклад, виведення остаточних значень елементів-даних класу, що буває зручно при відлагоджуванн* програми. Проте найчастіше ця функція нічого не робить, що характерно для більшості деструкторів:
ClassName(){}
Деструктори - антиподи конструкторів. Те, що було створено конструктором, має бути знищено деструктором. Зазвичай, деструктор знищує динамічні змінні, на які посилаються елементи-дані об'єктів класу. Приміром, організація деструктора для знищення рядка, що зберігається в об'єкті класу протягом всього життєвого циклу екземпляру, може бути таким:
Class Example
{
private:
char *dts;
public:
Example()
{ dts=new(char[8] ) ;
dts="Example" ;
cout<< "Creat ingobject [" <<dts<< "]\n";
-Example()
{ cout<< "Delet ingobject [" <<dts<< "]\n";
Delete dts;
}
};
Int main()
{ Exampleal;
return 0;
}
Відповідні деструктори викликаються, коли завершуєтьс* main або коли викликається функція exit (рис.3.1).__
#include <iostream.h>
Class _3d
{
double x, y, z;
public:
_3d();
~_3d()
{
cout<<'Робот* деструктора _3d \n';
}
Double mod ()
{
Return sqrt (x*x + y*y +z*z);
}
Void set (double new, double new, double new)
{ x = new; y = new; z = new; }
};
_3d::_3d() // конструктор класу _3d
{
x=y=z=0;
cout<<'Робот* конструктора _3d \n';
}
main()
{
_3d A; // створюється об'єкт A і відбувається ініціалізація
// його елементів
// A.x = A.y = A.z = 0;
A.set (3,4,0); // Тепер A.x = 3.0, A.y = 4.0, A.z = 0.0
cout<<A.mod()<<'\n';
}
Результат роботи програм*:
Робота конструктор* _3d
5.0
Робота деструктора _3d
9. ОБ’ЄКТИ, ЩО ПОВЕРТАЮТЬСЯ ФУНКЦІЄ* |
В програмі 11.6 ми бачили, що об’єкти можна передавати в функцію в якості аргументів. Тепер розглянемо, як функція може повертати об’єкт у викликаючу програму. Модифікуємо попередню програму (програма)
#include<iostream.h>
#include<conio.h>
#include<bios.h>
Class Distance
{private:
Int feet;
Float inches;
public:
Distance():feet(0),inches(0.0) //конструктор без аргументі*
{ }
//конструктор з 2 аргументами
Distance(int ft, float in):feet(ft),inches(in)
{ }
Void getdist()
{cout<<"\n Введіть число футів "; cin>>feet;
cout<<"дюймів"; cin>>inches;
}
Void showdist()
{cout<<feet<< "\’ "<<inches<<"\’* ";}
Distance add_dist(Distance); //Прототи*
};
//dodavanna d2 i d3
Distance Distance::add_dist(Distance d2)
{
Distance temp;
temp.inches=inches+d2.inches;
if(temp.inches>=12.0)
{temp.inches-=12.0;
temp.feet++;}
temp.feet+=feet+d2.feet;
return temp;
}
Int main()
{
clrscr();
Distance dist1,dist3;
Distance dist2(11,6.25);
dist1.getdist();
dist3=dist1.add_dist(dist2);
cout<<”\ndist1=”;dist1.
cout<< “\ndist2=”;dist2.showdist();
cout<< “\ndist3=”;dist3.showdist();
cout<<endl;
bioskey(0);
return 0;
}
Хоча вище описані програми схожі, різниця між ними вказує на важливі аспекти роботи функцій з об’єктами.
* першом* прикладі два об’єкти були передані в якості аргументів в функцію add_dist(), а результат був збережений в об’єкті dist3, методом якого і є викликана функція add_dist(). В другій програмі в якост* аргумент* в функцію add_dist() передається лише один аргумент: об’єкт dist2. dist2 додається до об’єкту dist1, до якого відноситься викликаний метод add_dist(). Результат повертається в функцію main() і присвоюється об’єкту dist3.
dist3=dist1.add_dist(dist2);
Такий запис доволі близький до природного. Ще більш спростити його можна з* допомгою використання перезавантажених функцій.
Функці* add_dist() з другог* прикладу виглядає так:
DistanceDistance::add_dist(
{
Distance temp;
temp.inches=inches+d2.inches;
if(temp.inches>=12.0)
{temp.inches-=12.0;
temp.feet++;}
temp.feet+=feet+d2.feet;
returntemp;
}
Всередині функції створюється тимчасовий об’єкт класу Distance. Цей об’єкт зберігає значення обчисленої суми доти, доки вона не буде повернута викликаючі* програмі. Сума обчислюється шляхом додавання двох об’єктів класу Distance. Перший з об’єктів – dist1, по відношенню до якого функція add_dist() є методом, другий об’єкт dist2 передається в функцію у якості аргумент*. Звертання до його полів з функції виглядає так: d2.feet та d2.inches. Результат додавання зберігається в об’єкті temp і звертання до його полів виглядає так: temp.feet та temp.inches. Значення об’єкту temp повертається у викликаючу програму за допомогою оператора
Return temp
Викликаюча програма main() присвоює
значення, повернуте функцією, об’єкту
dist3. Значення змінної dist1 не змінюється,
а тільки використовується функцією add_dist().
ПІДСУМОК
Основна мета дисципліни «Об'єктно-орієнтоване
програмування» — закріплення на
практиці вміння використовувати основні
концепції об'єктно-
Клас являє собою образ, що визначає структуру своїх об’єктів. Об’єкти включають в себе як дані, так і функції, призначені для їх обробки. І дані, і функції можуть бути визначені як закриті, що означає їх доступність тільки для членів даного класу; та як відкриті, тобто доступні для будь-якої функції програми. Закритість членів класу задається ключовим слово* private, а відкритість – ключовим словом public.
Методом класу називається функція, що є членом цього класу. Методи класу, на відміну від інших функцій, мають доступ до закритих членів класу.
Конструктор – це метод класу, ім’я якого співпадає з іменем класу і який виконується кожен раз при створенні нового об’єкту. Конструктор не має типу повернутого значення, однак може приймати аргументи. Часто конструктор використовується для ініціалізації створюваних об’єктів класу. Конструктори допускають перезавантаження, тому можлива ініціалізація об’єкту кількома способами.
Деструктор – це метод класу, іменем якого є ім’я класу, перед яким проставлений знак ~. Виклик деструкторів відбувається при знищенні об’єкту. Деструктор не має ні аргументів, ні значення, яке повертаєтьс*.
В пам’яті комп’ютера кожен
об’єкт має свої власні ділянки, що
зберігають значення полів цього
об’єкту, але методи класу зберігаються
в пам’яті в єдиному
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ.
Информация о работе Використання специфікаторів доступу класу