Buscar

Aula 03 - Encapsulamento

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

FATEC - SP
FACULDADE DE TECNOLOGIA
DE SÃO PAULO
	CAMPUS
	
	
	Carapicuíba
	PROG. ORIENTADO A OBJETOS I
	Aula 03
	Professor: Glauber da Rocha Balthazar
E-mail: professorglauberbalthazar@yahoo.com.br
- Encapsulamento
– Encapsulamento
De acordo com Bezerra (2003) Encapsulamento é o empacotamento dos atributos e dos métodos numa mesma classe. Isso protege os dados contra a corrupção, pois somente os métodos dessa classe poderão acessar alterar suas estruturas de dados, conforme ilustrado a seguir na Figura 1.
Figura 1 - Dados encapsulados
	Bezerra (2003) dá um exemplo referindo-se a um rádio toca fitas, veja: 
Por exemplo, existe um número determinado de coisas que se pode fazer com um toca-fitas. Pode-se avançar, voltar, gravar, tocar, parar, interromper e ejetar a fita. Dentro do toca-fitas, porém, há outras funções sendo realizadas como: acionar o motor, desligá-lo, acionar o cabeçote de gravação, liberar o cabeçote, e outras operações mais complexas. Essas funções são escondidas dentro do mecanismo do toca-fitas e não é possível acessá-las diretamente. Quando o botão play é pressionado, o motor é ligado e o cabeçote de reprodução acionado, mas não é necessário saber como isso é feito para usar o toca-fitas.
Uma das principais vantagens do encapsulamento é esconder a complexidade do código, outra, é proteger os dados. Permitindo o acesso a eles apenas através de métodos evita que seus dados sejam corrompidos por aplicações externas.
No exemplo do toca-fitas, quando é utilizado o método gravar, sabe-se que o aparelho irá gravar informações na fita em um formato padrão que poderá ser lido por outros aparelhos similares. Se não existisse o método gravar e fosse necessário acessar diretamente a fita, cada pessoa poderia estabelecer uma maneira diferente de gravar informações (usando laser, ímãs, etc.). Gravar uma fita passaria a ser uma tarefa complicada, pois o usuário teria que conhecer toda a complexidade do aparelho. Depois, perderia a compatibilidade, pois não haveria uma forma de proteger os dados para que fossem sempre gravados em um formato padrão. O encapsulamento funciona então, tanto para proteger os dados como para simplificar o uso do objeto.
	
	De acordo com Medina (2007) quando usado cuidadosamente, o encapsulamento transforma seus objetos em componentes “plugáveis”. Para que outro objeto use seu componente, ele só precisa saber como usar a interface pública do componente. Tal independência tem três vantagens importantes: 
Independência: significa que você pode reutilizar o objeto em qualquer lugar. Quando você encapsular corretamente seus objetos, eles não estarão vinculados a nenhum programa em particular. Em vez disso, você pode usá-los sempre que seu uso fizer sentido. Para usar o objeto em qualquer lugar, você simplesmente exerce sua interface. 
Transparência: o encapsulamento permite que você torne transparentes as alterações em seu objeto. Desde que você não altere sua interface, todas as alterações permanecerão transparentes para aqueles que estiverem usando o objeto. O encapsulamento permite que você atualize seu componente, forneça uma implementação mais eficiente ou corrija erros – tudo isso sem ter de tocar nos outros objetos de seu programa. Os usuários de seu objeto se beneficiarão automaticamente de todas as alterações que você fizer. 
Baixa coesão: usar um objeto encapsulado não causará efeitos colaterais inesperados entre os objetos e o restante do programa. Como o objeto tem implementação independente, ele não terá nenhuma outra interação com o restante do programa, além de sua interface.
Enfim, vantagens:
Proteger os atributos do objeto quanto àmanipulação por outros objetos (proteção contra acesso não­autorizado, valores inconsistentes, entre outras possibilidades).
Esconder a estrutura interna do objeto de modo que a interação com este objeto seja relativamente simples e, à medida do possível, siga um padrão de desenvolvimento que facilite o entendimento dos programadores que o utilizem.
�
– Abstração de dados e encapsulamento
	As classes, normalmente, ocultam os detalhes de implementação dos seus usuários. Isso se chama ocultamento de informações. Exemplo: 
