Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Перевантаження операцій

Читайте также:
  1. II. Елементи операційних витрат
  2. III. Відкриття бюджетних рахунків для операцій клієнтів з бюджетними коштами
  3. Аналіз структури операційних витрат підприємства за елементами
  4. Ведення касових операцій. Розрахунки з підзвітними особами, в тому числі щодо видатків на відрядження
  5. ВЗАЄМОЗВ’ЯЗОК ОПЕРАЦІЙНИХ ВИТРАТ ЗА СТАТТЯМИ ТА ЕЛЕМЕНТАМИ
  6. Витрати підприємства від здійснення іншої операційної діяльності
  7. Витрати підприємства, не пов'язані з операційною діяльністю

Лабораторна робота № 6.

Тема: Використання конструкторів і констант в класі при програмуванні масивів об'єктів.

Мета роботи - Отримати практичні навики створення абстрактних типів даних і перевантаження операцій в мові С++.

Короткі теоретичні відомості

Абстрактний тип даних (АТД)

АТД - тип даних, визначуваний лише через операції, які можуть виконуватися над відповідними об'єктами безвідносно до способу представлення цих об'єктів.

АТД включає абстракцію як через параметризацію, так і через специфікацію. Абстракція через параметризацію може бути здійснена так само, як і для функцій, використанням параметрів там, де це має сенс. Абстракція через специфікацію досягається за рахунок того, що операції представляються як частина типа.

Для реалізації АТД необхідне, по-перше, вибрати представлення пам'яті для об'єктів і, по-друге, реалізувати операції в термінах вибраного представлення.

Прикладом абстрактного типа даних є клас в мові С++.

Перевантаження операцій

Можливість використовувати знаки стандартних операцій для запису виразів як для вбудованих, так і для АТД.

У мові С++ для перевантаження операцій використовується ключове слово operator, за допомогою якого визначається спеціальна операція-функція.

Формат операції-функції:

тип_поверн_значення operator знак_операції (специф_параметрів) {оператори_тіла_функції}

Перевантаження унарних операції

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

вираз ® Z означає виклик Z.operator ® ();

Синтаксис:

тип_поверн_значення operator знак_операції(){оператори_тіла_функції}

Приклад:

class person

{

int age;

public:

void operator++(){ ++age;}

};

void main()

{

person jon;

++jon;

}

Перевантаження бінарних операцій

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

вираз x®y означає виклик x.operator ® (y);

Приклад:

class person {...};

class adresbook

{

// містить як компонентні дані (поля) множину об'єктів типа
// person, що представляються як динамічний масив або список

public:

person& operator[](int); //доступ до i-го об'єкту

};

person& adresbook::operator[](int i){...}

void main()

{

adresbook persons;

person record;

record = persons [3];

}

Порядок виконання роботи

1. Вибрати клас АТД відповідно до варіанту.

2. Визначити і реалізувати в класі конструктори, деструктор, функції Input (введення з клавіатури) і Print (виведення на екран).

3. Написати програму тестування класу і виконати тестування.

4. Доповнити визначення класу заданими перевантаженими операціями (відповідно до варіанту).

5. Реалізувати ці операції. Виконати тестування.

6. Результати роботи оформити звітом.

Варіанти індивідуальних завдань

  1. АДТ - стек. Додатково перевантажити наступні операції:

+ - додати елемент в стек;

- - витягнути елемент зі стека;
bool() - перевірка, чи порожній стек.

 

 

  1. АДТ - динамічний одновимірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

- - віднімання векторів (а[i]-b[i] для всіх i);

[] - доступ по індексу;

- - відняти з вектора число (vector-double).

 

 

  1. АДТ - динамічний одновимірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

= - привласнити всім елементам вектора значення (vector=double);

[] - доступ по індексу;

= = - перевірка на рівність;

!= - перевірка на нерівність.

 

  1. АТД - динамічний двовимірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

() - доступ по індексу;

= = - перевірка матриць на рівність;

++ - транспонувати матрицю.

  1. АДТ - черга. Додатково перевантажити наступні операції:

+ - додати елемент;

- - витягнути елемент;

bооl() - перевірка, чи порожня черга.

 

 

  1. АДТ - динамічний одновимірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

* - множення векторів (а[i]*b[i] для всіх i);

[] - доступ по індексу;

* - помножити вектор на число (vector*double).

 

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

+ - об'єднати списки (list+list);

- - - видалити елемент з початку (- -list);
= = - перевірка на рівність.

 

 

  1. АДТ - динамічний одновимірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

+ - складання векторів (а[і]+ b[і] для всіх і);

[] - доступ по індексу;

+ - додати число до вектора (double+vector).

 

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

+ - додати елемент в початок (char +list);

- - - видалити елемент з початку (- -list);

= = - перевірка на рівність.

 

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

+ - додати елемент в кінець (list+char);

- - - видалити елемент з кінця (типа list--);
!= - перевірка на нерівність.

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

[] - доступ до елементу в заданій позиції, наприклад:

int i;

char с;

list L;
c=L[i];

+ - об'єднати два списки (list+list);

!= - перевірка на нерівність.

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

+ - додати елемент в кінець (list+char);

- - - видалити елемент з кінця (типа list--);
= = - перевірка на рівність.

  1. АТД - динамічний двовимірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

() - доступ по індексу;

* - множення матриць;

* - множення матриці на число;

* - множення числа на матрицю.

 

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

[] - видалити елемент в заданій позиції, наприклад:
int i;
list L;
L[i];

[] - додати елемент в задану позицію, наприклад:
int i;

char с;
list L;
L[с, i];

!= - перевірка на нерівність двох списків.

 

 

  1. АТД - динамічний двовимірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

() - доступ по індексу;

- - різниця матриць;

- - відняти з матриці число;
= = - перевірка матриць на рівність.

 

  1. АТД - динамічний двовимірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

() - доступ по індексу;

= - привласнити всім елементам матриці значення (matr=double);

+ - складання матриць;

+ - скласти матрицю з числом (matr+double).

 

 

  1. АДТ - динамічний одновимірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

* - множення векторів (а[i]*b[i] для всіх i);

[] - доступ по індексу;

* - помножити вектор на число (vector*double).

 

  1. АТД - однонаправлений список з елементами типа char. Додатково перевантажити наступні операції:

[] - доступ до елементу в заданій позиції, наприклад:

int i;

char с;

list L;
c=L[i];

+ - об'єднати два списки (list+list);

! = - перевірка на нерівність.


Дата добавления: 2015-11-26; просмотров: 173 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.013 сек.)