Головна

Перетворення типів, що визначаються класом

  1.  Ordm ;. ортогональні перетворення
  2.  Z-перетворення деяких послідовностей
  3.  адміністративно-територіального перетворення
  4.  Аналіз характеристик і параметрів аналого-цифрового перетворення повідомлення
  5.  Афінний перетворення
  6.  АЦП паралельного перетворення
  7.  АЦП паралельного перетворення

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

конструктор перетворення - Це конструктор класу з одним аргументом, службовець для перетворення з типу аргументу до типу класу.

Конструктор зручний для перетворення з базового типу в тип класу. Візьмемо приклад (клас complex) з перевантаженої операцією +, розглянутий вище. Нехай необхідно складати комплексні числа з речовими числами з отриманням комплексних чисел. Для цього потрібно перетворення дійсного числа в комплексне число з нульовою уявною частиною. Додамо в клас complex конструктор перетворення з аргументом типу float.

операція перетворення - Це елемент-функція класу, що здійснює явне перетворення типу класу в інший тип.

Операція перетворення має такі властивості:

- Синтаксис операції перетворення нагадує синтаксис перевантаженої операції: operator tip () {...}, де tip - ідентифікатор нового типу, в який відбувається перетворення;

- Не має аргументів і типу значення, що повертається;

- Повинна бути нестатичних елементом-функцією класу;

- Успадковується і може бути як virtual.

Операція зручна для перетворення з типу класу в базовий тип. Нехай необхідно складати комплексні числа з речовими числами з отриманням дійсних чисел. Замінимо в попередньому прикладі в класі complex конструктор перетворення на операцію перетворення з типом float.

Для перетворення об'єктів одного і того ж класу використовуються конструктори копіювання, що задаються явно або за замовчуванням. Нехай виконується операція присвоювання: obj2 = obj1; , Де obj1 і obj2 об'єкти одного і того ж класу. У цьому випадку ніяких перетворень типів не відбувається, а виконується тільки неявне поелементне копіювання.

Для перетворення об'єкта одного класу в об'єкт іншого класу (без успадкування) використовуються розглянуті вище функції перетворення: конструктор перетворення і операція перетворення. Нехай потрібно перетворити об'єкт obj1 класу cl1 в об'єкт obj2 класу cl2, т. Е., Наприклад, obj2 = obj1 ;. Тоді синтаксис функцій перетворення матиме вигляд:

- Конструктор класу cl2: cl2 :: cl2 (const cl1 &) {...}

- Операція класу cl1: cl1 :: operator cl2 () {...}

Необхідно мати одночасно лише одну з цих функцій перетворення.

Розглянемо вплив спадкування на перетворення об'єктів базових і похідних класів. При перетворенні об'єктів похідного класу функції перетворення не вимагається. Наприклад, при виконанні операції присвоювання відбувається неявне поелементне копіювання власної частини і успадковане (базової) частини одного об'єкта в інший. Нехай obj1 - об'єкт базового класу cl1, obj2 - об'єкт похідного класу cl2. Перетворення об'єкта похідного класу в об'єкт базового класу допустимо без функції перетворення: obj1 = obj2; , Т. Е. Частина об'єкта obj2, успадкована від класу cl1, визначається об'єкту obj1.

Перетворення об'єкта базового класу в об'єкт похідного класу не допустимо без функції перетворення: obj2 = obj1; , Це не допустимо, тому що немає функції перетворення. Потрібно явне перетворення з типу cl1 в тип cl2, тому, треба створити або конструктор перетворення в класі cl2 (cl2 :: cl2 (const cl1 &) {...}), або операцію перетворення в класі cl1 (cl1 :: operator cl2 () {...}). Тепер можна перетворення: obj2 = obj1; , Перетворення з типу cl1 в тип cl2 допустимо.

 




 Структури, об'єднання, перерахування |  Засоби управління екраном і клавіатурою |  Операції і засоби обробки файлів |  Контроль операцій обробки файлів |  Сутність об'єктно-орієнтованого підходу |  Класи і об'єкти |  Конструктори і деструктори |  похідний клас |  Просте і множинне спадкування |  Віртуальні базові класи |

© um.co.ua - учбові матеріали та реферати