Buscar

Programação Orientada a Objetos

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 30 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 30 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 9, do total de 30 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

Prévia do material em texto

PROGRAMAÇÃO 
ORIENTADA A OBJETOS
Professor: Cristiano de Macêdo Neto
E-mail: cristiano.neto@prof.una.br
• Forma padronizada de permitir o acesso aos 
atributos de maneira controlada 
(encapsulamento)
• Os nomes dos métodos são criados a partir das 
palavras get ou set antes do nome do atributo.
Getters e Setters
palavras get ou set antes do nome do atributo.
• O padrão do método get não vale para as 
variáveis de tipo boolean:
– Neste caso utilizamos is e set
– Exemplo: para verificar se a lâmpada esta ligada, 
criaríamos os métodos isLigado e não getLigado
2
Javabeans
• Um JavaBean é um componente reutilizável 
que tem como finalidade representar um 
modelo de dados.
– Define convenções para que os atributos de dados – Define convenções para que os atributos de dados 
sejam tratados como “propriedade”
– Permite manipulação de suas propriedades, 
ativação de eventos, etc. através de um 
framework que reconheça as convenções 
utilizadas.
Javabeans
• Traduzindo: JavaBean é uma classe Java 
qualquer, que tem as seguintes características:
– Construtor público default (sem argumentos)
– Atributos de dados private– Atributos de dados private
–Metodos de acesso (acessors / getter) e/ou 
alteração (mutators / setter) para cada atributo 
usando a convenção getAtributo() ou isAtributo
(boolean) e setAtributo
☺
JavaBeans
Exemplo
Palavra-chave 
Modificadora
• Pode-se utilizar, opcionalmente, uma das quatro 
opções de palavra-chave modificadora: 
– final:
• define o atributo como constante e permite ao compilador fazer 
ajustes e otimizações internas
– static :– static :
• Define o atributo ou método como estático, ou seja, todos os 
objetos compartilham a mesma variável e não instancias distintas
– volatile :
• Define um atributo como volátil, o que indica que várias Threads 
poderão acessar esse atributo (não estudo na disciplina)
– transient:
• Indica que o atributo não será utilizado em uma operação de 
serialização do objeto. (não estudo na disciplina)
Atributos de objetos 
(de instância)
• São os atributos que pertencem aos objetos 
(instâncias) e não às classes.
– Somente é enxergado pelo objeto a qual pertence
– É criado quando o objeto é criado (comando new)– É criado quando o objeto é criado (comando new)
– É destruído quando o objeto a que pertence for 
destruído
– É o tipo de atributo mais comumente utilizado em 
POO
Prefixo this
• Palavra-chave que identifica o objeto atual no 
código-fonte.
• Quando você utiliza esse prefixo, você diz: 
“acesse o atributo pertencente a esse objeto, “acesse o atributo pertencente a esse objeto, 
cujo nome é o seguinte...”.
• O nome do atributo vem após o ponto.
• Sua utilização é aconselhável em todas as 
situações que se deseja acessar um atributo 
do objeto (atributo de instância)
Prefixo this
O problema
• Controlar a quantidade de lâmpadas 
instanciadas pelo classe que possui o método 
main()
• Soluções:• Soluções:
– Simples mas problemática
Lampada l1 = new Lampada(...);
totalDeLampadas += 1;
– Atributo totalizador
Atributos de Classe
• Problema com a solução do atributo 
totalizador
– Cada objeto tem o seu atributo e não é possível 
saber o total de objetos instanciados
Qual a solução?• Qual a solução?
– A solução seria ter um atributo que fosse 
compartilhado por todos os objetos (instâncias) 
da classe Lampada.
– Como fazer isto?
• Basta utilizar o modificador static
Atributos de Classe
• Um atributo de classe é um atributo declarado 
com o modificador static. 
• Os atributos de classe são associados com a 
classe e não com os objetos (ou instâncias) classe e não com os objetos (ou instâncias) 
criados a partir dela. 
– Isso significa que quando um atributo de classe é 
modificado, todos os objetos criados a partir da 
mesma classe enxergam a alteração.
Métodos de Classe
• Similarmente, você pode definir métodos de 
classe e métodos de objeto. 
– A função main de um programa é um exemplo. 
Note que ela sempre é definida como um método Note que ela sempre é definida como um método 
de classe, pois possui o modificador static
Exemplo
Modificadores de Classe
• Os modificadores de método são: 
– abstract
• Define um método sem corpo
– final
• Define um método que não pode ser modificado em sub-
classes
• Define um método que não pode ser modificado em sub-
classes
– static
• Define um método de classe
– native
• Indica um método escrito em C++
– Synchronized
• Indica que somente uma thread por vez pode executa-lo. 
Métodos de Instância
• São os métodos de objetos. 
• Podem acessar atributos de instância e 
atributos de classe declarados na sua classe. 
• Para declarar um método de instância, não • Para declarar um método de instância, não 
especifique a palavra-chave static.
Método de Classe
• Um método de classe é um método que 
acessa somente os atributos de classe
definidos na sua própria classe. 
– Na declaração utiliza-se a palavra-chave static– Na declaração utiliza-se a palavra-chave static
– Não pode utilizar this em um método de classe
– Na chamada, prefixe o método com o nome de 
sua classe seguido do operador de ponto
Observações 
Importantes
• Métodos e atributos estáticos só podem 
acessar outros métodos e atributos estáticos 
da mesma classe
– Não possui referência “this”– Não possui referência “this”
• Usar static significa programar semelhantes à 
programação estruturada, porém em alguns 
casos é aceitável utilizar tal “recurso técnico”.
Sobrecarga de Métodos
• Declarar múltiplos métodos que possuam o 
mesmo nome, porém com listas de parâmetros 
diferentes, é uma técnica denominada 
sobrecarga de método (method overloading). sobrecarga de método (method overloading). 
– Neste caso, o compilador seleciona o método 
apropriado escolhendo aquele cujo nome, número e 
tipo de argumentos coincidir com a chamada de um 
método com o mesmo nome, número e tipo de 
argumentos (através da comparação de assinaturas). 
Sobrecarga de Métodos
Tratamento de Exceções
• Uma exceção é um evento que ocorre durante 
a execução de um programa que rompe o 
fluxo normal de instruções.
• Exemplos:• Exemplos:
– falha ao ler um dispositivo;
– retirar um elemento de uma coleção vazia;
– falha na conexão de rede;
– divisão por zero;
– etc
Tratamento de Exceções
• Na programação tradicional, a detecção, 
documentação e tratamento de erros geralmente leva 
ao confuso código espaguete.
• Por exemplo, considere a ação que lê um arquivo: 
lerArquivo() { lerArquivo() { 
abrir o arquivo; 
determinar seu tamanho; 
alocar esta quantidade de memória; 
transferir o arquivo para a memória; 
fechar o arquivo; 
}
Tratamento de Exceções
• Qual o problema do código anterior?
– que acontece se o arquivo não puder ser aberto? 
– que acontece se o tamanho do arquivo não puder 
ser determinado? ser determinado? 
– que acontece se não puder ser alocada memória 
suficiente? 
– que acontece se a leitura falhar? 
– que acontece se o arquivo não puder ser fechado? 
Tratamento de Exceções
• E onde fica o código espaguete?
– Para responder as questões anteriores, faz-se 
necessário adicionar uma porção de código para 
fazer a detecção do erro, documentação e fazer a detecção do erro, documentação e 
tratamento
Tratamento de Exceções
• As exceções permitem que você escreva o 
fluxo principal de seu código e trate dos casos 
excepcionais em outro lugar. 
• Ou seja, o tratamento de exceções serve para • Ou seja, o tratamento de exceções serve para 
separar o código normal do código de 
tratamento de erros
Código sem Tratamento 
de Exceções e Erro
Código Espaguetecom 
Tratamento de Erro
Tratamento de Exceção
• Como tratar exceção em Java?
– try, catch e finally
• Define um bloco de tratamento de exceção
– throws– throws
• Declara que um método pode lançar exceção
– throw
• Lança um exceção
Tratamento de Exceção
• Sintaxe
try { 
... 
}catch (Excecao e1){ 
... ... 
}catch (Excecao e2){ 
... 
}finally {
...
}
Código com Tratamento 
de Exceções

Outros materiais