Використання специфікаторів доступу класу

Автор работы: Пользователь скрыл имя, 22 Ноября 2013 в 17:13, курсовая работа

Краткое описание

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

Содержание

Всту*
Використання специфікаторів доступу класу
Дані та методи класу
Визначення методів класу поза класом та операція глобального дозволу
Використання класів. Створення об’єктів. Доступ до полів та методів.
Клас як тип даних
Конструктори.
Деструктор*.
Об’єкти, що повертаються функціє*
Висновки
Список використаної літератур*

Вложенные файлы: 1 файл

курсак.docx

— 86.56 Кб (Скачать файл)

 

ПЛАН

 

  1. Всту*
  2. Використання специфікаторів доступу класу
  3. Дані та методи класу
  4. Визначення методів класу поза класом та операція глобального дозволу
  5. Використання класів. Створення об’єктів. Доступ до полів та методів.
  6. Клас як тип даних
  7. Конструктори.
  8. Деструктор*.
  9. Об’єкти, що повертаються функціє*
  10. Висновки
  11. Список використаної літератур*

 

 

 

ВСТУ*

 

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

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

Об’єктно-орієнтова*е програмування на С++  - це одна з найпоширеніших мов програмування.

Мова програмування С++ була розроблена в 1972 р. Деннисом Рiт*i, який є одним з авторів операцiйно* системи UNIX. Мова п**грамування С++ пізніше була використана для програмування цілих сис**ми, а також багатої бібліотеки обслуговуючих програм, оскільки, являлася універсальною мовою загального призначення, мова С++ зручна для програмування системних задач. Поява мікрокомп’ютерів закріпила позицiї мови С++.

Основними перевагами мови С++ вважаться висока передача написаних  н* нiй програм мiж комп'ютерами з різною архітектурою, мiж різними операційними середовищами. Транслятори мови С++ дiють практично на всiх персональних комп'ютерах, які використовуються в наш час.

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

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

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

Мова С++ є класикою об’єктного програмування: вона створювалася саме з метою якомога повніше втілити  ООП-підхі*. Але, оскільки ми вже ознайомлені з принципами ООП і деякими способами його втілення, то відразу ж розпочнемо зі створення простого об’єктного класу, а потім будемо робити необхідні пояснення. Зауважимо тільки, що об’єктний тип в С++, як і в Delphi, називається класом, конкретні представники цього класу - об’єктами.

Структури в С++ дозволяють групувати в одному типі декілька елементів даних та функцій, що їх обробляють. Клас – може містити  в собі як елементи – дані, так  і елементи – функції, що спроможні  обробляти ці дан*.

Клас (Class) – це визначений користувачем тип даних, що застосовується для опису абстрактної множини об’єктів,які пов’язані узагальненням структури та поведінки.

У синтаксичному смислі клас в С++ нагадує визначення структури, за виключенням деяких моменті*:

    • По-перше, він може містити в собі одну або декілька специфікацій доступу, що задаються я* public, private або protected.
    • По-друге, клас, зазвичай, може включати в себе ще й функції-методи поряд з елементами-даним*.
    • По-третє, класу найчастіше притаманні спеціальні функції – конструктор та деструктор, відповідно, для створення та знищення екземплярів класу – об’єкті*.

 

 

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. ДАНІ ТА МЕТОДИ  КЛАСУ


 

Дані класу (Елементи-дан*):

  1. Можуть мати будь-який тип, окрім типу цього ж класу (але можуть бути вказівниками або посиланнями на цей кла*);
  2. Можуть бути описані з модифікатором const , при цьому вони ініціалізуютьс* тільки один раз (за допомогою конструктора) і не можуть змінюватися;
  3. Можуть бути описаними з модифікатором static, але не як auto, extern, iregister;
  4. Ініціалізація полів при описі не допускаєтьс*.

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;

}

 

З вищенаведеного прикладу випливає, що немає необхідності включати ім'я класу в ім'я елемента-функції  при визначенні її у протокольній частині опису класу. Однак треба  визнати, то поза протоколом така вказівка обов'язкова (див. приклад 2) - тут ми застосовуємо операцію розв'язання видимості :: (scopere solution operator), вказуючи належність до конкретного класу (наприклад, void line::move(int x, inty) ).

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

Функці* 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. ВИКОРИСТАННЯ  КЛАСІВ. СТВОРЕННЯ ОБ’ЄКТІВ. ДОСТУП  ДО ПОЛІВ ТА МЕТОДІВ.


 

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

Информация о работе Використання специфікаторів доступу класу