Código
O encapsulamento tem como meta principal reduzir o número de variáveis globais usadas dentro de um programa. Uma variável global pode ser acessada a partir de qualquer parte de um programa. Por isso, uma mudança em uma variável global afeta todo o programa. Por outro lado, ao mudar a representação de um campo de uma classe, você só precisa mudar o código de alguns métodos dessa classe e nada mais. Por isso, o encapsulamento das alterações é na verdade ocultar as informações.
Vamos esclarecer essa idéia com um exemplo. Quando você tem um programa com vários formulários, pode torna alguns dados disponíveis para cada formulário, declarando-os como uma variável global na parte referente à interface da unidade de um dos formulários.
var Form1: TForm1; aux: integer;
Isso funciona, mas tem dois problemas. Primeiramente, os dados não estão conectados a uma instância específica do formulário, mas ao programa inteiro. Se você criar dois formulários do mesmo tipo, eles compartilharão os dados. Se você quiser que cada formulário do mesmo tipo tenha sua própria cópia dos dados, a única solução é incluí-lo na classe de formulário:
type TForm1 = class(TForm) public aux: integer; End;
O segundo é que, se definir os dados como um variável global ou como um campo public de um formulário, não poderá modificar sua implementação no futuro sem interferir no código que utiliza os dados. Por exemplo, se você precisa apenas ler o valor atual de outros formulários, pode declarar os dados como private e fornecer um método para ler o valor, como segue abaixo:
type TForm1 = class(TForm) public function Teste: integer; private aux: integer; end;
function TForm1.Teste: integer; begin Result := aux; end;
Por hoje é só pessoal. Até a semana que vem se Deus quiser.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009