русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Наследование и полиморфизм

Наследование – еще один фундаментальный принцип объектно-ориентированного подхода. Термин "наследование" (inheritance) не совсем точно отражает смысл происходящего. В обычной жизни наследник получает что-то только после кончины наследодателя. Программирование заметно более гуманно – здесь объект-потомок получает свойства и методы объекта-родителя еще при его жизни.

Наследованиепозволяет создавать производные объектные типы данных (классы) на основе уже существующих. При этом производные классы наследуют свойства и методы базового класса и добавляют к ним новые (Рис. 6.1).

Рис. 10.1. Принцип наследования.

Рассмотрим классический пример наследования – объект, моделирующий работу автомобиля. Очевидно, любой автомобиль – и "Запорожец", и "Мерседес" – имеют ряд общих свойств и методов. Перечислим их:

TYPE Tvehicle=CLASS
PRIVATE
power:WORD; { мощность }
speed: WORD; { скорость }
gear: BYTE; { передача }
engineon: BOOLEAN; { двигатель вкл/выкл }
fuelcons: REAL; { расход топлива }
PROCEDURE StartEngine;
PROCEDURE ChangeGear(n:BYTE);
PROCEDURE Accelerator (n:REAL);

Теперь предположим, что

нужно смоделировать работу самосвала. Это тоже автомобиль с двигателем, коробкой передач, скоростью, расходом топлива и пр. Но у него добавляются и новые свойства и методы:

СВОЙСТВА:
- грузоподъемность (load: WORD);
- кузов опущен/поднят (lift:BOOLEAN);
- упоры опущены/подняты (legs: BOOLEAN).

МЕТОДЫ:
- понять кузов (procedure LiftUp);
- опустить кузов (procedure LiftDown);
- понять упоры (procedure LegsUp);
- опустить упоры (procedure LegsDown).

Все же остальные свойства и методы возьмем из типа Tvehicle. Для этого нужно создать объект-потомок:

TYPE Ttruck=CLASS(Tvehicle)

{ в скобках – объект-родитель Tvehicle }
PRIVATE
load: WORD;
lift:BOOLEAN;
legs: BOOLEAN;
procedure LiftUp;
procedure LiftDown;
procedure LegsUp;
procedure LegsDown;
END;

Имя объекта-родителя указывается в скобках после слова CLASS. Теперь в объекте типа Ttruck существуют (унаследованы) все свойства и методы объекта Tvehicle, а также ряд новых методов, относящихся только к самосвалам.

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

Просмотров: 656


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.