Выше было отмечено, что свойства могут иметь даже тип объекта некоторого класса, но как быть с массивами и другими свойствами, которые зависят от параметра? Delphi предоставляет удобную возможность работать и с такими характеристиками объекта. Рассмотрим пример. Пусть нам необходимо определить класс многоугольников. Многоугольник задается набором своих вершин, т.е. точек. Поскольку количество точек заранее не известно, естественно поместить их в список, однако мы ограничимся усеченным вариантом — число вершин не более 10. Такой многоугольник можно поместить в массив из 10 элементов. Вот соответствующее объявление.
В примере заслуживает разъяснения только векторное свойство Sites. При объявлении класса, после имени свойства стоит описание индекса. Такой индекс может быть и не один. Индекс задается именем и типом, которые указываются в квадратных скобках. Функция чтения такого свойства должна, как обычно, возвращать значение того же типа, что и тип свойства, но дополнительно она обязана иметь аргументы, совпадающие по количеству и типу с индексами свойства. В нашем случае это i: integer. Теперь, если имеется объект Polygon, то Polygon.Sites[i] означает его i-тую вершину.
Обратите внимание на дескриптор default после объявления свойства. Благодаря этому дескриптору запись Polygon.Sites[i] полностью эквивалентна более простой — Polygon[i]. Только одно и только векторное свойство может быть выбрано по умолчанию.
В последующих параграфах приведены еще более впечатляющие примеры применения векторных свойств.
Опубликовал Kest
June 14 2011 10:52:26 ·
0 Комментариев ·
8241 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.