Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВВЕДЕНИЕ В ОБЪЕКТНО Ориентированное программиро...docx
Скачиваний:
19
Добавлен:
29.08.2019
Размер:
1.01 Mб
Скачать

Перекрытие и переопределение свойств

Определение свойства, которое не специфицирует его тип называется перекрытием свойства. Перекрытие свойств позволяет изменить для свойства потомка области видимости или спецификации. Простейшее перекрытие включает в себя только слово property, сопровождаемое именем свойства. Такая форма используется для изменения видимости свойства. Перекрытие свойства может включать директивы read, write, default; любая такая директива перекроет соответствующую директиву в предке. Видимость можно изменять только в направлении возрастания.

Пример:

При перекрытии свойства Size добавлено служебное слово write, что дает возможность модифицировать свойство. При перекрытии свойств Text и Color изменена видимость свойств с protected в published. При перекрытии свойства Color также добавлено значение по умолчанию clBlue.

Повторное объявление свойства в потомке с именем, совпадающим с именем свойства предка, при котором указывается тип свойства переопределяет свойство предка, а не перекрывает его. Это означает, что будет создано новое свойство с тем же самым именем, что и у свойства предка. Любое описание свойства с указанием типа должно быть полным в отличие от случая перекрытия.

При перекрытии и переопределении свойств в классе-потомке перекрытие методов доступа к нему всегда статическое. Таким образом, в следующем примере при чтении или записи свойства Value объекта MyObject будут вызваны методы Method1 и Method2, то есть те, которые определены для типа объекта -класса предка, а не для реально созданного объекта типа класс-потомок:

Если в качестве методов чтения и записи свойств использовать виртуальные или динамические методы, то вызываться будет метод, соответствующий реальному классу объекта:

Объектно-ориентированное программирование в Borland Delphi. Применение объектно-ориентированного программирования

Любая программа состоит из двух сравнительно независимых частей: функциональная часть и интерфейсная часть. Функциональная часть предназначена для реализации того, для чего собственно программа и предназначена. Интерфейсная - реализует взаимодействие функциональной части с внешним миром, т.е. с человеком, аппаратурой ПК и другими программами.

Основная часть разработки любой прикладной программы - это разработка ее функциональной части. Основная работа прикладного программиста - также разработка функциональной части. При программировании функциональной части задача программиста - разработка новых классов и иерархий классов, которые в своем взаимодействии реализуют требуемые функциональные возможности системы. Это требует как знаний в предметной области, так и знаний в области объектно-ориентированного анализа, проектирования и программирования. При разработке интерфейсной части обычно используются стандартные объектно-ориентированные библиотеки. В настоящее время имеется достаточно большое число таких библиотек для разных языков программирования под разными операционными системами. Разработка интерфейсной части включает в себя:

· проектирование интерфейса,

· при необходимости разработку недостающих визуальных компонентов,

· организацию стандартных и разработанных визуальных компонентом требуемым образом.

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

Разработка новых визуальных компонентов обычно производится путем порождения классов-потомков от уже существующих в используемой библиотеке и требует как знаний концепций ООП и конкретного языка программирования, так и структуры конкретной объектно-ориентированной библиотеки компонентов.