Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контроль доступу за допомогою інтерфейсу класу

Тема 6. Реалізація контролю доступу до об’єкту

Контрольні запитання

1. Як оголосити віртуальний метод?

2. Поясніть призначення віртуальних методів.

3. Охарактеризуйте роботу із вказівниками на базовий та похідний класи.

4. Поясніть призначення чисто віртуального методу.

5. Опишіть процес створення та використання абстрактних класів.

6. Наведіть приклади використання віртуальних методів.

7. Наведіть приклади створення та використання абстрактних класів.

1. Контроль доступу за допомогою інтерфейсу класу

2. Створення та використання дружніх функцій та класів

 

Основною характеристикою класу з точки зору його використання є інтерфейс класу, тобто перелік методів, за допомогою яких можна звернутися до об’єкта даного класу. Крім інтерфейсу, об’єкт володіє поточними значеннями чи станом, який він зберігає в атрибутах класу. У Сі++ є багаті можливості по контролю за тим, до яких частин класу можна звертатися зовні, а які частини – внутрішні, тобто призначені лише для реалізації інтерфейсу.

 

Всі компоненти класу, визначення якого починається зі службового слова class , є власністювнутрішньої частини. Так як клас, всі компоненти якого недоступні зовні його визначення, рідко може виявитися корисним, то змінити статус доступу до компонентів дозволяють специфікатори доступу зовнішня (public), внутрішня (private) і захищена (protected). Тобто опис класу поділяють на три частини: зовнішня, внутрішня і захищена.

Зовнішня частина починається виразом public:. Зовнішня частина – це визначення інтерфейсу. Методи і атрибути, визначені у зовнішній частині класу, доступні як об’єктам даного класу, так і будь-яким функціям і об’єктам. Визначенням зовнішньої частини класу ми контролюємо, як можна звертатись до об’єктів цього класу.

Наприклад, потрібно визначити клас, для роботи зі стрічками тексту. Потрібно з’єднувати стрічки, замінювати великі букви на малі і знаходити довжину стрічок. Ці операції варто помістити у зовнішню частину класу.

class String

{

public:

void Concat(const String & str); //додати стрічку в кінець попередньої стрічки

void ToLowel(void); // замінити великі букви на малі

int GetLength(void) const; //повідомити довжину стрічки

……………..

};

Внутрішня і захищена частини класу доступні тільки при реалізації методів цього класу. Внутрішня частина починається виразом private:, а захищена – protected:.

class String

{

....................

private:

char * str;

int length;

};

Оголосивши атрибути str та length у розділі private, ми вказуємо, що доступ до них можливий тільки при реалізації методів класу, тобто зсередини класу(приватний, особистий).

int String:: GetLength(void) const

{

return length;

}

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

Реалізація методу Concat:

void String::Concat(const String &x)

{

length+=x. length;

char * tmp=new char[length+1];

::strcpy(tmp, str);

::strcat(tmp,x.str);

str=tmp;

}

Якщо у програмі буде зроблена спроба звернутись до внутрішнього атрибута чи метода класу не у визначені методу, то компілятор видасть помилку. Наприклад

String s;

if (s. length>0) //помилка!

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

#include <iostream.h>

#include <math.h>

#include <conio.h>

 

class trucytnuk

{

float a, b, c;//закриті змінні

public:

void truc()//відкрита функція, за допомогою якої вводяться дані

{

cout<<”Введіть сторони трикутника”;

cin>>a>>b>>c;

};

float ploscha();//відкрита функція для обчислення площі

};

 

float trucytnuk :: ploscha()//визначення функції

{

trucytnuk ob;

float p = (ob.a+ob.b+ob.c)/2;

float s = sqrt(p*(p-ob.a)*(p-ob.b)*(p-ob.c));

}

 

void main()

{

trucytnuk ob;

ob.truc();

ob.ploscha()

getch();

}


Читайте також:

  1. II. Із програм для 11 класу
  2. III. Контроль знань
  3. III. КОНТРОЛЬ і УПРАВЛІННЯ РЕКЛАМУВАННЯМ
  4. N байки (з 3 класу)
  5. POS -Інтелект - відеоконтроль касових операцій
  6. VII Контроль постачальника
  7. Акустичний контроль приміщень через засоби телефонного зв'язку
  8. Аналіз економічноїї політики за допомогою моделі Мандела-Флемінга. Випадки вільного та фіксованого валютного курсів.
  9. Аналіз паралельного інтерфейсу з DSP-процесорами: читання даних з АЦП, що під’єднаний до адресного простору пам’яті
  10. Аналіз послідовного інтерфейсу з DSP-процесорами
  11. Аналіз цін конкурентів проводиться за допомогою
  12. Банківський контроль та нагляд: форми та мета здійснення. Пруденційний нагляд: поняття, органи та мета проведення.




Переглядів: 670

<== попередня сторінка | наступна сторінка ==>
 | 

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.