Programao III
1
Agenda
Recapitulando a aula anterior veremos com
mais detalhes...
Conceitos de Orientao a Objetos Parte 1
Objeto
Mensagens
Classe
Encapsulamento
Mtodos
2
Agenda
Conceitos de Orientao a Objetos Parte 2
Construtores
Instanciao
Herana
Polimorfismo
Classes abstratas e Concretas
Interfaces
3
Conceitos de Orientao a Objetos
PARTE 1
Conceitos de Orientao a Objetos
Objeto:
uma representao de uma entidade do mundo
real
Na modelagem de um sistema orientado a objetos,
todos os elementos importantes so considerados
objetos: Ex. Cliente, Fornecedor, Produto, Conta,
Conta Especial etc.
5
Conceitos de Orientao a Objetos
6
Imaginemos que precisamos fazer a
modelagem de um Sistema de Gesto
Hospitalar, que tipos de objetos podemos
identificar nesse sistema?
7
Paciente
Mdico
Material
Medicamento
Nota Atendimento
Requisio Paciente
etc
8
Como distinguir um objeto Mdico de outros?
Geralmente pelo atributo id (identidade)
Ex.:
Id;
Nome do mdico;
Especialidade
CRM;
9
Qual o estado de um objeto Mdico?
Informaes contidas num dado momento
Ex.:
id= 001
Nome do mdico= Jos Almeida
Especialidade= Clnico Geral
CRM= 2548
10
Qual o comportamento de um objeto Mdico?
So aes que o objeto pode fazer no sistema
Ex.:
gravarMedico
atualizarDados
excluirDados
gravarRequisio
11
Atividade de Classe
Considerando um objeto Carro:
Quais atributos e identidade do objeto
podemos identificar?
Qual estado do objeto podemos encontrar
em dado momento?
Qual comportamento pode ser identificado
no objeto? (2 min para a atividade para
entregar no final da aula)
12
Atividade de Classe
Identidade:
Id= KFU6666
Estado:
Cor= vermelho
Modelo= fusca
Marca=Volkswagen
Comportamento:
Acelerar();
Frear();
Andar();
13
Conceitos de Orientao a Objetos
Mensagens:
oUma mensagem a maneira pela qual um objeto-
emissor X dirige para um objeto-alvo Y uma
solicitao para que o objeto Y aplique um de seus
mtodos.
14
Conceitos de Orientao a Objetos
Exemplo:
15
Conceitos de Orientao a Objetos
16
Conceitos de Orientao a Objetos
Atividade de Classe:
Escrevam uma classe Funcionrio com um mtodo
imprimirDocumento() que simplesmente chama:
System.out.println("Imprimindo documento");
Escrevam uma classe Gerente que possui o mtodo
imprimirDocumento(Funcionario f) tendo um objeto
do tipo funcionario como parmetro que faz uma
chamada ao mtodo contido na classe Funcionrio.
Por fim, escrevam uma classe Teste com um mtodo
main que cria os dois objetos, chama o mtodo do
objeto Gerente passando o objeto Funcionrio como
parmetro. (3 min Entregar no final da aula)
17
Conceitos de Orientao a Objetos
Resoluo da Atividade:
18
Conceitos de Orientao a Objetos
Resoluo da Atividade:
19
Conceitos de Orientao a Objetos
Pergunta:
Que mecanismo foi estabelecido no
relacionamento entre os objetos Funcionrio
e Gerente?
R.: Troca de mensagens entre os objetos
20
Conceitos de Orientao a Objetos
Classe:
o modelo que descreve um objeto.
uma abstrao de um conjunto de objetos
similares do mundo real
Dizemos que um objeto uma instncia de
uma Classe
21
Conceitos de Orientao a Objetos
Notao de Classe: Diagrama de modelagem
dos atributos e comportamentos de uma
Classe Nome da Classe
Pessoa
Nome Atributos
Data Nasc.
C
CPF
Acordar Mtodos
Comer
Dormir
22
Conceitos de Orientao a Objetos
23
Conceitos de Orientao a Objetos
Atributos:
So propriedades ou elementos que representam o
estado de um determinado objeto
Ex.: Cliente
o Nome;
o CPF;
o RG;
o Endereo;
o Estado Civil;
o ...
24
Conceitos de Orientao a Objetos
Declarao de Atributos:
25
Conceitos de Orientao a Objetos
Modificadores:
Palavras reservadas na linguagem Java que definem
como uma Classe ou membro (atributo ou mtodo)
poder ser acessado por outros elementos do Sistema
Modificadores de acesso
public, protected e private
Outros modificadores
static, final, abstract
transient, synchronized
26
Conceitos de Orientao a Objetos
Public: Todas as outras classes tem acesso ao mtodo ou
atributo
27
Conceitos de Orientao a Objetos
Para entendermos melhor como funcionam os
modificadores de acesso, preciso compreender que
a linguagem Java centrada no uso de pacotes para
uma boa organizao do cdigo
28
Conceitos de Orientao a Objetos
Na classe Carro temos:
29
Conceitos de Orientao a Objetos
Na classe TesteCarro temos:
30
Conceitos de Orientao a Objetos
Na classe Carro se modificarmos o
modificador para private:
31
Conceitos de Orientao a Objetos
Na classe TesteCarro temos:
32
Conceitos de Orientao a Objetos
Na classe Carro se modificarmos o acesso para
default (basta no utilizar nenhum modificador):
33
Conceitos de Orientao a Objetos
Na classe TesteCarro temos:
34
Conceitos de Orientao a Objetos
Entretanto, para classe TesteCarroB:
35
Conceitos de Orientao a Objetos
Por fim, na classe Carro mudamos o acesso para
protected:
36
Conceitos de Orientao a Objetos
Para classe Fusca, que estende Carro, o atributo
visvel APENAS por herana:
37
Conceitos de Orientao a Objetos
Final:
Em atributos:
Torna o atributo uma constante
O atributo no pode ser alterado depois de
inicializado
Em classes:
As classes com final no podem ser estendidas
38
Conceitos de Orientao a Objetos
Exemplos:
39
Conceitos de Orientao a Objetos
Static:
Atributo de classe: os atributos static pertencem
classe e no aos objetos. No necessrio
instanciar para us-los. Ex.: Math.PI
S uma cpia do atributo para todos os objetos
daquela classe
O atributo static so usados como constantes
Uso baseado no nome da classe: use o nome da
classe para ter acesso ao atributo.
40
Conceitos de Orientao a Objetos
Exemplo:
41
Conceitos de Orientao a Objetos
Atividade de Classe:
Escrevam uma classe Cores com os seguintes
atributos String pblicos, final e static: PRETO,
AZUL e VERMELHO; todos estes atributos so
inicializados com uma string com o mesmo
nome da cor.
Escrevam uma classe TesteCores com um
mtodo main que imprime os valores contidos
nos atributos da classe Cores (3 min
Entregar no final da aula)
42
Conceitos de Orientao a Objetos
Resoluo:
43
Conceitos de Orientao a Objetos
Perguntas:
Por que no necessrio criar um objeto da
classe Cores (Ex. new Cores()) para ter acesso
aos seus atributos?
O que ocorre caso tente-se alterar o valor
desses atributos na classe Teste?
Caso os atributos tivessem sido definidos
como de acesso private, teriam alguma
utilidade para outras classes?
44
Conceitos de Orientao a Objetos
Encapsulamento:
o resultado ou ato de ocultar os detalhes de
implementao do objeto, mtodos (operaes ou
comportamentos) e atributos (dados) dentro de uma
classe.
45
Conceitos de Orientao a Objetos
Exemplo de Encapsulamento:
46
Conceitos de Orientao a Objetos
Mtodos:
So operaes que realizam aes (consulta e
alterao) sobre o estado (dados) do objeto
responsvel por suas chamadas (execuo).
47
Conceitos de Orientao a Objetos
Declarao de Mtodos:
retorno
modificador nome
( parmetros )
48
Conceitos de Orientao a Objetos
Mtodos e modificadores:
protected: podem ser chamados por objetos
de classes dentro do mesmo pacote ou de
qualquer subclasse da classe na qual ele foi
definido
default: no definido o modificador para o
mtodo, este ser acessvel apenas pelos
objetos de classes do mesmo pacote.
Static: no precisam de instncia para serem
executados, so mtodos de classe
49
Conceitos de Orientao a Objetos
Exemplo 1:
50
Conceitos de Orientao a Objetos
Exemplo 2:
51
Conceitos de Orientao a Objetos
PARTE 2
Conceitos de Orientao a Objetos
Construtores:
Mtodos especiais responsveis pela inicializao dos
atributos de uma Classe na sua instanciao
53
Conceitos de Orientao a Objetos
Exemplos de Construtores:
54
Conceitos de Orientao a Objetos
Instanciao:
55
Conceitos de Orientao a Objetos
Exemplos de Instanciao
56
Conceitos de Orientao a Objetos
A partir do momento em que se instancia um
Objeto de uma classe, passa-se a obter acesso
aos seus membros definidos como public
57
Conceitos de Orientao a Objetos
Atividade de Classe:
Escrevam uma classe Aluno com 3 atributos
privados: String matricula, String nome e int
idade; a seguir escrevam 2 construtores para a
classe Aluno: um que recebe matricula e nome
do aluno e outro que recebe nome e idade.
Escrevam uma classe TesteAluno que em seu
mtodo main cria dois objetos Aluno diferentes
cada um chamando um construtor. (3 min
Entregar no final da aula)
58
Conceitos de Orientao a Objetos
Resoluo:
59
Conceitos de Orientao a Objetos
Resoluo:
60
Conceitos de Orientao a Objetos
Perguntas:
O que ocorre caso tente-se criar um objeto
Aluno usando o construtor padro sem
parmetros (new Aluno())?
O que ocorre caso tente-se chamar um
mtodo de um objeto sem que este tenha
sido instanciado?
61
Conceitos de Orientao a Objetos
Herana:
62
Conceitos de Orientao a Objetos
Exemplo de Herana:
63
Conceitos de Orientao a Objetos
Princpio da Substituio em Herana:
64
Conceitos de Orientao a Objetos
Conta {
Creditar(valor);
Debitar(valor);
getSaldo();
}
65
Conceitos de Orientao a Objetos
...
Conta contaAlfa;
contaAlfa = new Poupanca( );
contaAlfa.creditar(1000.00);
contaAlfa.debitar(500.00);
System.out.println(contaAlfa.getSaldo( ));
...
66
Conceitos de Orientao a Objetos
Typecast (Converso de tipo)
...
Conta c1;
c1 = new Conta( );
( (Poupanca) c1 ).renderJuros(0.05);
System.out.println( c1.getSaldo( ) );
...
67
Conceitos de Orientao a Objetos
Operador instanceof
Retorna valor booleano aps verificar se uma classe daquele
tipo
Deve ser usado antes de se fazer um cast, evitando erros.
...
if (c1 instanceof Poupanca)
( (Poupanca) c ).renderJuros (0.05);
else
System.out.println( Objeto no do tipo Poupanca);
...
68
Conceitos de Orientao a Objetos
Polimorfismo:
Etimologicamente, quer dizer vrias formas.
69
Conceitos de Orientao a Objetos
Exemplo de Polimorfismo
70
Conceitos de Orientao a Objetos
O polimorfismo importante para definirmos um
comportamento especfico para um determinado
objeto
Figura Geomtrica:
calcularArea()
A=
A= L2 A=BxH
x R2
71
Conceitos de Orientao a Objetos
Atividade de Classe:
Escrevam uma classe Pessoa com um mtodo
imprimirDados();
Escrevam as classes PessoaFisica e
PessoaJuridica, ambas estendendo a classe
Pessoa;
Sobrescrevam o mtodo imprimirDados em cada
uma onde: em PessoaFisica imprime o CPF e em
PessoaJuridica imprime o CNPJ (3 min Entregar
no final da aula)
72
Conceitos de Orientao a Objetos
Resoluo:
73
Conceitos de Orientao a Objetos
Classes Abstratas:
o Usamos classes abstratas para representar grupos
que tem caractersticas comuns, mas que, em
alguns detalhes especficos, agem de maneira
diferente (Ex. Funcionrio: Gerente, Presidente,
Diretor)
o Construo de uma hierarquia consistente de
classes
o Clareza no polimorfismo
o Simplicidade no reuso de cdigo
74
Conceitos de Orientao a Objetos
declarada com o modificador abstract:
public abstract class Cliente
No pode ser instanciada
Pode fornecer construtores para maximizar o
reuso nas subclasses
75
Conceitos de Orientao a Objetos
Se houver um nico mtodo abstrato na
Classe, esta obrigatoriamente dever ser
abstrata
76
Conceitos de Orientao a Objetos
Algumas observaes:
Uma classe final no pode ser abstrata
Uma classe final no pode possuir mtodos
abstratos
Os mtodos private, static e final no podem ser
abstratos
Uma classe sem mtodos pode ser definida como
abstrata, para no ser possvel instanci-la
77
Conceitos de Orientao a Objetos
Classes Abstratas versus Classes Concretas
As Classes Abstratas no possuem instncias diretas,
mas suas classes descendentes possuem
As Classes Concretas so instanciveis
78
Conceitos de Orientao a Objetos
Exemplo de Classe Abstrata:
79
Conceitos de Orientao a Objetos
A classe concreta que estender a abstrata, ser
obrigada a implementar todos os mtodos abstratos
80
Conceitos de Orientao a Objetos
A pergunta que no quer calar:
Por que criar uma classe abstrata se voc no
pode criar objetos dela?
81
Conceitos de Orientao a Objetos
Para entendermos melhor, vamos imaginar o
seguinte exemplo
Temos uma classe Carro que tenha atributos e
mtodos comuns a todos os tipos de carros:
preo;
modelo;
ano;
acelerarRapidamente();
82
Conceitos de Orientao a Objetos
Mas voc no quer que algum de fato crie
um objeto Carro, pois algumas perguntas
iriam surgir:
Qual a cor do carro?
Quantos assentos?
Qual a potncia do motor?
Direo hidrulica ou no?
83
Conceitos de Orientao a Objetos
O precisamos na verdade que sejam criados
objetos especficos do tipo Carro como: Fusca,
Gol, Corsa, Celta etc.
Todos esses objetos so concretos, portanto,
instanciveis
Cria-se ento a classe Carro como abstract,
ficando os demais tipos como extenses desta
84
Conceitos de Orientao a Objetos
Classe genrica Carro (abstrata): no pode ser
instanciada
85
Conceitos de Orientao a Objetos
Classe concreta Celta: pode ser instanciada
86
Conceitos de Orientao a Objetos
Classe concreta Corsa: pode ser instanciada
87
Programao Fundamental com Java
Interfaces
Uma interface como uma classe 100% abstrata
O objetivo do uso de uma interface deixar seu
cdigo mais flexvel e possibilitar a mudana de
implementao sem maiores traumas
Quando se cria uma interface, define-se um
contrato, sem mencionar nada sobre como a
classe que a implementar o far
88
Programao Fundamental com Java
Por exemplo, se uma interface Bounceable
(Saltitante) for definida, qualquer classe que
quiser ser tratada como algo saltitante
poder implement-la
89
Programao Fundamental com Java
90
Programao Fundamental com Java
Interfaces so teis para permitir que classes
radicalmente diferentes possuam
caractersticas em comum
Por exemplo, imaginemos as classes Ball
(Bola) e Tire (Pneu).
Queremos que estas classes tenham um
mesmo comportamento, mas elas no tm
nada em comum
91
Programao Fundamental com Java
Ball estende Toy (brinquedo), enquanto Tire
s estende java.lang.Object
Podemos relacionar essas classes atravs da
interface Bounceable
Desta forma estaremos dizendo que as duas
classes podem ser tratadas como coisas
saltitantes
92
Programao Fundamental com Java
Ao implementar uma interface, a classe
concreta obrigada a implementar todos os
seus mtodos
93
Programao Fundamental com Java
94
Programao Fundamental com Java
95
Programao Fundamental com Java
Pergunta:
O que ocorreu entre as duas classes aps a
implementao da interface?
R.: Ambas as classes Ball e Tire agora tm
comportamento (aes) em comum por
implementarem a interface Bounceable
96
Programao Fundamental com Java
Algumas regras:
97
Programao Fundamental com Java
98
Programao Fundamental com Java
Porque somente uma classe concreta tem obrigao
de implementar mtodos de interfaces
99
Programao Fundamental com Java
100
Programao Fundamental com Java
101
Atividade Extraclasse:
Escrevam uma classe abstrata Funcionrio com um
atributo protected salario; um construtor que recebe o
salario e um mtodo getBonificacao() que retorna um
valor double referente ao atributo salario * 1.2;
Escrevam uma classe Gerente que estende
Funcionario, sobrescreve o mtodo getBonificacao()
alterando seu retorno para: salario * 1.4 + 1000;
Escrevam uma classe TesteFuncionario com o mtodo
main que instancia um Gerente atribuindo a uma
varivel do tipo Funcionario; em seguida faz uma
chamada ao mtodo getBonificacao() imprimindo seu
resultado.
Enviem para meu e-mail AT A PRXIMA AULA:
prof.robson.campelo@gmail.com
102
Dvidas?
103