0%
Pular para o conteúdo principal
0%

3.1 Atribuição e Estado Local

Ordinariamente vemos o mundo como povoado por objetos independentes, cada um dos quais tem um estado que muda ao longo do tempo. Diz-se que um objeto "tem estado" se seu comportamento é influenciado por sua história. Uma conta bancária, por exemplo, tem estado na medida em que a resposta à pergunta "Posso sacar $100?" depende do histórico de transações de depósito e saque. Podemos caracterizar o estado de um objeto por uma ou mais variáveis de estado, que entre elas mantêm informação suficiente sobre o histórico para determinar o comportamento atual do objeto. Em um sistema bancário simples, poderíamos caracterizar o estado de uma conta por um saldo atual em vez de lembrar todo o histórico de transações da conta.

Em um sistema composto por muitos objetos, os objetos raramente são completamente independentes. Cada um pode influenciar os estados dos outros através de interações, que servem para acoplar as variáveis de estado de um objeto às de outros objetos. De fato, a visão de que um sistema é composto de objetos separados é mais útil quando as variáveis de estado do sistema podem ser agrupadas em subsistemas fortemente acoplados que estão apenas fracamente acoplados a outros subsistemas.

Esta visão de um sistema pode ser uma estrutura poderosa para organizar modelos computacionais do sistema. Para que tal modelo seja modular, ele deve ser decomposto em objetos computacionais que modelam os objetos reais no sistema. Cada objeto computacional deve ter suas próprias variáveis de estado local descrevendo o estado do objeto real. Como os estados dos objetos no sistema sendo modelado mudam ao longo do tempo, as variáveis de estado dos objetos computacionais correspondentes também devem mudar. Se escolhermos modelar o fluxo de tempo no sistema pelo tempo decorrido no computador, então devemos ter uma maneira de construir objetos computacionais cujos comportamentos mudam à medida que nossos programas são executados. Em particular, se desejamos modelar variáveis de estado por nomes simbólicos ordinários na linguagem de programação, então a linguagem deve fornecer uma operação de atribuição para nos permitir mudar o valor associado a um nome.