O motorista de um veículo ao fazer uso do motor do carro está usando o motor para se  locomover, porém não precisa saber dos seus detalhes de funcionamento.
 
– Exercícios
Descreva os atributos e métodos para as classes a seguir:
Responda: como a teoria da técnica do encapsulamento é utilizada em cada uma das duas classes?
Responda as perguntas:
Um objeto carro pode conter um objeto toca-fitas (ou seja, um carro pode ter um toca-fitas dentro dele)? 
Se sim, o que o objeto toca-fitas precisa saber do objeto carro para trocar informações (enviar o som da fita para a caixa de som do carro)?
�
– Revisão
Objetos
Formalmente, um objeto é algo que possui:
"um estado": que é normalmente implementado através de seu conjunto de propriedades (denominadas atributos), com os valores das propriedades, mais as ligações que o objeto pode ter com outros objetos;
"uma identidade única": identidade é a propriedade de um objeto que distingue-o de outros objetos. Identidade não é o nome do objeto, nem o endereço de memória onde ele está armazenado, é um conceito de linguagens de programação que não é visível para os “usuários”. e 
"um comportamento": o comportamento define como um objeto reage às requisições de outros objetos, em termos de mudanças de estados e passagem de mensagens.
Classes
É a descrição de um grupo de objetos com propriedades similares (atributos), comportamento comum(operações) , relacionamentos com outros objetos e semânticas idênticas.
	Enquanto um objeto individual é uma entidade concreta que executa algum papel no sistema, uma classe captura a estrutura e comportamento comum a todos os objetos que estão relacionados.
	Uma classe define a estrutura e o comportamento de qualquer objeto da classe, atuando como um padrão para a construção de objetos. Objetos podem ser agrupados em classes.
	A definição da classe consiste na definição dos atributos e operações dos objetos desta classe; Um atributo é uma característica de uma classe. Atributos não apresentam comportamento, eles definem a estrutura da classe; Operações caracterizam o comportamento de um objeto, e são o único meio de acessar, manipular e modificar os atributos de um objeto.
�
– Exercícios
Para Alan Kay, um sistema deveria se comportar como uma célula que troca informações com outras células. Para que esta troca de informações ocorra entre objetos é necessário que ocorra a comunicação entre os objetos. Por exemplo, observe as duas classes abaixo:
	Neste modelo a criança possui o comportamento de chutar e a bola de rolar. Para que estas duas "células" se comuniquem a criança precisa através do comportamento chutar ativar (ou chamar, ou executar, o que preferir) o comportamento rolar da bola. 
	Na prática a criança apenas encolhe a perna acumulando o máximo de energia possível e, logo em seguida, descarrega toda esta energia direcionando o pé, da mesma perna, à bola. A bola, por sua vez, recebe esta carga de energia e responde ao estímulo e realiza a única ação possível a ela atribuída: rolar.
	Baseado no conceito de encapsulamento visto anteriormente explique como ele é aplicado nos contextos abaixo (atente-se aos atributos também!):
a)
b)
Medico - Paciente
c)
Motorista - Onibus
�
Referencial Bibliográfico
BEZERRA, Eduardo. Princípios de Análise e Projeto de Sistemas com UML - 2ª edição. Editora Campus / Elsevier, 2003.
MEDINA, Roseclea Duarte. Curso RIVED: Encapsulamento. Universidade Federal de Santa Maria. Centro de Tecnologia - Departamento de Eletrônica e computação, 2007. Acessado em <15/01/13>. Disponível em <http://www-usr.inf.ufsm.br/~rose/curso3/cafe/cap2_Encapsulamento.pdf>.

Outros materiais