Buscar

Conceitos de Orientação a Objetos – Parte 1

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Curso de Sistemas de Informação
Prof. Robson Alves
prof.robson.campelo@gmail.com
AULAS 3 e 4
Programação III
1
1
1
2
Agenda
Recapitulando a aula anterior veremos com mais detalhes...
Conceitos de Orientação a Objetos – Parte 1
Objeto
Mensagens
Classe
Encapsulamento
Métodos
2
2
3
Agenda
Conceitos de Orientação a Objetos – Parte 2
Construtores
Instanciação
Herança
Polimorfismo
Classes abstratas e Concretas
Interfaces
3
3
 
Conceitos de Orientação a Objetos
PARTE 1
Conceitos de Orientação a Objetos
Objeto:
É uma representação de uma entidade do mundo real
Na modelagem de um sistema orientado a objetos, todos os elementos importantes são considerados objetos: Ex. Cliente, Fornecedor, Produto, Conta, Conta Especial etc.
5
Conceitos de Orientação a Objetos
Todo objeto possui:
Identidade
único e pode ser distinguido de outros objetos
Estado
determinado pelos dados contidos no objeto
Comportamento
é definido pelos serviços/operações que ele oferece
6
Imaginemos que precisamos fazer a modelagem de um Sistema de Gestão Hospitalar, que tipos de objetos podemos identificar nesse sistema?
7
8
Paciente
Médico
Material
Medicamento
Nota Atendimento
Requisição Paciente
etc
9
Como distinguir um objeto Médico de outros?
Geralmente pelo atributo id (identidade)
Ex.:
Id;
Nome do médico;
Especialidade
CRM;
10
Qual o estado de um objeto Médico?
Informações contidas num dado momento
Ex.:
id= 001
Nome do médico= José Almeida
Especialidade= Clínico Geral
CRM= 2548
11
Qual o comportamento de um objeto Médico?
São ações que o objeto pode fazer no sistema
Ex.:
gravarMedico
atualizarDados
excluirDados
gravarRequisição
12
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)
13
Atividade de Classe
Identidade:
Id= KFU6666
Estado:
Cor= vermelho
Modelo= fusca
Marca=Volkswagen
Comportamento:
Acelerar();
Frear();
Andar();
Conceitos de Orientação a Objetos
Mensagens:
Uma mensagem é a maneira pela qual um objeto-emissor X dirige para um objeto-alvo Y uma solicitação para que o objeto Y aplique um de seus métodos.
O envio de uma mensagem é como a chamada tradicional a uma função ou procedimento
14
Conceitos de Orientação a Objetos
15
Exemplo:
Conceitos de Orientação a Objetos
16
Exemplo em uma classe:
Conceitos de Orientação a Objetos
17
Atividade de Classe:
Escrevam uma classe Funcionário com um método imprimirDocumento() que simplesmente chama: System.out.println("Imprimindo documento");
Escrevam uma classe Gerente que possui o método imprimirDocumento(Funcionario f) tendo um objeto do tipo funcionario como parâmetro que faz uma chamada ao método contido na classe Funcionário.
Por fim, escrevam uma classe Teste com um método main que cria os dois objetos, chama o método do objeto Gerente passando o objeto Funcionário como parâmetro. (3 min – Entregar no final da aula)
Conceitos de Orientação a Objetos
18
Resolução da Atividade:
Conceitos de Orientação a Objetos
19
Resolução da Atividade:
Conceitos de Orientação a Objetos
20
Pergunta:
Que mecanismo foi estabelecido no relacionamento entre os objetos Funcionário e Gerente?
R.: Troca de mensagens entre os objetos
Conceitos de Orientação a Objetos
Classe:
É o modelo que descreve um objeto.
É uma abstração de um conjunto de objetos similares do mundo real
Dizemos que um objeto é uma instância de uma Classe
21
C
Conceitos de Orientação a Objetos
Notação de Classe: Diagrama de modelagem dos atributos e comportamentos de uma Classe
Nome da Classe
Atributos
Métodos
Pessoa
Nome
Data Nasc.
CPF
Acordar
Comer
Dormir
22
Conceitos de Orientação a Objetos
Toda classe pode ter:
Atributos;
Métodos;
Construtores;
Outras classes.
23
Conceitos de Orientação a Objetos
Atributos:
São propriedades ou elementos que representam o estado de um determinado objeto
Ex.: Cliente
Nome;
CPF;
RG;
Endereço;
Estado Civil;
...
24
Conceitos de Orientação a Objetos
Declaração de Atributos:
private static final int TAMANHO = 200;
private int indice = 0;
private String nome, cpf;
25
Conceitos de Orientação a Objetos
Modificadores: 
Palavras reservadas na linguagem Java que definem como uma Classe ou membro (atributo ou método) 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 Orientação a Objetos
Public: Todas as outras classes tem acesso ao método ou atributo
 Protected: Somente as classes que tiverem o relacionamento de herança terão acesso ou as que pertencem a um mesmo pacote
