Автор работы: Пользователь скрыл имя, 22 Ноября 2013 в 17:13, курсовая работа
Одним з головних завдань в навчанні є розвиток творчих і дослідницьких здібностей студентів. На уроках програмування застосування комп'ютерів дозволяє вчиться займатися дослідницькою роботою при вирішенні завдань з різних областей (наприклад, фізичні, математичні, економічні завдання). При цьому студенти повинні навчитися чітко формулювати завдання, вирішувати її і оцінювати отриманий результат.
Використання нових інформаційних технологій дозволяє вирішувати деякі завдання нетрадиційними способами, а також вирішувати прикладні завдання, які раніше не могли розглядатися через складність математичного апарату.
Всту*
Використання специфікаторів доступу класу
Дані та методи класу
Визначення методів класу поза класом та операція глобального дозволу
Використання класів. Створення об’єктів. Доступ до полів та методів.
Клас як тип даних
Конструктори.
Деструктор*.
Об’єкти, що повертаються функціє*
Висновки
Список використаної літератур*
ПЛАН
ВСТУ*
Одним з головних завдань
в навчанні є розвиток творчих
і дослідницьких здібностей студентів.
На уроках програмування застосування
комп'ютерів дозволяє вчиться займатися
дослідницькою роботою при вирішенні
завдань з різних областей (наприклад,
фізичні, математичні, економічні завдання).
При цьому студенти повинні навчитися
чітко формулювати завдання, вирішувати
її і оцінювати отриманий
Використання нових інформаційних технологій дозволяє вирішувати деякі завдання нетрадиційними способами, а також вирішувати прикладні завдання, які раніше не могли розглядатися через складність математичного апарату.
Об’єктно-орієнтова*е програмування на С++ - це одна з найпоширеніших мов програмування.
Мова програмування С++ була розроблена в 1972 р. Деннисом Рiт*i, який є одним з авторів операцiйно* системи UNIX. Мова п**грамування С++ пізніше була використана для програмування цілих сис**ми, а також багатої бібліотеки обслуговуючих програм, оскільки, являлася універсальною мовою загального призначення, мова С++ зручна для програмування системних задач. Поява мікрокомп’ютерів закріпила позицiї мови С++.
Основними перевагами мови С++ вважаться висока передача написаних н* нiй програм мiж комп'ютерами з різною архітектурою, мiж різними операційними середовищами. Транслятори мови С++ дiють практично на всiх персональних комп'ютерах, які використовуються в наш час.
Об'єктно-орієнтований стиль
- це метод програмування, який вельми
близько нагадує нашу поведінку.
Воно є природною еволюцією раніше
введених нововведень в розробці
мов програмування. Об'єктно-орієнтоване
програмування є більш
Основоположною ідеєю
об'єктно-орієнтованого
Об'єктно-орієнтовані проекти
вимагають менших ресурсів, а методи,
необхідні для управління цими ресурсами,
декілька відрізняються від традиційних,
тому в процесі об'єктно-
Мова С++ є класикою об’єктного
програмування: вона створювалася саме
з метою якомога повніше
Структури в С++ дозволяють групувати в одному типі декілька елементів даних та функцій, що їх обробляють. Клас – може містити в собі як елементи – дані, так і елементи – функції, що спроможні обробляти ці дан*.
Клас (Class) – це визначений користувачем тип даних, що застосовується для опису абстрактної множини об’єктів,які пов’язані узагальненням структури та поведінки.
У синтаксичному смислі клас в С++ нагадує визначення структури, за виключенням деяких моменті*:
1. ВИЗНАЧЕННЯ КЛАСУ |
Визначення класу починається із ключового слова class. Тіло оголошення класу заключається у фігурні дужки ({ }). Оголошення класу закінчується крапкою з комою.
Синтаксис оголошення класу:
Class<ім’я>
{ Private:
<опис прихованих елементів>;
Protected:
<опис захищених елементів>;
Public:
<опис доступних елементів>;
};
Прикла*: Визначення класу smallobj в програмі виглядає так:
Class smallobj
{private:
Int somedata; //поле класу
public:
void setdata(int d) // метод класу, що змінює значення пол*
{somedata=d;}
Void showdata() //метод класу, що відображає значення пол*
{cout<<"Значення поля="<<somedata<<endl;};
};
Перший приклад містить клас і два об’єкти цього класу. Попри свою простоту, він демонструє синтаксис і основні риси класі*.
Лістинг програм*.
#include<iostream.h>
#include<conio.h>
#include<bios.h>
Class smallobj
{ private:
Int somedata;
public:
void setdata(int d)
{somedata=d;}
Void showdata()
{cout<<"Значення поля="<<somedata<<endl;};
};
Int main()
{ clrscr();
smallobj s1,s2;
s1.setdata(3066);
s2.setdata(3776);
s1.showdata();
s2.showdata();
bioskey(0);
return 0;
}
Клас smallobj, визначений у цій програмі, містить одне поле даних і два методи. Методи забезпечують доступ до поля даних класу. Перший з методів присвоює полю значення, а другий метод виводить це значення на екран. Поле оголошене як захищене (private: зверніть увагу на вертикальну двокрапку після ключового слова, вона обов’язкова), метод як відкритий (public: ). В програмі описані дві змінні об’єктного типу, вони є екземплярами класу smallobj.
2. ВИКОРИСТАННЯ СПЕЦИФІКАТОРІВ ДОСТУПУ КЛАСУ |
Головною турботою класу є необхідність приховувати якомога більше інформації, аби захистити її від можливого стороннього впливу. Це накладає ряд обмежень на використання даних. Тому ознакою пристойного стилю програмування на С++ вважається правильне застосування специфікаторів доступу до елементів-даних та елементів-функцій класу.
Програма містить ключові слова public і private, призначення яких нам вже знайоме: вони визначають, в якій мірі дані чи методи захищені від несанкціонованого доступу з боку функцій, які розміщені поза класом. Якщо необхідно захистити якісь дані, їх поміщають всередині класу з ключовим словом private. Такі дані доступні лише всередині класу.
Таблиця №1.
Специфікатори доступу
Public |
Елементи-дані (дані-класу) та елементи-функції (методи класу) доступні для функцій-елементів та інших функцій, де має місце представник класу. |
Private |
Елементи-дані (дані-класу) та
елементи-функції (методи класу) доступні
лише для функцій-елементів |
Protected |
Елементи-дані (дані-класу) та
елементи-функції (методи класу) доступні
лише для функцій-елементів |
Розділи з різними привілеями доступу можуть з’являтися у будь-якому порядку та у будь-якій кількості. Якщо усі елементи-дані та елементи-функції класу оголосити приватним* (private), то з таким класом ніяких операцій проводити неможливо: уся інформація з протоколу класу буде прихованою. Та навпаки. До всього, що оголошено у секції public, дозволений необмежений доступ. Щодо специфікатора protected елементи-дані стають доступними у похідному класі через прихований по замовчуванню вказівник this.
3. ДАНІ ТА МЕТОДИ КЛАСУ |
Дані класу (Елементи-дан*):
Class smallobj
{private:
Int somedata; //поле класу
public:
void setdata(int d) // метод класу, що змінює значення пол*
{somedata=d;}
Void showdata() //метод класу, що відображає значення пол*
{cout<<"Значення поля="<<somedata<<endl;};
};
Клас smallobj містить лише одне поле somedata типу int. Дані, що містяться всередині класу, називаються даними-членами або полями класу. Кількість полів класу може бути довільною. Оскільки перед описом поля проставлене слово private, це поле доступне тільки всередині класу.
Методи класу (Елементи-функції)- це функції, що входять до складу класу.
Клас smallobj містить два методи – somedata і setdata. Оскільки обидва ці методи описані після ключового слова public, вони доступні за межами класу. Далі приведений синтаксиси визначення класу.
4. ВИЗНАЧЕННЯ МЕТОДІВ КЛАСУ ПОЗА КЛАСОМ ТА ОПЕРАЦІЯ ГЛОБАЛЬНОГО ДОЗВОЛУ |
Приклад оголошення класу.
Class line
{// по замовчуванню – private елемент*
int x1, y1, x2, y2;
public:
line(int x1, int y1, int x2, int y2);
void show();
line () ; };
В даному прикладі оголошується клас для представлення відрізка на площині. В цьому класі передбачено чотири приховані елементи-змінні х1, х2, y1, y2 конструктор line (int x1, int y1, int x2, int y2);деструктор - line (); та метод – void show();
Використання бінарної операції розширення області дії (::)
Після того, як клас і його функції-елементи оголошені, ці функції – елементи повинні бути описані. Кожна функція-елемент може бути описана прямо в тілі класу(замість включення прототипу функції класу) або після тіла класу. Оскільки різні класи можуть мати елементи з однаковими іменами, операція розширення області дії «прив'язує» ім'я елемента до імені класу, щоб однозначно ідентифікувати функції-елементи даного класу.
Незважаючи на те, що функція-елемент, оголошена у визначенні класу, може бути описана поза цим визначенням, ця функція-елемент однаково має областю дії клас, тобто її ім'я відомо тільки іншим елементам класу поки до неї звертаються за допомогою об'єкта класу, посилання на об'єкт класу або покажчика на об'єкт класу.
Приклад визначення методів класу поза класо*:
// line.h
Class line
{int x1, y1, x2, y2;
public:
line(int_x1, int _y1, int _x2, int _y2);
void show();
void move(int x,int y);
line () ;
};
// line.cpp
#include "line.h"
line::line(int _x1,int _y1,int _x2,int _y2)
{ x1=_x1;y1=_y1; x2 =_x2;y2 =_y2;
void line::move(int x,int y)
{ x1+=x; y1+=y; x2+=x; y2+=y;
}
З вищенаведеного прикладу
випливає, що немає необхідності включати
ім'я класу в ім'я елемента-
Перед заголовком функції стоїть ім’я класу і символ :: цей символ є знаком операції глобального дозволу. Така форма запису встановлює взаємозв’язок функції та класу, до якого відноситься ця функція.
Функці* move (int x,int x) без імені класу буде звичайною зовнішньою функцією. До речі, вона може бути описана як зовнішня І таким чином - :: move(int x,inty), коли є декілька функцій з однаковими іменами, як у насипному випадку:
//визначення зовнішньої функції move()
Void move(int x, int y)
{
//
}
Class line {
int x1, y1, x2, y2;
public: // визначення функції класу move()
void move(int x,int y)
{ //
Void set(int x, int y)
{
move(x,y); // line::move(x,у)
::move(x,y); // зовнішня ::move(x,y);
};
5. ВИКОРИСТАННЯ КЛАСІВ. СТВОРЕННЯ ОБ’ЄКТІВ. ДОСТУП ДО ПОЛІВ ТА МЕТОДІВ. |
Лише після створення (екземпляру об’єкту), що має тип класу, можна отримати доступ до даних та функцій, що належать класу. Оскільки елементи-дані та елементи-функції є частиною класу, звертання до них проводиться через оголошену змінну типу «клас», подібно до елементів структури.
Информация о работе Використання специфікаторів доступу класу