Object subclass: #EstacaoServico
instanceVariableNames:
'lavagem alinhamento caixa '
classVariableNames: ''
poolDictionaries: '' !
!EstacaoServico class methods ! !
!EstacaoServico methods !
caixa
"caixa"
^caixa!
chegaCarro: aCar
"dummy"
aCar testaDireccao
ifFalse: [alinhamento chega: aCar]
ifTrue: [aCar testaLimpeza
ifFalse: [lavagem chega: aCar]
]!
getCaixa
"valor em caixa"
^caixa caixa!
getCarInAlinhamento: ind
"devolve o carro na posicao ind em alinhamento"
^alinhamento at: ind!
getCarInLavagem: ind
"devolve o carro na posicao ind em lavagem"
^lavagem at: ind!
listAlinhamento
"listar os carros em alinhamento"
| lista |
lista:= Queue new.
alinhamento do: [:carro| lista enqueue: carro matricula].
^lista!
listLavagem
"listar os carros em lavagem"
| lista |
lista:= Queue new.
lavagem do: [:carro| lista enqueue: carro matricula].
^lista!
registaAlinhamento
"regista a efectuacao de um alinhamento"
alinhamento sai!
registaLavagem
"regista a efectuacao de uma lavagem"
lavagem sai!
registaPagamento
"regista a efectuacao de um pagamento"
caixa sai!
start
"comecar"
Alinhamento setPreco: 10.
Lavagem setPreco: 20.
alinhamento := Alinhamento new.
caixa := Caixa new.
lavagem := Lavagem new.
self dependsOn: alinhamento; dependsOn: lavagem.!
update: aCar
"re-inserir carro"
aCar testaDireccao
ifFalse: [alinhamento chega: aCar]
ifTrue: [aCar testaLimpeza
ifFalse: [lavagem chega: aCar]
ifTrue: [caixa chega: aCar]
]! !