русс | укр

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

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

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

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


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

Private


Дата добавления: 2014-11-28; просмотров: 491; Нарушение авторских прав


ShiftX, ShiftY : integer; {Смещение второго конца}

public:

constructorCreate(Xl, Yl, X2, Y2 : integer);

{(X1;Y1) и (X2;Y2) - координаты концов отрезка}

procedureDraw(color : word); virtual;

{Рисует отрезок цветом color}

end;

Задание.Самостоятельно запишите реализацию методов этого объекта и унаследуйте от него объект TRect.

3. Полиморфизм— это возможность использовать одинаковые имена для методов разных объектов. Например, методы создания и рисования всех построенных объектов имеют одинаковые имена - Create и Draw, но каждый графический объект реализует их по-разному.

Рассмотрим действие унаследованногометода On объекта TCircle:

procedureTPoint.On;

Begin

Draw(GetColor)

end;

Переопределять этот метод не было необходимости, так как его реализация справедлива для окружности только при условии, что унаследованный метод Draw является переопределенным (рисует окружность). Процедуры этих методов были размещены в описании родительского типа TPoint. Компилятор всегда будет вызывать программный код Draw родительского типа TPoint согласно принятому статическому (раннему) механизму вызова функций, а именно

procedureTPoint.Draw(color : word);

Begin

PutPixel(X, Y, color) {Будет нарисована точка}

end;

Чтобы избежать этой ситуации, в описаниях метода Draw во всех построенных объектах используют служебное слово virtual:

procedureDraw(color : word); virtual;

Теперь адрес вызова нужного метода Draw определяется лишь на этапе выполнения программы. Вызов родительского метода On объектом типа TCircle приводит к вызову уже переопределенного метода Draw:

procedureTCircle.Draw(color : word);

Begin

SetColor(color);

Circle(X, Y, R) (Будет нарисована окружность}

end;

Этот механизм называют динамическим,или поздним связыванием,а метод Draw — виртуальным методом.Метод, описанный в родительском типе как виртуальный, должен быть описан как виртуальный во всех его потомках. Важно указать, что если объектный тип содержит хотя бы один виртуальный метод, то в состав объекта должен входить конструктор и его вызов должен предшествовать вызову этого метода.



Преимущества объектно-ориентированного программирования (ООП) наиболее ощутимы при создании сложных и больших по объему программ. Структуризация подпрограмм по признаку принадлежности (применимости) к конкретному объекту (свойство инкапсуляции) упрощает процесс программирования и навигацию по тексту программы на этапе разработки. Наследование и полиморфизм освобождают программиста от необходимости придумывать названия и писать тексты однотипных процедур, применимых к концептуально подобным объектам. Из приведенного выше примера видно, что без использования ООП пришлось бы составлять и записывать процедуры движения (Move), засвечивания (On) и гашения (Off) для каждого из типов объектов TCircle, TLine и TRect - лишних девять процедур.



<== предыдущая лекция | следующая лекция ==>
ОБЪЕКТЫ | ОПИСАНИЕ СРЕДЫ ПРОГРАММИРОВАНИЯ TURBO PASCAL 7.0


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


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

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

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


 


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

 
 

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

Генерация страницы за: 0.058 сек.