Private: Somente os membros da própria classe têm acesso, às outras classes este é restrito
“default”: se não for indicado o modificador de acesso, ele é “implicitamente’ definido como sendo visível para objetos de classes do mesmo pacote.
27
Conceitos de Orientação a Objetos
28
Para entendermos melhor como funcionam os modificadores de acesso, é preciso compreender que a linguagem Java é centrada no uso de pacotes para uma boa organização do código
Conceitos de Orientação a Objetos
29
Na classe Carro temos:
O atributo modelo foi definido como de acesso público
Conceitos de Orientação a Objetos
30
Na classe TesteCarro temos:
O atributo modelo é visível pela classe TesteCarro mesmo estando em outro pacote
Conceitos de Orientação a Objetos
31
Na classe Carro se modificarmos o modificador para private:
Conceitos de Orientação a Objetos
32
Na classe TesteCarro temos:
O atributo modelo é não é mais visível pela classe TesteCarro
Conceitos de Orientação a Objetos
33
Na classe Carro se modificarmos o acesso para default (basta não utilizar nenhum modificador):
Conceitos de Orientação a Objetos
34
Na classe TesteCarro temos:
O atributo modelo ainda não é visível pela classe TesteCarro
Conceitos de Orientação a Objetos
35
Entretanto, para classe TesteCarroB:
O atributo é visível porque está no mesmo pacoteA da classe Carro
Conceitos de Orientação a Objetos
36
Por fim, na classe Carro mudamos o acesso para protected:
Conceitos de Orientação a Objetos
37
Para classe Fusca, que estende Carro, o atributo é visível APENAS por herança:
Conceitos de Orientação a Objetos
Final:
Em atributos:
Torna o atributo uma constante
O atributo não pode ser alterado depois de inicializado
Em classes:
As classes com final não podem ser estendidas
38
Conceitos de Orientação a Objetos
Exemplos:
39
Conceitos de Orientação a Objetos
Static:
Atributo de classe: os atributos static pertencem à classe e não aos objetos. Não é necessário instanciar para usá-los. Ex.: Math.PI
Só uma cópia do atributo para todos os objetos daquela classe
O atributo é static são usados como constantes
Uso baseado no nome da classe: use o nome da classe para ter acesso ao atributo. 
40
Conceitos de Orientação a Objetos
Exemplo:
41
Conceitos de Orientação a Objetos
42
Atividade de Classe:
Escrevam uma classe Cores com os seguintes atributos String públicos, final e static: PRETO, AZUL e VERMELHO; todos estes atributos são inicializados com uma string com o mesmo nome da cor.
Escrevam uma classe TesteCores com um método main que imprime os valores contidos nos atributos da classe Cores (3 min – Entregar no final da aula)
Conceitos de Orientação a Objetos
43
Resolução:
Conceitos de Orientação a Objetos
44
Perguntas:
Por que não é necessário 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?
Conceitos de Orientação a Objetos
Encapsulamento:
É o resultado ou ato de ocultar os detalhes de implementação do objeto, métodos (operações ou comportamentos) e atributos (dados) dentro
de uma classe.
45
Conceitos de Orientação a Objetos
Exemplo de Encapsulamento:
46
Conceitos de Orientação a Objetos
Métodos:
São operações que realizam ações (consulta e alteração) sobre o estado (dados) do objeto responsável por suas chamadas (execução).
Definem o comportamento de um objeto ou as ações que este pode fazer em um sistema
Ex.: Cliente
verificarSaldoConta();
efetuarSaqueConta();
depositarValor()
...
47
Conceitos de Orientação a Objetos
Declaração de Métodos:
48
public boolean existe(String numero)
modificador
retorno
nome
( parâmetros )
Conceitos de Orientação a Objetos
Métodos 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”: não definido o modificador para o método, este será acessível apenas pelos objetos de classes do mesmo pacote. 
Static: não precisam de instância para serem executados, são métodos de classe
49
Conceitos de Orientação a Objetos
Exemplo 1:
50
Conceitos de Orientação a Objetos
Exemplo 2:
51
 
Conceitos de Orientação a Objetos
PARTE 2
Conceitos de Orientação a Objetos
Construtores:
Métodos especiais responsáveis pela inicialização dos atributos de uma Classe na sua instanciação
Estes podem ser:
Default: definidos implicitamente na Classe pelo Java, caso não seja especificado explicitamente
A partir do momento em que se especifica um Construtor, o construtor default não é mais gerado
	
