CRITTER オブジェクトの配列を保持する CONTAINER クラスを作成しようとしています (既に作成してテスト済みです。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
2 つの問題: まず、APPLICATION 内で CONTAINER クラスをインスタンス化できますが、呼び出すときに
create container.make
container.addCritter(myCritter)
2 行目に前提条件の無効なインデックス違反エラーが表示されます。これは、配列の上限と下限を設定していないことが原因である可能性があります。ただし、そうしようとすると、構文エラーが発生します。この問題を解決する方法はどれですか?
次に、配列からオブジェクトを削除するために、インデックス値を取得できれば役立ちますが、何か不足していない限り、これを行う関数は見当たりません。