Anda di halaman 1dari 103

AULAS 3 e 4

Programao III

Curso de Sistemas de Informao


Prof. Robson Alves
prof.robson.campelo@gmail.com

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

Todo objeto possui:


Identidade
nico e pode ser distinguido de outros objetos
Estado
determinado pelos dados contidos no objeto
Comportamento
definido pelos servios/operaes que ele
oferece

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.

oO envio de uma mensagem como a chamada


tradicional a uma funo ou procedimento

14
Conceitos de Orientao a Objetos

Exemplo:

15
Conceitos de Orientao a Objetos

Exemplo em uma classe:

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

Toda classe pode ter:


o Atributos;
o Mtodos;
o Construtores;
o Outras classes.

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:

oprivate static final int TAMANHO = 200;


oprivate int indice = 0;
oprivate String nome, cpf;

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

Protected: Somente as classes que tiverem o relacionamento


de herana tero acesso ou as que pertencem a um mesmo
pacote

Private: Somente os membros da prpria classe tm acesso,


s outras classes este restrito

default: se no for indicado o modificador de acesso, ele


implicitamente definido como sendo visvel para objetos de
classes do mesmo pacote.

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:

O atributo modelo foi definido como de


acesso pblico

29
Conceitos de Orientao a Objetos
Na classe TesteCarro temos:

O atributo modelo visvel pela classe TesteCarro


mesmo estando em outro pacote

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:

O atributo modelo no mais visvel pela classe


TesteCarro

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:

O atributo modelo ainda no visvel pela classe


TesteCarro

34
Conceitos de Orientao a Objetos
Entretanto, para classe TesteCarroB:

O atributo visvel porque est no mesmo pacoteA


da classe Carro

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).

Definem o comportamento de um objeto ou as


aes que este pode fazer em um sistema
Ex.: Cliente
overificarSaldoConta();
oefetuarSaqueConta();
odepositarValor()
o...

47
Conceitos de Orientao a Objetos
Declarao de Mtodos:

retorno
modificador nome
( parmetros )

public boolean existe(String numero)

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

Estes podem ser:


Default: definidos implicitamente na Classe pelo Java,
caso no seja especificado explicitamente
A partir do momento em que se especifica um
Construtor, o construtor default no mais gerado

53
Conceitos de Orientao a Objetos
Exemplos de Construtores:

54
Conceitos de Orientao a Objetos
Instanciao:

a criao de um objeto a partir da referncia


a uma Classe

feita uma chamada ao construtor da classe


que pode ser o default ou um que tenha sido
especificado

55
Conceitos de Orientao a Objetos
Exemplos de Instanciao

A palavra reservada new avisa ao Java para Criar um


Objeto do tipo Pessoa chamando o Construtor da
Classe

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:

Mecanismo que permite definir uma nova classe


(subclasse) a partir de uma classe j existente
(superclasse)

Evita repetio de cdigo, j que as classes-


filhas herdam atributos e comportamento da
classe-pai

62
Conceitos de Orientao a Objetos
Exemplo de Herana:

Utiliza-se a palavra reservada extends para


definir a Herana.

63
Conceitos de Orientao a Objetos
Princpio da Substituio em Herana:

Toda Poupana um conta, mas nem toda


conta uma poupana

64
Conceitos de Orientao a Objetos
Conta {
Creditar(valor);
Debitar(valor);
getSaldo();
}

Poupana extends Conta{


renderJuros(valor);
}

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.

a capacidade de um objeto responder a uma


mensagem de uma maneira peculiar a ele mesmo.

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:

S tem sentido ter uma classe abstrata quando pelo menos


tem um mtodo abstrato!

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:

Uma interface no pode implementar outra


interface
Uma interface no pode estender nada que no
seja outra interface
Por exemplo, imaginemos outra interface
Rollable (Rolvel)
A interface Bounceable pode perfeitamente
extender Rollable

97
Programao Fundamental com Java

Porque a interface Bounceable no precisou


implementar o mtodo da interface Rollable?

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

Anda mungkin juga menyukai