Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 21 стр.

UptoLike

Составители: 

21
к внутренним данным объекта, поэтому поля с внутренними данными
объекта обычно объявляют с модификатором private.
Например у объектов класса Автомобиль, которые могут взаимо-
действовать с объектами класса Водитель через открытый интерфейс,
открытыми объявлены только методы Ехатъ_вперед, Ехать_назад,
Повернуть и Остановиться их достаточно для взаимодействия объ-
ектов классов Водитель и Автомобиль. У объекта класса Автомобиль
может быть вложенный объект класса Двигатель, но будет закрыт для
объектов класса Водитель, которому будут открыты лишь методы, тре-
буемые для управления автомобилем. В этом случае можно заменить
вложенный объект класса Двигатель, и взаимодействующий с ним
объект класса Водитель не заметит замены, если она не нарушит кор-
ректную работу интерфейса.
Полиморфизм
Благодаря полиморфизму, одни и те же открытые интерфейсы
удается по-разному реализовать в разных классах. Другими словами,
полиморфизм позволяет вызывать методы и свойства объекта независи-
мо от их реализации. Например, объект класса Водитель взаимодейст-
вует с объектом класса Автомобиль через открытый интерфейс. Если
другой объект, например Грузовик или Гоночный_автомобиль, под-
держивает такой открытый интерфейс, то объект класса Водитель
сможет взаимодействовать и с ними (управлять ими), невзирая на раз-
личия в реализации интерфейса. Основных подходов к реализации по-
лиморфизма два: через интерфейсы и через наследование, которые бу-
дут рассмотрены далее.
Реализация полиморфизма с помощью интерфейсов
Интерфейс (interface) это соглашение, определяющее набор от-
крытых методов, реализованных классом. Интерфейс определяет список
методов класса, но ничего не говорит об их реализации. В объекте до-
пустимо реализовать несколько интерфейсов, а один и тот же интерфейс
можно реализовать в разных классах. Например, можно описать интер-
фейс возможности управления некоторыми объектами:
// имена интерфейсов обычно начинаться с буквы I
interface IDrivable {
int Ехать(...);
float Повернуть(...);
bool Остановиться(...);
}
Если класс реализует какой-то интерфейс, то в нем должны быть
описаны все методы этого интерфейса. Например: