No entanto, sabemos que isso só é verdade enquanto o botijão não esgotar. Então vamos redefinir:
ALGORITMO FornecerGás
SE quantidadeDeGás > 1 ENTÃO
quantidadeDeGás <- quantidadeDeGás – 1
RETORNA 1
SENÃO
RETORNA 0
FIMALGORITMO
É importante que esse algoritmo seja consistente. Se os dados estiverem encapsulados por métodos consistentes, esses dados sempre serão, conseqüentemente, consistentes.
Agora chegou a hora de esclarecermos como funciona o polimorfismo. Lembra do vizinho? Do fogão vermelho? Pois bem. Foi dito que não importava como o fogão iria produzir as chamas pro nosso amigo vizinho, desde que ele produzisse. No nível de especificação, isso é o mesmo que dizer: não importa o método, importa a operação, ou seja, mesmo que você tenha uma classe que já possua uma forma definida de fazer uma coisa (um algoritmo), você pode redefinir como uma sub-classe faz essa coisa (um novo algoritmo). Que doidera!
Qual seria uma forma prática de encapsular atributos?