53
Conceitos de Orientação a Objetos
Exemplos de Construtores:
54
Conceitos de Orientação a Objetos
Instanciação:
	É a criação de um objeto a partir da referência a uma Classe
	É feita uma chamada ao construtor da classe que pode ser o default ou um que tenha sido especificado
55
Conceitos de Orientação a Objetos
Exemplos de Instanciação
A palavra reservada new avisa ao Java para Criar um Objeto do tipo Pessoa chamando o Construtor da Classe 
56
Conceitos de Orientação 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 Orientação a Objetos
58
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 método main cria dois objetos Aluno diferentes cada um chamando um construtor. (3 min – Entregar no final da aula)
Conceitos de Orientação a Objetos
59
Resolução:
Conceitos de Orientação a Objetos
60
Resolução:
Conceitos de Orientação a Objetos
61
Perguntas:
O que ocorre caso tente-se criar um objeto Aluno usando o construtor padrão sem parâmetros (new Aluno())?
O que ocorre caso tente-se chamar um método de um objeto sem que este tenha sido instanciado?
Conceitos de Orientação a Objetos
Herança: 
Mecanismo que permite definir uma nova classe (subclasse) a partir de uma classe já existente (superclasse)
Evita repetição de código, já que as “classes-filhas” herdam atributos e comportamento da “classe-pai”
62
Conceitos de Orientação a Objetos
Exemplo de Herança:
Utiliza-se a palavra reservada extends para definir a Herança.
63
Conceitos de Orientação a Objetos
Princípio da Substituição em Herança:
Toda Poupança é um conta, mas nem toda conta é uma poupança
64
Conceitos de Orientação a Objetos
65
Conta {
Creditar(valor);
Debitar(valor);
getSaldo();
}
Poupança extends Conta{
renderJuros(valor);
}
Conceitos de Orientação a Objetos
66
...
Conta contaAlfa;
contaAlfa = new Poupanca( );
contaAlfa.creditar(1000.00);
contaAlfa.debitar(500.00);
System.out.println(contaAlfa.getSaldo( ));
...
Conceitos de Orientação a Objetos
67
Typecast (Conversão de tipo)
...
Conta c1;
c1 = new Conta( );
( (Poupanca) c1 ).renderJuros(0.05);
System.out.println( c1.getSaldo( ) );
...
Conceitos de Orientação a Objetos
68
Operador instanceof
Retorna valor booleano após 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 não é do tipo Poupanca”);
... 
Conceitos de Orientação a Objetos
Polimorfismo:
	Etimologicamente, quer dizer “várias formas”.
	É a capacidade de um objeto responder a uma mensagem de uma maneira peculiar a ele mesmo.
69
Conceitos de Orientação a Objetos
Exemplo de Polimorfismo
70
Conceitos de Orientação a Objetos
71
O polimorfismo é importante para definirmos um comportamento específico para um determinado objeto
Figura Geométrica:
calcularArea()
A = L2
A =  x R2
A = B x H
Conceitos de Orientação a Objetos
72
Atividade de Classe:
Escrevam uma classe Pessoa com um método imprimirDados();
Escrevam as classes PessoaFisica e PessoaJuridica, ambas estendendo a classe Pessoa;
Sobrescrevam o método imprimirDados em cada uma onde: em PessoaFisica imprime o CPF e em PessoaJuridica imprime o CNPJ (3 min – Entregar no final da aula)
Conceitos de Orientação a Objetos
73
Resolução:
Conceitos de Orientação a Objetos
Classes Abstratas:
Usamos classes abstratas para representar grupos que tem características comuns, mas que, em alguns detalhes específicos, agem de maneira diferente (Ex. Funcionário: Gerente, Presidente, Diretor)
Construção de uma hierarquia consistente de classes
Clareza no polimorfismo
Simplicidade no reuso de código
74
Conceitos de Orientação a Objetos
É declarada com o modificador abstract: 
 public abstract class Cliente
