Использование наследования объектов в ООП. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование наследования объектов в ООП.



Наследование — один важнейших механизмов объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.

Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.

Типы наследования:

1) Простое наследование.

Класс, от которого произошло наследование, называется базовым или родительским (англ. baseclass). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derivedclass).

В некоторых языках используются абстрактные классы. Абстрактный класс — это класс, содержащий хотя бы один абстрактный метод, он описан в программе, имеет поля, методы и не может использоваться для непосредственного создания объекта. То есть от абстрактного класса можно только наследовать. Объекты создаются только на основе производных классов, наследованных от абстрактного. Например, абстрактным классом может быть базовый класс «сотрудник вуза», от которого наследуются классы «аспирант», «профессор» и т. д.

2) Множественное наследование.

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости. Множественное наследование реализовано в C++.

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках. В языках, которые позиционируются как наследники C++ (Java, C# и др.), от множественного наследования было решено отказаться в пользу интерфейсов.

В ряде языков программирования все классы явно или неявно наследуются от некого базового класса. Smalltalk был одним из первых языков, в которых использовалась эта концепция. К таким языкам относятся Java (java.lang.Object), C# (System.Object), Delphi (TObject) и др.

 

Использование полиморфизма в ООП.

Полиморфи́зм — возможность объектов с одинаковой спецификацией иметь различную реализацию.

Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования. Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода.

Примером полиморфизма является различная реализация методов отображения геометрических фигур на экране, различная реализация методов чтения\записи в классах-потоках, и др.

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

1. Полиморфизм переопределения. При наследовании дочерний объект переопределяет метод или атрибут родителя.

2. Параметрический полиморфизм. В C++ перегрузка имён функций, шаблоны функций. Разные функции с одинаковыми идентификаторами могут принимать разные наборы аргументов различных типов.Назначение перегрузки, шаблонов: разрешить выполнять одну и ту же операцию с разными операндами, используя единственное имя функции.

// Перегрузка

int max(int num_1,int num 2);

double max(double num_1,double num 2);

int max (double num_1,double num 2);

{

If (num_1>num_2)

Return num_1;

Else Return num_2;

}

double max (double num_1,double num 2);

{

If (num_1>num_2)

Return num_1;

Else Return num_2;

}

// Шаблон

template<typename T> T max(T num_1,T num 2);

{

If (num_1>num_2)

Return num_1;

ElseReturnnum_2;

}

МАТЕМАТИЧЕСКАЯ ЛОГИКА И ТЕОРИЯ АЛГОРИТМОВ.



Поделиться:


Последнее изменение этой страницы: 2017-02-22; просмотров: 256; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.70.203 (0.004 с.)