4968

Полиморфизм и виды его операций

Реферат

Информатика, кибернетика и программирование

Полиморфизм Полиморфизм – использование одного и того же имени функции, операции или класса для разных типов данных. Полиморфизм позволяет многократно не переписывать фрагменты программы, реализующие один и тот же алгоритм для разных типов...

Русский

2012-11-30

30.97 KB

4 чел.

Полиморфизм

Полиморфизм – использование одного и того же имени функции, операции или класса для разных типов данных. Полиморфизм позволяет многократно не переписывать фрагменты программы, реализующие один и тот же алгоритм для разных типов данных. Если не использовать полиморфизм, любой типовой алгоритм, например, упорядочение элементов массива по возрастанию пришлось бы отдельно реализовывать для целых чисел, для вещественных чисел и т.д. Простейшим примером полиморфизма является наличие в классе нескольких конструкторов с одинаковыми именами, но разными наборами входных параметров.

Полиморфизм используется в так называемых абстрактных классах, предназначенных для описания структур данных: массивов, списков, деревьев и т.д. В качестве параметров таких классов задаются типы элементов структур данных.

Виды полиморфизма

Различают следующие виды полиморфизма:

- полиморфизм функций (переопределение функций)

- полиморфизм операций (переопределение операций)

- шаблоны

Полиморфизм операций (переопределение операций)

Переопределение операций – использование знаков операций над переменными стандартных типов данных для программирования операций над переменными пользовательских типов данных. Например, для объектов пользовательского класса можно придумать операции сложения, умножения, сравнения на равенство, сравнения на большинство/меньшинство и т.д.

Синтаксис операции похож на синтаксис обычной функции. Главным отличием операции от обычной функции является использование в качестве имени ключевого слова operator и знака переопределяемой операции.

Правила перегрузки операций

1. Можно перегружать любые операции ., *, ?:, ::, sizeof.

2. Все операции наследуются кроме присваивания.

3. При перегрузке операции с одним операндом она не должна иметь параметров

4. При перегрузке операции с двумя операндами она должна иметь один параметр (ссылку на объект).

5. Для организации последовательности операций они должны возвращать ссылку на объект.

6 Операции ++ и -- переопределяются в префиксной и постфиксной формах. Для префиксной формы входных параметров нет, для постфиксной – один целочисленный входной параметр.

7. Операция присваивания определяется по умолчанию.

Пример перегрузки операций

Перегрузка операции увеличения на 1 в классе вектор

Перегрузка операции сложения в классе Вектор

Перегрузка операции сравнения в классе Человек

#pragma once

class Person

{

public:

Person(void);

~Person(void);

private:

 char* Fio;

 int Age;

public:

 void SetAll(char* Fio1, int Age1);

 void Print(void);

 bool operator <(Person& P2);

};

#include "StdAfx.h"

#include ".\person.h"

#include <string.h>

Person::Person(void)

: Fio(NULL)

, Age(0)

{

}

Person::~Person(void)

{

}

void Person::SetAll(char* Fio1, int Age1)

{

Fio=new char[strlen(Fio1)];

strcpy(Fio,Fio1);

Age=Age1;

}

void Person::Print(void)

{

printf("%s %d\n",Fio,Age);

}

// Сравнение объектов на меньшинство по алфавиту и по возрасту

bool Person::operator <(Person& P2)

{

 if(strcmp(Fio,P2.Fio)<0)

 return true;

 else

 if(strcmp(Fio,P2.Fio)==0 && Age<P2.Age)

  return true;

 else

  return false;

 return false;

}

#include "stdafx.h"

#include ".\person.h"

main()

{

Person P1, P2;

P1.SetAll("Иванов", 35);

P2.SetAll("Петров", 20);

 if(P1<P2)

 printf("P1<P2-verno");

   

}


 

А также другие работы, которые могут Вас заинтересовать

73772. Початки української козачини 378 KB
  Вони брали ся за рішеннє сього питання тодї як се явище не тільки скристалїзувало ся вповнї набуло незвичайної екстензивної сили стало великою й впливовою суспільною верствою але й покрило собою иньші суспільні верстви стало репрезентантом української народности pr ехсеllеnсе подібно як народ шляхецькийrdquo; репрезентував сучасну народнїсть польську. І таке всенародне значіннє козачини в звязку з незмірноориґінальними прикладами козацького устрою козацької стихії що так різко відріжняли її на тлї загального поневолення народнїх...
73775. Профессионально-этические принципы работы практического психолога 25.21 KB
  Очевидные самоочевидные и даже в чемто банальные принципы типа не кричи на клиента не бей клиента не плюй в клиента не наноси ему увечий и т. Например психологконсультант неоправданно оскорбляет клиента доводя его до истерики или использует в некоторых случаях совершенно не адекватные методы был случай когда один весьма солидный специалист в профконсультации под видом инноваций применил метод иглоукалывания да еще в затемненной комнате при свечах и с полуобнаженным телом ошарашенного подростка. Роджерса пишет:...
73776. Этические проблемы в научной деятельности психолога 22.64 KB
  Проблема в том что для чистоты исследования часто приходится работать в режиме субъектобъектных отношений что предполагает повышенную этическую готовность и нравственную ответственность психологаисследователя. Проблема недобросовестности исследования. Этическая проблема заключается в вынужденной необходимости истинных авторов соглашаться на такое соавторство ради того чтобы книга вообще была издана. Очень непростой является проблема семейственности в науке когда с одной стороны создаются благоприятные условия для откровенных...
73777. Важнейшие требования к личности практического психолога 14.66 KB
  Иными словами превалирующая роль отводится психологическому и психотерапевтическому а также психокоррекционному и психодиагностическому инструментарию при этом личностные характеристики психолога считаются чемто вторичным. Подобная позиция присуща теоретическим концепциям рассматривающим психологическую помощь как воздействие психолога на клиента. Обобщая многочисленные исследования профессионально важных личностных черт психотерапевтов и психологов можно выделить следующие личностные черты желательные для практического психолога: ...
73778. Проблема «модели специалиста» и индивидуального стиля деятельности психолога 22.45 KB
  Обычно приводится примерно такое обоснование: невозможно втиснуть в модель все характеристики профессиональной деятельности вместе с необходимостью импровизировать в труде а также невозможно выделить общепризнанный стандартнообразцовый профиль личностных и профессиональных качеств специалиста под который можно было бы подгонять будущих психологов. Маркова выделяет следующие основные составляющие модели специалиста: 1 профессиограмму то есть описание самой деятельности психолога; 2 профессиональнодолжностные требования...
73779. Профессиональные деструкции в развитии психолога 22.97 KB
  Работа может способствовать личностному развитию но может иметь и отрицательные для личности последствия. Проблема в балансе соотношении позитивных и негативных изменений личности работника. Профессиональные деструкции проявляются в снижении эффективности труда в ухудшении взаимоотношений с окружающими в ухудшении здоровья и главное в формировании отрицательных личностных качеств и даже в распаде целостной личности работника. Специалисты обычно выделяют и анализируют негативные качества формирующиеся в работе школьных учителей: ...