Baixe o app para aproveitar ainda mais
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ãoautorizado, 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>.
Compartilhar