Modelagem e relacionamento
Encapsulamento
Sabemos que no mundo real um objeto pode interagir com outro sem conhecer seu funcionamento interno. Essa característica foi representada no paradigma orientado a objetos por meio do conceito de encapsulamento. Da mesma forma como foi exemplificado na Figura 2, o encapsulamento tem como característica separar os aspectos externos de determinado objeto, que podem ser acessados por outros objetos, dos detalhes internos de sua implementação, que ficam ocultos para os outros objetos. Por exemplo, uma pessoa que dirige um carro não precisa conhecer sua estrutura interna (motor, transmissão etc.). Desta forma, podemos concluir que abstraçäo e encapsulamento conceitos complementares:
Entre muitos benefícios que o encapsulamento pode proporcionar, podemos ressaltar o fato de ele permitir a criação de componentes desenvolvidos por fornecedores diferentes. Além disso, favorece os testes dos sistemas de software, resultando em um aumento da qualidade do sistema. Desenvolver componentes a partir do conceito do encapsulamento, e considerando que tais componentes possuem responsabilidades especificas, propicia um aspecto motivador denominado reusabilidade. Os benefícios da reusabilidade ou reutilização do componente de software estão relacionados à redução de custos e prazos do desenvolvimento de software (uma vez que o componente já se encontra pronto). Os componentes também permitem que sejam usados em vários projetos.
Um exemplo clássico para ilustrar esse problema é o saldo de uma conta bancária. Neste exemplo, é correto definir métodos específicos responsáveis pelos lançamentos de créditos e débitos, encapsulados em uma determinada classe. Com isso podemos ter uma classe denominada “conta-corrente”, contendo métodos responsáveis por creditar, debitar ou fornecer extrato. O saldo da conta fica armazenado em um dos atributos dessa classe, protegido da ação de qualquer outra classe que