Você está na página 1de 17

Captulo 2 - Encapsulamento

1.

ENCAPSULAMENTO: NO MOSTRE AS CARTAS DO SEU BARALHO......................................... 1 1.1 O QUE O ENCAPSULAMENTO? ................................................................................................................... 1 1.2 NVEIS DE ACESSO ....................................................................................................................................... 3 1.3 POR QUE ENCAPSULAR?............................................................................................................................... 3 1.4 TRS CARACTERSTICAS DO ENCAPSULAMENTO EFICAZ .............................................................................. 4 Abstrao ............................................................................................................................................................. 4 Ocultao da implementao............................................................................................................................... 6 Diviso da responsabilidade.............................................................................................................................. 10 1.5 DICAS E ARMADILHAS DO ENCAPSULAMENTO ........................................................................................... 12 Dicas e armadilhas da abstrao....................................................................................................................... 12 Dicas e armadilhas do Tipo Abstrato de Dados ................................................................................................ 12 Dicas da ocultao da implementao .............................................................................................................. 12 1.6 ENCAPSULAMENTO E OS OBJETIVOS DA ORIENTAO A OBJETOS ............................................................. 12 1.7 RESUMO .................................................................................................................................................... 13 1.8 PERGUNTAS E RESPOSTAS ......................................................................................................................... 14 1.9 PERGUNTAS - EXERCCIOS ......................................................................................................................... 14

1. Encapsulamento: No mostre as cartas do seu baralho


1.1 O que o encapsulamento?
Em vez de ver um programa como uma nica entidade grande e monoltica, o encapsulamento permite que voc o divida em vrias partes menores e independentes. Cada parte possui implementao e realiza seu trabalho independentemente das outras partes. O encapsulamento mantm essa independncia, ocultando os detalhes internos, ou seja, a implementao de cada parte, atravs de uma interface externa. O encapsulamento permite a visualizao de uma entidade de software como uma caixa preta. Voc sabe o que a caixa preta faz, pois conhece sua interface externa e, simplesmente, envia mensagens para a caixa preta, no se preocupando com o que acontece dentro dela; voc apenas se preocupa com o fato de que isso acontea.

MENSAGEM

MENSAGEM INTERFACE INTERFACE INTERFACE

MENSAGEM

INTERFACE

?
INTERFACE

INTERFACE

MENSAGEM MENSAGEM MENSAGEM

Uma interface lista os servios fornecidos por um componente. A interface um contrato com o mundo exterior, que define exatamente o que uma entidade externa pode fazer com o objeto. Uma interface o painel de controle do objeto. Talvez voc esteja familiarizado com o termo de programao API (Interface de Programa Aplicativo). Uma interface semelhante a API para um objeto. A interface lista todos os mtodos e argumentos que o objeto entende. A implementao define como um componente realmente fornece um servio e os detalhes internos desse componente.
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 1

Veja, a seguir um exemplo de interface e implementao. Actionscript


/* * Relata mensagens de depurao, informativas, de alerta e de erro * */ class Log { public function debug(message:String) { imprime("DEBUG", message); } public function info(message:String) { imprime("INFO", message); } public function warning(message:String) { imprime("WARNING", message); } public function error(message:String) { imprime("ERROR", message); } public function fatal(message:String) { imprime("FATAL", message); } private function imprime(message:String, severity:String) { trace(severity+": "+message); } }

Java
/* * Relata mensagens de depurao, informativas, de alerta e de erro * */ public class Log { public void debug( String message ) { imprime( "DEBUG", message); } public void info( String message ) { imprime( "INFO", message); } public void warning( String message ) { imprime( "WARNING", message); } public void error( String message ) { imprime( "ERROR", message); } public void fatal( String message ) { imprime( "FATAL", message); } private void imprime( String message, String severity) { System.out.println(severity + ": "+ message); } }

A classe Log contm objetos para relatar mensagens de depurao, informativas, de alerta e de erro, durante a execuo. A interface da classe Log constituda de todos
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 2

