Методы в Фаро - PullRequest
       11

Методы в Фаро

0 голосов
/ 10 января 2019

Я все еще изучаю Pharo, но это немного сбивает с толку. Существует два класса CarRental и Car и класс Test, CarRentalTest.

Есть фиксированное количество автомобилей, один и тот же автомобиль нельзя арендовать дважды, у меня есть код, но есть ошибка.

| carRental redPanda yellowPanda blackTesla |
    carRental := CarRental new.
    redPanda := Car panda.
    yellowPanda := Car panda.
    blackTesla := Car tesla.
    carRental
        addCar: redPanda;
        addCar: yellowPanda;
        addCar: blackTesla.
    self assert: carRental availableCars size equals: 3.
    carRental rent: redPanda days: 5.
    self assert: carRental availableCars size equals: 2.
    self assert: carRental rentedCars size equals: 1

Я попытался инициализировать методы availableCars и rentedCard, но проблема все еще существует.

1 Ответ

0 голосов
/ 10 января 2019

Вам нужно следить за арендованными автомобилями, верно? Для этого добавьте ivar rented в класс CarRental и инициализируйте его в пустую коллекцию:

rented := OrderedCollection new.

(другими словами, включите строку выше в методе #initialize - сторона экземпляра.)

Теперь, каждый раз, когда вы арендуете автомобиль, добавляйте его в коллекцию rented:

rent: aCar
  rented add: aCar

и когда машина возвращается

return: aCar
  rented remove: aCar

Также вы можете добавить метод получения, который до сих пор отсутствовал

rentedCars
  ^rented

и вычислите автомобили, доступные для аренды, как

availableCars
  ^cars copyWithoutAll: rented
...