Одна из задач, решаемых свойствами класса - предоставление программисту доступа к одной и той-же информации различным образом. При этом исходная информация может генерироваться и преобразовываться по различным алгоритмам.
Разработать класс для манипуляций с числовым рядом следующего вида:
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;
Провести комплексную проверку разработанного класса.