os comportamentos disponveis para o mundo exterior. Os comportamentos disponveis para o mundo exterior so conhecidos como interface pblica. A interface pblica da classe Log inclui os seguintes mtodos: public void debug( String message ) public void info( String message ) public void warning( String message ) public void error( String message ) public void fatal( String message )

Tudo mais na definio da classe, alm dessas cinco declaraes de mtodo, implementao. Lembre-se de que a implementao define como algo feito, ao contrrio a interface define o contrato com o mundo exterior.

1.2 Nveis de acesso


H dois principais nveis de acesso no Flash, que so: 1. Pblico (public) Garante acesso a todos os objetos. Garante o acesso apenas para a instncia, ou seja, para aquele objeto. 2. Privado (private)

1.3 Por que encapsular?


Quando usado cuidadosamente, o encapsulamento transforma seus objetos em componentes plugveis. Para que outro objeto use seu componente, ele s precisa saber como usar a interface pblica do componente. Tal independncia tem trs vantagens importantes: 1. Independncia significa que voc pode reutilizar o objeto em qualquer lugar. Quando voc encapsular corretamente seus objetos, eles no estaro vinculados a nenhum programa em particular. Em vez disso, voc pode uslos sempre que seu uso fizer sentido. Para usar o objeto em qualquer lugar, voc simplesmente exerce sua interface. 2. O encapsulamento permite que voc torne transparentes as alteraes em seu objeto. Desde que voc no altere sua interface, todas as alteraes permanecero transparentes para aqueles que estiverem usando o objeto. O encapsulamento permite que voc atualize seu componente, fornea uma implementao mais eficiente ou corrija erros tudo isso sem ter de tocar nos outros objetos de seu programa. Os usurios de seu objeto se beneficiaro automaticamente de todas as alteraes que voc fizer. 3. Usar um objeto encapsulado no causar efeitos colaterais inesperados entre os objetos e o restante do programa. Como o objeto tem implementao independente, ele no ter nenhuma outra interao com o restante do programa, alm de sua interface.
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 3

1.4 Trs caractersticas do encapsulamento eficaz


As trs caractersticas do encapsulamento eficaz so: Abstrao Ocultao da implementao Diviso da responsabilidade

Abstrao

Abstrao o processo de simplificar um problema difcil. Quando se comea a resolver um problema, voc no se preocupa com cada detalhe. Em vez disso, voc o simplifica, tratando apenas dos detalhes pertinentes a uma soluo. A abstrao possui duas vantagens. Primeiro, ela permite que voc resolva um problema facilmente. Mais importante, a abstrao o ajuda a obter reutilizao, caracterstica que deve ser indispensvel quando se pensa em Flash, j que precisamos de arquivos leves e eficientes. Muitas vezes, os componentes de software so demasiadamente especializados. Essa especializao, combinada com uma interdependncia desnecessria entre os componentes, torna difcil reutilizar um cdigo existente em outra parte. Quando possvel voc deve se esforar por criar objetos que possam resolver um domnio inteiro de problemas. A abstrao permite que voc resolva um problema uma vez e depois use essa soluo por todo o domnio desse problema. Embora seja desejvel escrever cdigo abstrato e evitar uma especializao demasiada, complexo escrever cdigo em um nvel que combine estas duas caractersticas, especialmente quando voc est comeando a praticar POO. Existe uma linha tnue entre muita e pouca especializao. Essa linha pode ser discernida apenas com a experincia. Entretanto, voc precisa saber desse poderoso conceito. Vejamos a seguir dois exemplos de abstrao: 1. Exemplo de uma fila de banco Imagine pessoas em uma fila de banco, esperando por um caixa. Assim que um caixa se torna disponvel, a primeira pessoa da fila avana para a janela aberta. As pessoas sempre deixam a fila na ordem em que entraram nela, ou seja, o primeiro a entrar o primeiro a sair (first in, first out FIFO conceito de fila), sendo que essa ordem sempre mantida.

