Download - ANALISE DE PROGRAMAÇÃO
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 1/79
1
ProgramaçãoOrientada a
ObjetosDefinição
Conceitos e Terminologias
Java Standard Edition
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 2/79
2
Motivação
Conforme visto, Java é uma linguagem OO Para desenvolver aplicações de qualidade em
Java é preciso aprender a aplicar princípiosde OO ao programar
É (quase) possível escrever programas em Java sem saber OO, mas Dificilmente você será capaz de ir além de
programinhas simples com mais de uma classe Será muito difícil entender outros códigos Seu código será difícil de entender, manter e
reutilizar Você estará perdendo ao utilizar uma linguagem
como Java (poderá usar outra mais simples para
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 3/79
3
Definição de POO
Segundo Robert Sebesta: “A essência da programação orientada a
objetos é resolver problemas identificandoos objetos do mundo real do problema e o
seu processamento necessário, criando,então, simulação dos mesmos, seus processos e as comunicações necessáriasentre eles...”
Segundo Grady Booch: “Programação orientada a objetos é ummétodo de implementação no qual
programas são organizados como
coleções cooperativas de objetos, cadaum representando uma instância de
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 4/79
4
Aspectos importantes da POO
Usa objetos, e não procedimentoscomo bloco lógico fundamental para aconstrução de programas
Cada objeto é uma instância de umaclasse
Objetos comunicam-se através demensagens
Classes são relacionadas com as outrasvia mecanismos de herança, formandouma hierarquia de classes
Exemplos de linguagens OO:
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 5/79
5
Conceitos e terminologia
Abstração Objetos Encapsulamento/Ocultação de
informação Estado e comportamento Classes Herança Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 6/79
6
Abstração
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 7/797
Abstração
Conceito de abstração: “Processo mental que consiste em
escolher ou isolar um aspectodeterminado de um estado de coisas
relativamente complexo, a fim desimplificar a sua avaliação, classificaçãoou para permitir a comunicação do mesmo[Dicionário Houassis]”
“Uma abstração denota as característicasessenciais de um objeto que o distinguemde outros tipos de objetos e assim provê
uma fronteira conceitual firmementedefinida, de acordo com a perspectiva do
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 8/798
Objetos
No mundo real.... Para um ser humano, um objeto é...
Algo tangível e/ou visível Algo que possa ser compreendido
intelectualmente Algo para o qual um pensamento ou ação possa ser direcionado
Um objeto modela alguma parte darealidade e é algo que existe no tempoe no espaço
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 9/799
Objetos
Para um programador... Um objeto representa uma entidade,
unidade ou item identificável, individual,real ou abstrato, com um papel bem
definido no domínio do problema no qualse quer resolver/solucionar [Booch]
Os objetos podem ser físicos...
Bicicleta, máquina de escrever, pessoa,sensor, ...
Ou não... Reação química, número complexo,
venda...
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 10/7910
Objetos
Nem tudo é um objeto Tempo, métricas, sensações e sentimentos
humanos não são, em geral, modeladoscomo objetos
Estes, normalmente, são tratados como propriedades dos objetos
Descobrir quais entidades fazem parte
do domínio do problema e identificar suas propriedades e comportamentos étarefa do programador e, sobretudo, devocês! (analistas de sistemas)
Isso vem com a ex eriência...
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 11/7911
Exemplos de objetos - propriedades
Objeto: ônibus Propriedades
Valores Velocidade: 112
Km/h Lugares....: 44 Marca......:
MERCEDES Km..........: 80.732
Km Eixos.......: 2
Objeto: poltrona
PropriedadesValores
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 12/7912
Exemplos de objetos - propriedades
Velocidade: 112Lugares....: 44Marca......: MERCEDESKm..........: 80.732 KmEixos.......: 2
Cor......: azullugares: 1Marca.: Artefacto
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 13/7913
Exemplos de objetos
Exemplo de um objeto em Java:class Onibus {
float velocidade;
int lugares;
String marca;
int quilometragem;
int eixos;
} // fim da classe
...
Onibus carro43, setusao, frescao;
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 14/7914
Objetos
Definição formal: Um objeto tem um estado,
comportamento e uma identidade; aestrutura e o comportamento de objetos
similares são definidos nas suas classes [Booch]
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 15/7915
Características de um objeto
Estado: Propriedades (geralmente estáticas)
Característica inerente ou distintiva quecontribui para a unicidade de um objeto
Valores (geralmente dinâmicos) Todas as propriedades possuem valores
que podem variar ao longo do tempo
“O estado de um objeto consiste de todasas propriedades do objeto mais os valoresatuais destas propriedades [Booch]”
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 16/7916
Características de um objeto
Comportamento: O comportamento de um objeto é
caracterizado pelo conjunto deoperações que o objeto é capaz de
executar (ou sua interface) Podemos imaginar os objetos como prestadores de serviços
Sempre que o objeto solicitar um serviçode outro objeto, deve enviar-lhe umamensagem
Se o objeto receptor for capaz de prestar
este serviço, ele então será executado
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 17/79
17
Exemplos de objetos
Exemplo: Suponha uma abstração para uma
lâmpada que deva exibir o seguintecomportamento: Informar se está acesa; Acender-se e Apagar-se.
Vamos construir isso em Java.
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 18/79
18
Exemplos de objetos
Exemplo de um objeto em Java:class Lampada extends Object {
boolean estaAcesa = false;
boolean getAcesa(){
...
}
void acende(){
...
}
void apaga(){
...
}
}
Estado
Comportamento
Método
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 19/79
19
Lampada l1, l2; l1
l2
l1 = new Lampada(); l1
l2 = new Lampada(); l2
l1.acende();
l2.apaga();
l1 = l2; l1
l2
if ( l1.getAcesa() ) {
Exemplos de objetos
Exemplo de um objeto em Java:
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 20/79
20
Identidade de um Objeto
Identidade Cada objeto é único e distinguível dos
demais independentemente dos valoresdos seus atributos
Para manipular os objetos, nos utilizamosde referências para os mesmos
Uma referência nada mais é do que uma
variável que “aponta” para um objeto dotipo para o qual foi declarada ou paraobjetos do subtipo deste tipo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 21/79
21
Identidade de um Objeto
Identidade Objetos são criados através de um processo chamado de instanciação, que, por sua vez, devolve um “ponteiro” para o
objeto criado. Erros comuns:
Confundir referência com identidade,variável com objeto
Confundir valores de atributos comidentidade
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 22/79
22
Ciclo de vida de um Objeto
A linha da vida de um objeto:1) Instanciação: o objeto é criado e passaa ser referenciado por um nome (suareferência);
2) Uso: o objeto recebe mensagens deoutros objetos e, com isso, executa parteda funcionalidade do sistema;
3) Destruição: a área de memóriaocupada pelo objeto é reclamada...todasas referências para o objetos ficamnulas.
A destruição de um objeto é realizada
E l Ci l d id d
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 23/79
23
Exemplo – Ciclo de vida de umObjeto
Exemplo de código Java:Quadrado q;
q = new Quadrado();
q.moverDireita(20);
q.mudarTamanho(5);
q.ficarVisivel(false);
q.mudarCor(“red”);
q = null;
E l Ci l d id d
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 24/79
24
Exemplo – Ciclo de vida de umObjeto
Esquematicamente:q
visivel:true
tamanho:28cor:“white”
new
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 25/79
25
Instanciação de Objetos
Definição Operação através da qual um objeto écriado e passa a existir na memória docomputador. A classe é o modelo ou a
fôrma utilizada para criar o objeto. Objeto versus referências Os objetos são manipulados através de
referências ou ponteiros que indicam onde
o objeto está localizado na memória docomputador Não há outra forma de chegar ao objeto
sem que seja via uma referência.
Lembre de Bruce Eckel e sua analogia do
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 26/79
26
Referências para objetos
A maioria dos objetos em um programa Java são acessados por variáveischamadas de referências
Como Java é uma linguagemfortemente tipada, estas variáveisdevem ser declaradas e tipificadas emtempo de compilação
Exemplos:String s;// s é do tipo String
Quadrado q1; // q1 é do tipo Quadrado
Cliente c; // c é um cliente
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 27/79
27
Referências para objetos
Referências são ponteiros para o objetoQuadrado q; // declaração
q = new Quadrado(); // instanciação
q.mudeTamanho(50); // usoq = null; // desprezo
q
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 28/79
28
Referências para objetos
Referências são ponteiros para o objetoQuadrado q; // declaração
q = new Quadrado(); // instanciação
q.mudeTamanho(50); // usoq = null; // desprezo
qtamanho: 30
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 29/79
29
Referências para objetos
Referências são ponteiros para o objetoQuadrado q; // declaração
q = new Quadrado(); // instanciação
q.mudeTamanho(50); // usoq = null; // desprezo
qtamanho: 50
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 30/79
30
Referências para objetos
Referências são ponteiros para o objetoQuadrado q; // declaração
q = new Quadrado(); // instanciação
q.mudeTamanho(50); // usoq = null; // desprezo
qtamanho: 50
Objeto sem
referência!
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 31/79
31
O que é uma Classe?
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 32/79
32
Classes
Definição: Local onde encontram-se definidas as propriedades (variáveis) e ocomportamento (métodos) que uma
categoria de objetos deve possuir Estrutura fundamental de programação
em Java!
Todo e qualquer programa Java devedefinir pelo menos uma classe Não há como escrever código Java sem
que haja a definição de classes
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 33/79
33
Classes
Toda classe define um novo tipo dedados Valores de um tipo definido por uma
classe recebem o nome de objetos
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 34/79
34
Exemplo de uma classe Java
Exemplo:class Cliente extends Object {
private String nome;
private String endereco;private char sexo;
}
Nome daclasse
Propriedades dosobjetos da classeCliente
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 35/79
35
Exemplo de uma classe Java
Instanciação da classe cliente:Cliente c1 = new Cliente();
Cliente c2 = new Cliente();
nome:
end.:
sexo:
c1
nome:
end.:
sexo:
c2
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 36/79
36
Importante!
A classe Cliente, como está, apenasdefine a estrutura dos objetos; isto é, as propriedades que os objetos do tipo
Cliente terão Esta classe é uma abstração de um cliente para um sistema computacional
O domínio do problema a ser resolvido é
que determina quais serão estas propriedades
Assim, uma forma de definir abstrações em Java é criar uma
classe!
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 37/79
37
Exemplo de uma classe Java
Ampliando a classe Cliente (inserindométodos):class Cliente extends Object {
private String nome;
private String endereco;private char sexo;
public void setNome( String novoNome ){
nome = novoNome;
}
}
Método
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 38/79
38
Métodos
Um método é um procedimento oufunção que permite aos objetos de umaclasse executarem serviços
É como o objeto implementa suasfuncionalidades
O envio de uma mensagem para umobjeto faz o método correspondente (de
mesmo nome) ser executado A mensagem é a ativação de um
método sobre o objeto
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 39/79
39
Métodos
Métodos podem ter parâmetros Métodos poder ler ( getXXX() ) ou
alterar ( setXXX() ) os valoresdas propriedades dos objetos Modificam, portanto, o estado de um
objeto Estes métodos, juntos, representam o
comportamento de um objeto ou o protocolo de uma classe
A implementação de um método utilizatodas as estruturas lógicas daro rama ão estruturada: decisão
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 40/79
40
Encapsulamento
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 41/79
41
Encapsulamento
A abstração de um objeto deve preceder (ter prioridade) à sua implementação A implementação, uma vez selecionada,
deve ser tratada como um segredo daabstração e, portanto, escondida dosclientes deste objeto
O encapsulamento serve para proteger
a abstração “Nenhuma parte de um sistema
complexo deve depender dos detalhes
internos de outras partes [Booch]”
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 42/79
42
Encapsulamento
Conceitos complementares: A abstração representa um conceito O encapsulamento, por sua vez, impede
os clientes de verem/conhecerem como
este conceito foi implementadointernamente
Para uma abstração realmente
funcionar, sua implementação deveestar encapsulada Os objetos são formados de duas partes:
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 43/79
43
Encapsulamento
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 44/79
44
Encapsulamento
A implementação não interessa à quem usaos objetos Papel do usuário de classes
Não precisa saber como a classe foi escrita,
apenas quais seus métodos, quais os parâmetros(quantidade, ordem e tipo) e os valores que sãoretornados
Usa apenas a interface pública da classe
Papel do desenvolvedor de classes Define novos tipos de dados Expõe, através dos métodos, todas as funções
necessárias aos usuários das classes e oculta oresto da implementação
Tem a liberdade de mudar a im lementa ão das
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 45/79
45
Encapsulamento
Definição: “Encapsulamento é o processo deesconder todos os detalhes deimplementação de um objeto que nãocontribuem para suas característicasessenciais” [Booch]
“A habilidade de mudar a representaçãode uma abstração sem perturbar quaisquer de seus clientes é o principalbenefício do encapsulamento” [Booch]
Lembre-se disto: “O encapsulamento previne acidentes,
não fraudes” [Stroustrup] “
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 46/79
46
Encapsulamento
Uma classe Java define um bloco deconstrução para encapsulamento de propriedades e métodos
Os métodos de uma classe deveriamacessar apenas as propriedades da
própria classe e nunca as de outraclasse
Promove coesão! Modificadores de acesso controlam a
visibilidade do encapsulamento de Java
public tudo que pode ser acessado de fora
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 47/79
47
Exemplo de uma classe Java
Visibilidade do encapsulamento deCliente:class Cliente extends Object {
private String nome;
private String endereco;
private char sexo;
public void setNome( String novoNome ){
nome = novoNome;
}
}
p ú b l i c
o
i n t e r n o
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 48/79
48
Exemplo de uma classe Java
Visibilidade do encapsulamento deCliente:class Venda {
private Cliente c;
...
public void mudeCliente( String novo ){
cli.nome = novo;
}
}
A propriedade nome é privativa daClasse cliente
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 49/79
49
Exemplo de uma classe Java
Visibilidade do encapsulamento deCliente:class Venda {
private Cliente c;
...
public void mudeCliente( String novo ){
cli.setNome(novo);
}
}
O método setNome() é público emcliente
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 50/79
50
Construtores e Destrutores
Algumas linguagens implementammétodos especiais Construtores: utilizados para criar e/ou
inicializar novos objetos Em Java e C++, os construtores recebem
o mesmo nome da classe Pode-se ter várias versões de construtores
em uma mesma classe; mudando a
quantidade e o tipo dos parâmetros Destrutores: usados para destruir
objetos
Não há métodos destrutores em Java
l d l
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 51/79
51
Exemplo de uma classe Java
Exemplo de um construtor:class Cliente extends Object {
private String nome;
private String endereco;
private char sexo;
public Cliente( String umNome, StringumEnd, char umSexo ) {
nome = umNome;
endereco = umEnd;
sexo = umSexo;
}
}
p ú b l i c
o
E l d l J
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 52/79
52
Exemplo de uma classe Java
Uso do construtor da classe Cliente:class Venda {
Cliente c, d;
c = new Cliente( “Bart”, “Tambaú”, ‘M’ );
...
d = new Cliente( “Maria”, “Bessa”, ‘F’ );
}
O construtor só é utilizado no momento dacriação de objetos
V iá i d l
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 53/79
53
Variáveis de classe
Uma classe pode ter variáveis contendoinformações úteis, como: Número de objetos instanciados pela
classe até certo instante Valor médio, mínimo e máximo de uma propriedade
Essas variáveis não devem ser passadas
para os objetos Para cada classe, poderá existir apenas
uma única cópia de cada variável:variável de classe
V iá i d l
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 54/79
54
Variáveis de classe
Exemplos de variáveis de classe:Classe AgênciaBancária agenciaCentro
agenciaEpitacio
agenciaMana
ira
juros:
Variável deClasse
V iá i d l
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 55/79
55
Variáveis de classe
Os objetos instanciados pela classe podem acessar as variáveis de classe( para modificar ou ler seu valor)
A modificação numa variável de classe é percebida por todos os objetos
A variável de classe fica armazenada naclasse e não nas instâncias geradas
É comum o uso de variáveis de classe para definir constantes PI, MAX_IDADE, MIN_JUROS, ...
Mét d d l
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 56/79
56
Métodos de classe
Muitas vezes, faz-se necessário acessar parte do comportamento de uma classeindependentemente de suas instâncias Método showMessageDialog(...) que monta um
diálogo para o usuário da classe JOptionPane
Método sqrt() que calcula a raiz quadradada classe Math
Comportamento é da classe e não deum objeto em particular É como se a classe tivesse operações próprias: método de classe
Mét d d l
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 57/79
57
Métodos de classe
Exemplos de métodos de classe:
O método numAgencias() poderia consultar onúmero de objetos instanciados até omomento
O métodonumProxAgencia()
poderia informar
numAgencias()
numProxAgencia()
Classe AgênciaBancária
H
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 58/79
58
Herança
H
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 59/79
59
Herança
Permite reutilizar as características deuma classe na definição de outra classe Reutilização direta de código previamente
definido por alguém em uma superclasse
É a contribuição original do paradigmaOO
Representação gráfica da herança:
Empregado
Gerente Diretor Supervisor
H
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 60/79
60
Herança
Terminologias relacionadas à Herança: Classes mais generalizadas: superclasses Mais especializadas: subclasses
A herança viabiliza a construção desistemas a partir de componentesfacilmente reutilizáveis Suporte a reutilização até entre sistemas Facilita a extensibilidade em um mesmo
sistema
A classe descendente não tem trabalho
para receber a herança
Herança
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 61/79
61
Herança
Herança é uma técnica para prover suporte a especialização Classes mais abaixo: especializada Classes mais acima: genéricas
Métodos e variáveis internas sãoherdados por todos os objetos dos níveismais abaixo
Várias subclasses podem herdar ascaracterísticas de uma superclasse
Herança múltipla – não presente em
Java!
Herança
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 62/79
62
Herança
Se B é uma subclasse de A, então: Os objetos de B suportam todas asoperações suportadas pelos objetos de A,exceto aquelas que foram redefinidas
O objetos de B incluem todas as variáveisde instância de B + todas as variáveis deinstância de A
Alguns autores afirmam que a Herança“fere” o princípio do encapsulamento Mudanças na superclasse podem ser
difíceis Subclasses recebem/enxergam os dados e
Árvore de Herança
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 63/79
63
Árvore de Herança
União das classes que herdam entre sigera uma árvore de herança; ou umahierarquia de classes relacionadas
Exemplo:Polígono
Quadrilátero Hexágono Triângulo
QuadradoRetângulo
Árvore de Herança
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 64/79
64
Árvore de Herança
Todos os objetos herdam característicasdefinidas em polígono Retângulo e Quadrado são
especializações de Quadrilátero Em todos os casos, cada subclasse possui uma única superclasse A isso, chamamos de Herança simples
Em algumas linguagens, é possívelherdar características oriundas dediversas superclasses
Benefícios da Herança
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 65/79
65
Benefícios da Herança
Como código pode ser facilmentereutilizado, a quantidade de código aser adicionado numa classe podediminuir bastante Subclasses provêem comportamentos
especializados tomando como base oselementos comuns criados na superclasse
A reutilização pode ser realizada mais deuma vez por outras novas subclasses
Potencializa a manutenção de sistemas Maior legibilidade do código existente uantidade menor de códi o a ser
Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 66/79
66
Polimorfismo
Polimorfismo Do Grego poly(muitas)+morpho(formas)
Há dois aspectos do polimorfismo Métodos de mesmo nome são definidos
em várias classes, podendo assumir diferentes implementações em cada umadessas
Propriedade pela qual uma variável podeapontar para objetos de diferentes classesem momentos distintos
Estes aspectos são complementares e
trabalham juntos
Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 67/79
67
Polimorfismo
Exemplo: Polígono
Quadrilátero Hexágono Triângulo
area()
area() area() area()
Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 68/79
68
Polimorfismo
Várias classes podem ter métodos como mesmo nome Uma variável do tipo Polígono pode
assumir a forma de Polígono, Triângulo,
RetânguloPoligono p;
p = new Poligono();
p.area();
...
P = new Triangulo();
p.area();
Exemplo de uso de Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 69/79
69
Exemplo de uso de Polimorfismo
Área total sem polimorfismo:double areaTotal = 0;for (int i = 0; i < MAXPOLIG; i++){
if (poligono[i] == Poligono)
areaTotal += poligono[i].areaPolig();
else if (poligono[i] == Triangulo)
areaTotal += poligono[i].areaTriang();
else if (poligono[i] == Quadrado)
areaTotal += poligono[i].areaQuadr();
else if (poligono[i] == Retangulo)areaTotal += poligono[i].areaRetang();
}
Exemplo de uso de Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 70/79
70
Exemplo de uso de Polimorfismo
Área total com polimorfismo:
Rápido, enxuto e fácil de entender
O acréscimo de uma nova subclasse dePolígono não altera nenhuma linha decódigo acima!
double areaTotal = 0;
for (int i = 0; i < MAXPOLIG; i++){
areaTotal += poligono[i].area();
}
Benefícios do Polimorfismo
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 71/79
71
Benefícios do Polimorfismo
Legibilidade do código A utilização do mesmo nome de método para vários objetos torna o código de maisfácil leitura e assimilação, promovendo
muito a expansão do sistema e suamanutenção
Código de menor tamanho Código mais claro, fácil, enxuto e elegante
Flexibilidade Pode-se incluir novas classes sem alterar o
código já existente que a manipulará
Polimorfismo Paramétrico
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 72/79
72
Polimorfismo Paramétrico
Polimorfismo abordado: métodosdiferentes com o mesmo nome emclasses distintas
Polimorfismo paramétrico: vários
métodos com o mesmo nome definidosna mesma classe que se diferenciam
pelo tipo ou número dos parâmetros
suportados Também é chamado de sobrecarga de
métodos (overloading, em inglês)
Esta técnica também pode ser utilizada
Polimorfismo Paramétrico
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 73/79
73
Polimorfismo Paramétrico
Uma mensagem pode ser enviada a umobjeto com parâmetros: Número de variáveis De tipos diferentes
O método invocado é escolhido pelos parâmetros enviados na mensagem
public class Documento {
...
public void imprime();
public void imprime(String titulo);
}
Ligação Dinâmica
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 74/79
74
Ligação Dinâmica
A implementação do polimorfismo exigeligação dinâmica Uma ligação nada mais é do que uma
associação Ligação estática: ocorre em tempo de
compilação ou interligação (linking) enão é mais modificada
Ligação dinâmica: ocorre em tempo deexecução e pode ser alterada nodecorrer do andamento do programa
Ligação do operador a uma particular
Operações com Objeto, Classe e
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 75/79
75
p ç jHerança
Objetos, classes e herança permitem adefinição de hierarquia de abstrações Abstrações facilitam o entendimento e o
gerenciamento da complexidade de
sistemas Classes agrupam objetos com
características iguais
Herança estrutura classes semelhantes Operações abstratas:
Classificação/Instanciação
Generalização/Especialização
Classificação/Instanciação
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 76/79
76
Classificação/Instanciação
A capacidade de classificar objetos permite expressar relações declassificação/instanciação
Observação de diversos fenômenos para
categorização em grupos (classes), combase nas propriedades comuns a todos
VendaVista
venda1 venda2instanciação
classificação
Generalização/Especialização
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 77/79
77
Generalização/Especialização
A partir da observação de duas ou maisclasses, pode-se abstrair uma classemais genérica
Uma superclasse é considerada uma
generalização das subclasses, que sãochamadas de especializações
especialização
generalização
Polígono
Quadrado Triângulo
Composição/Decomposição
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 78/79
78
Composição/Decomposição
Permite que objetos sejam compostos pela agregação de outros objetos oucomponentes
Instâncias de uma classe são compostas
por instâncias de outras classes =decomposição
A formação de uma classe se dá por
uma agregação de classes pré-existentes = composição
decomposição
Bicicleta
Pneu Quadro
composição
Guidom
Bibliografia
5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com
http://slidepdf.com/reader/full/analise-de-programacao 79/79
Bibliografia
PEREIRA, Frederico C. G.; Slides doCurso de Java. Disponível por WWW emhttp://asterix.coinfo.cefetpb.edu.br/~fred
ROCHA, Helder da; Curso de Java.Disponível por WWW emhttp://www.argonavis.com.br.
The Java Tutorial . Disponível por WWW emhttp://java.sun.com/docs/books/tutorial/