Одна из задач, решаемых свойствами класса - предоставление программисту доступа к одной и той-же информации различным образом. При этом исходная информация может генерироваться и преобразовываться по различным алгоритмам.
Разработать класс для манипуляций с числовым рядом следующего вида:
TFloatSequence=class private ... public property item[index:integer]:extended read ... write ...;default; { Числовой ряд, индексируется от 0. Попытка получения неприсвоенного значения за пределами ряда должна генерировать ошибку. Доступ к неприсвоенным элементам разреженного ряда должен возвращать значение 0. Ряд называется разреженным (sparse), если в нем доступны элементы с неприсвоенными значениями, индекс которых меньше, чем индекс хотя-бы одного элемента с присвоенным значением. Например, если в ряду присвоены значения только элементам с индексами 7 и 100, то он является разреженным, при этом получение значений элементов с индексами от 0 до 6 и от 8 до 99 возвратит ноль, а чтение содержимого элементов с индексами от 101 и выше - сгенерирует ошибку. } property count:integer read ... write ...; { Количество элементов числового ряда, равен 0 для пустого ряда. Значение свойства может изменяться как напрямую, так и косвенно. Прямое присвоение уменьшает или увеличивает количество элементов ряда, изменяя, возможно, его разреженность. Косвенное изменение может реализовываться за счет присвоения значений элементам ряда. Например, для пустого ряда присвоение значение элементу с индексом 200 установит значение count равным 201. } property sparse:boolean read ...; // возвращает истину, если ряд является разреженным property sum:extended read ...; // возвращает сумму элементов ряда property mul:extended read ...; // возвращает произведение элементов ряда property avg:extended read ...; // возвращает среднее арифметическое элементов ряда property geomean:extended read ...; // возвращает среднее геометрическое элементов ряда procedure fact(n); // генерирует факториальный ряд из n элементов. Предыдущее содержимое ряда очищается. procedure fibb(n); // генерирует ряд чисел фиббоначи из n элементов. Предыдущее содержимое ряда очищается. procedure store(fn:string); // сохраняет содержимое ряда в файл procedure load(fn:string); // загружает содержимое ряда из файла. Предыдущее содержимое ряда очищается. procedure push(s:tAbstractStack); // сохраняет содержимое ряда на вершину переданного стека. procedure pop(s:tAbstractStack); // извлекает содержимое ряда с вершины переданного стека. Предыдущее содержимое ряда очищается. end;
Провести комплексную проверку разработанного класса.