2. Exemplo de montagem de sanduches em um fast food


Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 4

Considere um estabelecimento de sanduches do tipo fast food. Quando um novo sanduche fica pronto, ele colocado atrs do ltimo sanduche que est no escaninho; desse modo, o primeiro sanduche retirado tambm o mais antigo (o primeiro que entra o primeiro que sai), FIFO o esquema do restaurante.

Embora cada um desses exemplos seja especficos, voc pode encontrar uma descrio genrica que funcione em cada situao. Ou seja, voc pode chegar a uma abstrao. Cada domnio um exemplo de fila do tipo primeiro a entrar, primeiro a sair (FIFO). No importa quantos elementos apaream na fila. Importa que os elementos entram no final da fila e saem dela a partir da frente, conforme ilustrado abaixo:

ENTRADA

SADA

Abstraindo os domnios, voc pode criar uma fila uma vez e reutiliz-la em qualquer problema que modele um domnio onde exista uma ordenao FIFO de elementos. Para obter uma abstrao eficaz voc deve seguir as seguintes dicas: 1. Trate do caso geral e no do caso especfico. A abstrao pode no saltar sua frente na 1, 2 ou 3 vez que voc resolver um problema que est sujeito a ser abstrado. Portanto no caia na paralisia da abstrao. O uso incorreto da abstrao pode lev-lo a: prazos finais perdidos e abstrao incorreta. 2. Ao confrontar vrios problemas procure o que for comum a todos. (enxergar um conceito). Mas para no se perder tenha em mente o objetivo de resolver seu problema primeiro. 3. No se esquea de que voc tem um problema a resolver. A abstrao valiosa, mas no descuide do problema na esperana de escrever cdigo abstrato. Veja a abstrao como bnus e no como um objetivo final.
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 5

4. Prepare-se para a falha. quase impossvel escrever uma abstrao que funcione em todas as situaes. Para a abstrao a experincia um ponto muito importante.

Ocultao da implementao

A abstrao apenas uma caracterstica do encapsulamento eficaz. Voc pode escrever cdigo abstrato que no encapsulado. Em vez disso, voc tambm precisa ocultar as implementaes internas de seus objetos. A ocultao da implementao tem duas vantagens: 1. Ela protege o seu objeto de seus usurios; 2. Ela protege os usurios de seu objeto do prprio objeto; Tipo Abstrato de Dados TAD Explorando a primeira vantagem podemos proteger seu objeto atravs da utilizao do Tipo Abstrato de Dados (TAD). O TAD foi introduzido atravs da linguagem Simula em 1966. Na verdade, os TADs so decididamente no Orientados a Objetos; em vez disso, eles formam um sub conjunto da Orientao a Objetos. Entretanto, os TADs apresentam duas caractersticas interessantes: abstrao e tipo. essa idia de tipo que importante, pois sem ela, voc no pode ter um verdadeiro encapsulamento (que imposto em nvel de linguagem, atravs de construes internas da linguagem). Um TAD um conjunto de dados e um conjunto de operaes sobre esses dados. Os TADs permitem que voc defina novos tipos na linguagem, ocultando dados internos e o estado, atravs de uma interface bem definida. Essa interface apresenta o TAD como uma nica unidade atmica (ou seja, uma unidade independente pensando na soma de dois inteiros, voc pensa apenas a respeito da adio de dois nmeros; mesmo que os bits representem o inteiro, a linguagem de programao apresenta o inteiro apenas como um nmero para o programador). O que um tipo?