Não pode ser instanciada
Pode fornecer construtores para maximizar o reuso nas subclasses
75
Conceitos de Orientação a Objetos
76
Se houver um único método abstrato na Classe, esta obrigatoriamente deverá ser abstrata
Conceitos de Orientação a Objetos
Algumas observações:
Uma classe final não pode ser abstrata
Uma classe final não pode possuir métodos abstratos
Os métodos private, static e final não podem ser abstratos
Uma classe sem métodos pode ser definida como abstrata, para não ser possível instanciá-la
77
Conceitos de Orientação a Objetos
Classes Abstratas versus Classes Concretas
As Classes Abstratas não possuem instâncias diretas, mas suas classes descendentes possuem
As Classes Concretas são instanciáveis
78
Conceitos de Orientação a Objetos
Exemplo de Classe Abstrata:
Só tem sentido ter uma classe abstrata quando pelo menos tem um método abstrato!
79
Conceitos de Orientação a Objetos
A classe concreta que estender a abstrata, será obrigada a implementar todos os métodos abstratos
80
Conceitos de Orientação a Objetos
81
A pergunta que não quer calar:
Por que criar uma classe abstrata se você não pode criar objetos dela?
Conceitos de Orientação a Objetos
82
Para entendermos melhor, vamos imaginar o seguinte exemplo
Temos uma classe Carro que tenha atributos e métodos comuns a todos os tipos de carros:
preço;
modelo;
ano;
acelerarRapidamente();
Conceitos de Orientação a Objetos
83
Mas você não quer que alguém de fato crie um objeto Carro, pois algumas perguntas iriam surgir:
Qual a cor do carro?
Quantos assentos?
Qual a potência do motor?
Direção hidráulica ou não?
Conceitos de Orientação a Objetos
84
O precisamos na verdade é que sejam criados objetos específicos do tipo Carro como: Fusca, Gol, Corsa, Celta etc.
Todos esses objetos são concretos, portanto, instanciáveis
Cria-se então a classe Carro como abstract, ficando os demais tipos como extensões desta
Conceitos de Orientação a Objetos
85
Classe genérica Carro (abstrata): não pode ser instanciada
Conceitos de Orientação a Objetos
86
Classe concreta Celta: pode ser instanciada
Conceitos de Orientação a Objetos
87
Classe concreta Corsa: pode ser instanciada
Programação Fundamental com Java
88
Interfaces
Uma interface é como uma classe 100% abstrata
O objetivo do uso de uma interface é deixar seu código mais flexível e possibilitar a mudança de implementação sem maiores traumas
Quando se cria uma interface, define-se um contrato, sem
mencionar nada sobre como a classe que a implementar o fará
Programação Fundamental com Java
89
Por exemplo, se uma interface Bounceable (Saltitante) for definida, qualquer classe que quiser ser tratada como “algo saltitante” poderá implementá-la
Programação Fundamental com Java
90
Programação Fundamental com Java
91
Interfaces são úteis para permitir que classes radicalmente diferentes possuam características em comum
Por exemplo, imaginemos as classes Ball (Bola) e Tire (Pneu). 
Queremos que estas classes tenham um mesmo comportamento, mas elas não têm nada em comum
Programação Fundamental com Java
92
Ball estende Toy (brinquedo), enquanto Tire só estende java.lang.Object
Podemos relacionar essas classes através da interface Bounceable
Desta forma estaremos dizendo que as duas classes podem ser tratadas como “coisas saltitantes”
Programação Fundamental com Java
93
Ao implementar uma interface, a classe concreta é obrigada a implementar todos os seus métodos
Programação Fundamental com Java
94
Programação Fundamental com Java
95
Programação Fundamental com Java
96
Pergunta:
O que ocorreu entre as duas classes após a implementação da interface?
R.: Ambas as classes Ball e Tire agora têm comportamento (ações) em comum por implementarem a interface Bounceable
Programação Fundamental com Java
97
Algumas regras:
Uma interface não pode implementar outra interface
Uma interface não pode estender nada que não seja outra interface
Por exemplo, imaginemos outra interface Rollable (Rolável)
A interface Bounceable pode perfeitamente extender Rollable
Programação Fundamental com Java
98
Porque a interface Bounceable não precisou implementar o método da interface Rollable?
Programação Fundamental com Java
99
Porque somente uma classe concreta tem obrigação de implementar métodos de interfaces
Programação Fundamental com Java
100
Programação Fundamental com Java
101
102
Atividade Extraclasse:
Escrevam uma classe abstrata Funcionário com um atributo protected salario; um construtor que recebe o salario e um método getBonificacao() que retorna um valor double referente ao atributo salario * 1.2;
Escrevam uma classe Gerente que estende Funcionario, sobrescreve o método getBonificacao() alterando seu retorno para: salario * 1.4 + 1000;
Escrevam uma classe TesteFuncionario com o método main que instancia um Gerente atribuindo a uma variável do tipo Funcionario; em seguida faz uma chamada ao método getBonificacao() imprimindo seu resultado.
Enviem para meu e-mail ATÉ A PRÓXIMA AULA: prof.robson.campelo@gmail.com
Dúvidas?
103

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando