Я пытаюсь создать класс CONTAINER, который поддерживает массив объектов CRITTER (которые я уже создал и протестировал. Обратите внимание, что существуют различные подвиды CRITTER, которые наследуются от суперкласса CRITTER). Цель состоит в том, чтобы добавлять и удалять объекты CRITTER из этого массива. Вот как выглядит класс CONTAINER:
class
CONTAINER
create
make
feature
num: detachable INTEGER
list: ARRAY[CRITTER]
make
local
do
create list.make_empty
num := 0
end
addCritter(critter: CRITTER)
do
list.put(animal, num)
num := num + 1
end
removeCritter(critter: CRITTER)
do
list.put (list.at (num), ???) -- put last element in position of element to be removed
list.remove_tail (num) -- remove tail
num := num - 1
end
end
Две проблемы: во-первых, я могу создать экземпляр класса CONTAINER внутри APPLICATION, но когда я вызываю
create container.make
container.addCritter(myCritter)
Я получаю предварительное условие, ошибка нарушения недопустимого индекса во второй строке. Это может быть потому, что я не установил верхнюю и нижнюю границы массива. Однако, когда я пытаюсь это сделать, я получаю синтаксические ошибки. Как решить эту проблему?
Во-вторых, чтобы удалить объект из массива, было бы полезно, если бы я мог получить значение индекса, но я не вижу никакой функции, которая это делает, если только я что-то не упустил.