Os tipos definem as diferentes espcies de valores que esto disponveis para seus programas. Exemplos de alguns tipos comuns so: Number, Boolean, String. Essas definies de tipo informam exatamente quais espcies de tipos esto disponveis, o que os tipos fazem e o que voc pode fazer com eles. Usaremos a seguinte definio para tipo: Os tipos definem as diferentes espcies de valores que voc pode usar em seus programas. Um tipo define o domnio a partir do qual seus valores vlidos podem ser extrados. Para inteiros positivos, so os nmeros sem partes fracionrias e que so maiores ou iguais a zero. Para tipos estruturados, a definio mais complexa. Alm do domnio, a definio de tipo inclui quais operaes so vlidas no tipo e quais so seus resultados. Pegue o exemplo do objeto Item do captulo anterior. A criao da classe Item adiciona um novo tipo em seu vocabulrio de programao. Em vez de pensar a respeito de uma id, uma descrio e um preo do produto como entidades separadas, provavelmente regies desconectadas da memria ou variveis, voc pensa
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 6

simplesmente em termos de Item. Assim, os tipos permitem representar estruturas complexas em um nvel mais simples e mais conceitual. Eles o protegem dos detalhes desnecessrios. Isso o libera para trabalhar no nvel do problema, em vez de trabalhar no nvel da implementao. Outra vantagem importante que a definio de um tipo protege o tipo do programador. Uma definio de tipo garante que qualquer objeto que interaja com o tipo, o faa de maneira correta, consistente e segura. As restries impostas por um tipo impedem os objetos de terem uma interao inconsistente, possivelmente destrutiva. A declarao de um tipo impede que o tipo seja usado de maneira no projetada e arbitrria. Uma declarao de tipo garante uso correto. Pense novamente no objeto Item do primeiro captulo. Imagine que tivssemos alterado um pouco a definio de Item: Actionscript
class UnencapsulatedItem { //ATRIBUTOS - INICIO public var unit_price :Number = 0; //uma porcentagem de discount //que se aplica ao preo public var discount:Number = 0; public var quantity:Number = 0; public var description:String; public var id :String; //ATRIBUTOS - FIM //CONSTRUTORES - INICIO public function Item (id:String , description:String , quantity:Number , price: Number) { this.id = id; this.description = description; this.unit_price = price; setQuantity(quantity); } //CONSTRUTORES - FIM public { function setDiscont(valor:Number) if ( (valor <= 1) && (valor >= 0) ) { this.discount = discount; }else{ this.discount = 0; } } public function getDiscont():Number { return discount; } public function getAdjustedTotal():Number { var total:Number = unit_price * quantity; var total_discount :Number = total * discount;
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 7

var adjusted_total :Number = total - total_discount ; } //.. } return adjusted_total;

