Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1) Campos estticos em Classes 2) Mtodos estticos em Classes 3) Mtodos get e set 4) Exerccios Prticos
Encapsulamento
Como j foi visto no captulo 1, que encapsulamento a capacidade de
14 de Junho de 2013
Estrutura geral
O encapsulamento leva a observar um objecto como uma caixa preta
14 de Junho de 2013
Encapsulamento em Java
O Encapsulamento numa classe feita pelo uso de palavras reservadas que esto associadas aos atributos e mtodos da
classe.
Estes so designados por modificadores de visibilidade.
(leitura)?
Isto possvel definindo-se um mtodo que retorna o atributo (na prpria classe onde o atributo se encontra)
Consequncias de tornar um atributo publico possvel, mas viola o encapsulamento, aceitvel no caso dos atributos constantes (i.e. Com o modificador final)!
14 de Junho de 2013 Programao Orientada por Objectos 6
Modificadores de visibilidade
public
Atributos Viola encapsulamento
private
Refora encapsulamento
Mtodos
14 de Junho de 2013
Herana
Mecanismo
simples
poderoso
do
paradigma OO que permite que uma nova classe seja descrita a partir de uma classe j
existente.
Conceitos importantes
Classe me: superclasse, classe base; Classe filha/filho: subclasse, classe derivada;
14 de Junho de 2013
Vantagens da herana
Modificao de uma classe (insero de novos mtodos e variveis) sem mudanas na classe original. Reutilizao do cdigo. Alterao do comportamento de uma classe.
14 de Junho de 2013
10
Mecanismo de Herana
Entre uma classe e a sua superclasse, estabelecida uma relao de especializao que automaticamente implementada atravs de um mecanismo de herana. Este mecanismo automtico de herana estabelece as seguintes propriedades entre uma subclasse B e a sua superclasse A: 1. B herda de A todas as variveis e mtodos de instncia (os atributos da classe B, declarados como private em A , s podem ter acesso pelos mtodos public de A, e no directamente) 2. 3. B pode definir novas variveis e novos mtodos prprios. B pode redefinir variveis e mtodos herdados.
Classe A
Importante:
Classe B
12
Exemplo
Pessoa 2 Atributos 2 Operaes
nome sexo comer dormir
generalizao
especializao
Estudante
anoEscolar matricular estudar
Trabalhador
categoria funo trabalhar picar carto
Hierarquia de Classes
peso uma varivel de instncia que est presente em todos os objectos criadas para as classes Animal, Mamfero, Ave e Rptil.
Object
Animal peso
mover()
Mamfero
comer()
Ave
mover()
Rptil
mover()
voar()
nadar()
14 de Junho de 2013
14
Definir a Subclasse
Forma geral: class <nome-da-classe> extends SuperClass permitido apenas uma superclasse no h herana mltipla em Java cada classe possui exactamente uma superclasse
excepo: java.lang.Object
caso no exista a clusula extends, ento, assumese que a superclasse Object.
14 de Junho de 2013
15
Classe Object
A classe Object uma classe que serve de
Ao criar uma classe, se no for especificada nenhuma superclasse aps a palavra extends,
ento
classe
Object
ser
assumida
14 de Junho de 2013
16
A classe Object define o mtodo equals, que serve para testar se dois objectos contm a
14 de Junho de 2013
17
Construtores de Subclasses
class Ave extends Animal { int altura; class Animal { double velocidade; Animal() { velocidade = 0.0; } void mover(double vel) { velocidade = vel; } }
Polimorfismo
o princpio pelo qual duas ou mais classes
No caso de polimorfismo, necessrio que os mtodos tenham exactamente a mesma identificao, sendo utilizado o mecanismo de overriding *. Esse mecanismo de
Importante: - O mecanismo de late binding(ligao tardia) e o overriding (Redefinio de mtodos) constituem a chave para a utilizao do Polimorfismo.
* Ocorre quando um mtodo cuja assinatura j tenha sido especificada, recebe uma nova definio (ou seja, um novo corpo) em uma classe derivada.
14 de Junho de 2013
20
Exemplo:
Considere uma classe Veculo com duas classes derivadas, Automvel e Bicicleta: import java.util.*; class Veiculo { public Veiculo() { System.out.print("Veiculo "); } public void manutencao() {
System.out.println("Veiculo.manutencao ");
} public void limpeza() { System.out.println("Veiculo.limpeza "); } }
14 de Junho de 2013 Programao Orientada por Objectos 21
import java.util.*; class Automovel extends Veiculo { public Automovel () { System.out.print(" Automovel "); } public void manutencao() { System.out.println(" Automovel.manutencao "); }
14 de Junho de 2013
22
14 de Junho de 2013
23
public class Oficina { Random r = new Random(); public Veiculo proximo() { Veiculo v; int num= r.nextInt(); System.out.println("Valor = "+num);
14 de Junho de 2013
24
public void manter(Veiculo v) { v.manutencao(); v.limpeza(); } public static void main(String[] args) {
Resultado Aleatrio
Valor = 1193310524 Veiculo Automovel Automovel.manutencao Automovel.limpeza Valor = 1087258313 Veiculo Bicicleta Bicicleta.manutencao Bicicleta.limpeza Valor = 1857219931 Veiculo Bicicleta Bicicleta.manutencao Bicicleta.limpeza
Valor = 938060274
Veiculo Automovel Automovel.manutencao Automovel.limpeza
14 de Junho de 2013 Programao Orientada por Objectos 26
Exerccio Prtico
1. Criar uma estrutura hierrquica que contenha as seguintes classes: Veiculo (classe abstracta), Bicicleta e Automvel. Os mtodos da classe Veiculo so todos abstractos e possuem a seguinte assinatura: listarVerificacoes() ajustar() limpar()
Estes
mtodos
so
implementados
nas
subclasses
2. Crie uma classe em Java para representar Empregados com as propriedades mat, nome, funcao, salario e data_adm. Todas as propriedades devem estar encapsuladas. Nenhum objecto desta classe poder ser criado sem matrcula. A matrcula ser fornecida sequencialmente a cada empregado criado a partir de zero. Devero constar tambm mtodos de acesso para cada uma das propriedades definidas. Crie um mtodo para aumentar salrio a partir de um valor percentual recebido e um mtodo chamado toString que retorne uma String com todas as propriedades existentes na classe com seus respectivos valores.
14 de Junho de 2013
28
3.
Faa um programa em Java para estender a classe Empregado para Gerente. A classe Gerente dever conter as propriedades secretria (do tipo Empregado) e Automvel (String), com seus respectivos mtodos de acesso. Criar tambm um mtodo para aumentar o salrio do Gerente onde o percentual incidir sobre o salrio + 0,5 * cada ano na
14 de Junho de 2013
29
4.
Faa uma classe ManipulaEmpregado que tenha os seguintes mtodos: criarEmpregados que cria um vetor com 6 Empregados, sendo 3 deles Gerentes, com seus respectivos atributos a partir de dados fornecidos por usurios; listarEmpregados que liste os Empregados no array com seus dados; aumentarEmpregados que receba um valor percentual e aumente o salrio de todos os empregados; localizarEmpregado que receba um empregado como argumento e localize-o pela matricula retornando o nome caso encontre ou a string Empregado no localizado caso contrrio.
14 de Junho de 2013 Programao Orientada por Objectos 30
5. Faa um programa que exiba um menu com as seguintes opes: 1 Criar Vetor de Empregados
2 Aumentar Empregados
3 Listar Empregados
4 Localizar Empregado
5 - Sair
14 de Junho de 2013
31
Prximo captulo
Java e UML
14 de Junho de 2013
32