Java
public class UnencapsulatedItem { public double unit_price; public double discount; //uma % de desconto a ser aplicada no preo public int quantity; public String description; public String id; public UnencapsulatedItem (String id, String description, int quantity, double price) { this.id = id; this.description = description; this.unit_price = price; this.quantity = quantity; } public double getAdjustedTotal() { double total = unit_price * quantity; double total_discount = total * discount; double adjusted_total = total - total_discount; } return adjusted_total;

public void setDiscont (double value) { if ( (value <= 1) && (value >= 0) ) { this.discount = discount; } else { this.discount = 0; } } public double getDiscont() { return discount; } //... }

Voc notar que todas as variveis internas, agora, esto publicamente disponveis. E se algum escrevesse o programa a seguir, usando o novo UnencapsulatedItem: Crie um novo documento Flash chamado encapsulamentoIncorreto

Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML.

Pgina 8

Actionscript
var monitor = new UnencapsulatedItem("eletronico-015", "17\" SVGA Monitor", 1, 674.32); monitor.discount = 1.25; //invlido, o desconto deve ser menor do que 100% var price = monitor.getAdjustedTotal(); trace("Total incorreto: $"+price); monitor.setDiscont(1.25); // invlido, mas o erro capturado price = monitor.getAdjustedTotal(); trace("Total correto: $"+price);

Java
public class Executor { /* * Ponto de entrada da Aplicao * */ public static void main(String[] args) { UnencapsulatedItem monitor = new UnencapsulatedItem( "eletronico015","17\" SVGA Monitor",1,674.32); monitor.discount = 1.25;//invlido, o desconto deve ser menor do que 100% double price = monitor.getAdjustedTotal(); System.out.println("Total incorreto: $" + price); monitor.setDiscont(1.25);// invlido, mas o erro capturado price = monitor.getAdjustedTotal(); System.out.println("Total correto: $" + price); } }

A figura abaixo mostra o que acontece quando executado o arquivo de teste encapsulamentoIncorreto.

Abrindo o tipo UnencapsulatedItem para acesso liberado, outros podem chegar e deixar uma instncia desse objeto em um estado invlido. Nesse caso, o documento FLA cria uma instncia desse objeto e aplica diretamente um desconto invlido. O resultado um preo negativo ajustado.

Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML.

Pgina 9

Podemos usar os mtodos set e get para fazer o encapsulamento, exemplo: Sem get e set function getNome():String { return nomeUsuario; } function setNomeUsuario(nome:String):Void { nomeUsuario = nome; } // Chamando mtodo var nome = obj.getNome(); // Chamando mtodo obj.setNomeUsuario("Joo"); Com os mtodos get e set function get usuario():String { return nomeUsuario; } function set usuario(nome:String):Void { nomeUsuario = nome; } //Modo de acesso var nome = obj.usuario; obj.usuario = "Joo"; Obs: - O mtodo get no pode ter parmetros - O nome do mtodo get pode ter o mesmo nome do mtodo set no mesmo escopo.

Diviso da responsabilidade
Diviso da responsabilidade correta significa que cada objeto deve executar uma funo sua responsabilidade e execut-la bem. A diviso da responsabilidade correta leva ao objeto coesivo. Ou seja, no faz sentido encapsular muitas funes aleatrias e variveis. H a necessidade de um forte
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 10

vnculo conceitual entre si. Todas as funes devem trabalhar no sentido de uma responsabilidade comum. Ocultao da implementao e diviso da responsabilidade andam lado a lado. Se a implementao ficar aberta para o mundo exterior, um usurio poder comear a atuar diretamente na implementao duplicando assim a responsabilidade. Assim que dois objetos comeam a fazer a mesma tarefa, voc sabe que no tem uma diviso correta de responsabilidades. Quando aparecer a lgica redundante preciso refazer o cdigo. Refazer o cdigo parte esperada do ciclo de desenvolvimento OO. O encapsulamento como o gerente eficiente. Como no mundo real, conhecimento e responsabilidade precisam ser delegados para aqueles que sabem como fazer o trabalho da melhor forma possvel. Um exemplo de erro de atribuio de responsabilidade seria um objeto Item que no soubesse calcular o total com desconto. Sendo assim, essa responsabilidade seria passada para o objeto que utilizasse Item, de maneira que esse objeto fosse o responsvel em dizer para o objeto Item como calcular o total sempre que necessrio, tendo assim uma ao como um gerente ineficiente. Chamar ou executar vrias funes para calcular o total ajustado, retira a responsabilidade do item e a coloca nas mos do usurio. Retirar a responsabilidade dessa maneira to ruim quanto expor implementaes internas. Voc permite que a responsabilidade duplicada se espalhe por todo o seu cdigo e para cada objeto que desejar calcular o total ajustado, precisar repetir a lgica do clculo. Quando voc tem objetos que no dividem corretamente a responsabilidade, cria-se o cdigo procedural, centrado nos dados. Se voc simplesmente enviar uma mensagem para um objeto e confiar que ele faa seu trabalho, esse o verdadeiro desenvolvimento orientado a objetos. O encapsulamento est diretamente ligado ocultao de detalhes. A responsabilidade coloca o conhecimento de certos detalhes no lugar ao qual eles pertencem. importante que os objetos tenham apenas uma ou um pequeno nmero de responsabilidades. Se um objeto possui um excesso de responsabilidades, sua implementao se tornar muito confusa e difcil de manter e entender. Para alterar uma responsabilidade, voc correr o risco de alterar outro comportamento inadvertidamente. Ele tambm centralizar muito conhecimento, que seria melhor gerenciado se fosse espalhado. Quando um objeto fica grande demais, ele quase se torna um programa completo e cai nas armadilhas procedurais. Como resultado, voc se depara com todos os problemas de um programa que no usasse nenhum encapsulamento. Quando voc verificar que um objeto executa mais de uma responsabilidade, precisar mover essa responsabilidade para seu prprio objeto. Encapsulamento efetivo acontece unindo trs grandes caractersticas da orientao a objetos: abstrao, ocultao da implementao e diviso de responsabilidades. Retire a abstrao e voc ter um cdigo que no reutilizvel. Retire a ocultao da implementao e voc ficar com um cdigo fortemente acoplado e frgil. Retire a responsabilidade e voc ficar com um cdigo centrado nos dados, procedural, fortemente acoplado e descentralizado.

Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML.

Pgina 11

1.5 Dicas e armadilhas do encapsulamento

Dicas e armadilhas da abstrao


impossvel escrever uma classe que satisfaa todos os usurios e cada situao. No caia na fixao da abstrao resolva seus problemas primeiro, caso contrrio pode-se perder nos prazos e pode criar abstraes incorretas. A abstrao deve direcion-lo a simplificao. Se voc perceber que no est simplificando o problema ao tentar abstrair voc certamente est em direo errada. No coloque em uma classe mais detalhes do que so necessrios para resolver o problema. A verdadeira abstrao normalmente nasce a partir de usos reais e no do fato de um programador se sentar e decidir criar um objeto reutilizvel. Normalmente os objetos reutilizveis so derivados de um cdigo amadurecido, que foi posto prova e que enfrentou muitas alteraes. Alm de que a verdadeira capacidade de abstrao tambm vem com a experincia.

Dicas e armadilhas do Tipo Abstrato de Dados

A transformao de um TAD em uma classe especfica da linguagem. Entretanto, existem algumas consideraes independentes da linguagem que voc pode fazer a respeito das classes. A maioria das linguagens OO fornece palavras-chave que o ajudaro a definir classes encapsuladas. Primeiro, existe a prpria definio de classe. A classe como o TAD, mas com alguns recursos importantes como herana e polimorfismo que voc ver no decorrer do curso. Dentro de uma classe, normalmente voc tem mtodos e variveis internos os dados. O acesso a essas variveis e mtodos fornecido por funes de acesso. Tudo na interface do TAD deve parecer fazer parte da interface pblica do objeto.

Dicas da ocultao da implementao


Apenas os mtodos que voc pretende que outros usem devem estar na interface pblica. Voc sempre deve ocultar as variveis internas, a no ser que elas sejam constantes. Cremos que elas no devem estar apenas ocultas, mas tambm acessvel apenas para a prpria classe. No crie interfaces que apresentam apenas a representao interna com um nome diferente. A interface deve apresentar comportamentos de alto nvel.

1.6 Encapsulamento e os objetivos da Orientao a Objetos


Os objetivos da programao orientada a objetos so produzir software: 1. Natural 2. Confivel
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 12

3. Reutilizvel 4. Manutenvel 5. Extensvel 6. Oportunos O encapsulamento atende cada um desses objetivos: Natural O encapsulamento permite dividir a responsabilidade da maneira como as pessoas pensam naturalmente. Atravs da abstrao, voc fica livre para modelar o problema em termos do prprio problema e no em termos de alguma implementao especfica. A abstrao permite que voc pense no programa de maneira geral. Confivel Isolando a responsabilidade e ocultando a implementao, voc pode validar cada componente individualmente. Quando um componente for validado, voc poder us-lo com confiana. Isso possibilita testes de unidade completos. Voc ainda precisa realizar testes de integrao, para certificar-se de que o software construdo funciona corretamente. Reutilizvel A abstrao fornece cdigo flexvel e utilizvel em mais de uma situao. Manutenvel O cdigo encapsulado mais fcil de manter. Voc pode fazer qualquer alterao que queira na implementao de uma classe, sem danificar cdigo dependente. Essas alteraes podem incluir mudanas na implementao, assim como a adio de novos mtodos na interface. Apenas as alteraes que violam a semntica da interface exigiro mudanas no cdigo dependente. Extensvel Voc pode mudar implementaes sem danificar cdigo. Como resultado, voc pode fazer melhorias de desempenho e mudar funcionalidades sem danificar o cdigo existente. Alm disso, como a implementao fica oculta, o cdigo que usar o componente ser atualizado automaticamente, para tirar proveito de todos os novos recursos que voc introduzir. Se voc fizer tais alteraes, certifique-se de fazer os testes de unidade novamente! Danificar um objeto pode ter um efeito domin por todo o cdigo que use o objeto. Oportunos Dividindo seu software em partes independentes, voc pode dividir a tarefa de criar as partes entre vrios desenvolvedores, acelerando assim o desenvolvimento. Uma vez que esses componentes estejam construdos e validados, eles no precisaro ser reconstrudos. Assim, o programador fica livre para reutilizar funcionalidades, sem ter de recri-las.

1.7 Resumo
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 13

Usando encapsulamento, voc pode tirar proveito das vantagens da abstrao, da ocultao da implementao e da responsabilidade em seu cdigo dirio. Com a abstrao, voc pode escrever objetos que so teis em varias situaes. Se voc ocultar corretamente a implementao de seu objeto, estar livre para fazer quaisquer melhorias que queira em seu cdigo a qualquer momento. Finalmente, se voc dividir corretamente a responsabilidade entre seus objetos, evitar lgica duplicada e cdigo procedural. Observao: Um mtodo ou varivel definido como static pode ser utilizado em uma classe no instanciada, ou seja, um mtodo ou uma varivel da classe e no da instncia. Outra observao que dentro de um mtodo static no se pode utilizar variveis ou mtodos internos no static, pois eles apenas existem quando uma instncia da classe criada e no somente da classe.

1.8 Perguntas e Respostas


1) Como voc sabe quais mtodos deve incluir em uma interface? Essa uma tarefa simples. Pense somente nos mtodos que tornaro o objeto til, esses devem ser os mtodos a serem includos na interface. Pense somente nos mtodos necessrios para que o objeto faa seu trabalho. Quando voc comear a escrever uma interface, desejar produzir a menor interface que ainda satisfaa suas necessidades. Torne sua interface o mais simples possvel. No inclua mtodos que voc poderia precisar. Voc pode adicion-los quando realmente precisar deles. Conhea certos tipos de mtodos de convenincia. Se voc fizer um objeto conter outros objetos, normalmente desejar evitar a criao de mtodos que simplesmente encaminham uma chamada de mtodo para um dos objetos contidos. 2) Os modificadores de acesso tambm tm o papel de mecanismo de segurana? No. Os modificadores de acesso s restringem o modo como outros objetos podem interagir com determinado objeto. Os modificadores no tm nada a ver com a segurana do computador.

1.9 Perguntas - Exerccios


1) Como o encapsulamento atinge os objetivos da programao orientada a objetos? 2) Defina abstrao e d um exemplo demonstrando abstrao. 3) Defina implementao.
Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML. Pgina 14

4) Descreva a diferena entre interface e implementao. 5) Por que a diviso clara encapsulamento eficaz? da responsabilidade importante para o

6) Defina TAD (Tipo Abstrato de Dados). 7) Quais so alguns dos perigos inerentes abstrao?

Ao terminar de responder as questes acima, envie-as em um arquivo texto ao seu tutor.

Unidade 6B: Flash utilizando Orientao a Objetos e a linguagem XML.

Pgina 15

Você também pode gostar