Linguagens de Programação Orientadas a Objetos

Preview:

DESCRIPTION

Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Aula 24 e 25 - Revisão do Módulo Avançado e Diretrizes de Projeto http://www.ufpa.br/sampaio/bd2003/lpoo.  Marco Fagundes. Roteiro. - PowerPoint PPT Presentation

Citation preview

1 de 36

Linguagens de Programação Orientadas a Objetos

Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa

Marco Fagundesmafm@cin.ufpe.br

Aula 24 e 25 - Revisão do Módulo Avançado e Diretrizes de Projeto

http://www.ufpa.br/sampaio/bd2003/lpoo

Marco Fagundes

2 de 36

Roteiro

Modificador StaticRevisão do Módulo de FundamentosProjeto

3 de 36

Modificador Static

4 de 36

Modificador Static

Pode ser utilizado com Variáveis e Métodos, tornando-os relacionados à classe e não às instâncias

Métodos e variáveis estáticos podem ser utilizados sem a necessidade de instanciar um objeto da classe desejada

5 de 36

Exemplo

class AppVarStatic{

static int varSt;

public AppVarStatic(){

varSt++;}

public static int impVarSt(){

return varSt; }

}

class TestaAppVarStatic{

public static void main(String[] args){

System.out.println(

AppVarStatic.varSt);

AppVarStatic t = new AppVarStatic();

System.out.println(

AppVarStatic.impVarSt()); }

}

6 de 36

Observação sobre variáveis

É importante lembrar que as variáveis de instância são inicializadas automaticamente. Por outro lado, as variáveis locais devem ser obrigatoriamente inicializadas em código.

Por Exemplo:class AppVar{ int i; void impVar(){System.out.println(i);}

void impVar2(){ int i = 0; System.out.println(i);} }

class TestaAppVar{ public static void main(String[] args) {AppVar av = new AppVar(); av.impVar(); av.impVar2();} }

7 de 36

Revisão do Módulo Avançado

8 de 36

Módulo Avançado

Módulo Avançado• Objetivo: Apresentar conceitos avançados

envolvidos na programação orientada a objetos, onde destacamos a reutilização de comportamento e/ou dados através da herança de classes. Adicionalmente, visa também apresentar mecanismos envolvidos no desenvolvimento de aplicações robustas através do tratamento de erro com exceções

• Meta: Estender a aplicação desenvolvida no módulo de fundamentos adicionando reutilização de comportamento/dados e robustez através de tratamento de erros

9 de 36

Módulo Avançado

Conteúdo• Construção de Pacotes• Herança de Classes• Redefinição de Métodos e Ligação Dinâmica• Manipulação de Exceções• Classes Abstratas • Interfaces

10 de 36

Módulo de Fundamentos

Duração: 11 Aulas Java e 06 Aulas Delphi (ainda Falta!!!)

• Início: 30/04/2003 (2 aulas) ... 20/05/2003• Término: 02/06/2003(Java) - 09/06/2003 (provável)

Datas Importantes• Entrega do 2º Exercício: 11/06/2003• Exame Escrito: 17/06/2003• Entrega da 1ª Etapa do Projeto Final: 17/06/2003

Vale lembrar que:• Cada exercício vale 5% da média final• Cada exame vale 10% da média final• A 1ª etapa do projeto vale 20% da média final

11 de 36

Módulo Avançado - Pacote

Construção de Pacotes• Cada pacote é associado a um diretório do

sistema operacional:– os arquivos .class das classes do pacote

são colocados neste diretório– é recomendável que o código fonte das

classes do pacote também esteja neste diretório

Todas as classes de um pacote têm o mesmo cabeçalho:

Exemplo:

package cadastroTurmas;

public class Turma {...}

12 de 36

Módulo Avançado - Pacote

Modificadores de Acesso: Public, Private, Protected e Default (acesso de pacote)

• Métodos e Atributos private podem ser somente acessados dentro da classe em que estão declarados

• Métodos e Atributos public podem ser acessados a partir de qualquer pacote

• Métodos e Atributos protected e default podem somente ser acessados dentro do mesmo pacote

• Obs: o modificador protected quando trata-se herança permite que atributos e métodos sejam herdados somente pela subclasse direta da classe que os define

13 de 36

Módulo Avançado - Herança

Todas as classes em Java inclusive as que implementamos são herdadas de Object

Object

outras classes do Java

Nossas Classes

14 de 36

Módulo Avançado - Herança

Uma classe derivada herda as propriedades e métodos da classe, podendo: Adicionar novos métodos, Adicionar novos atributos ou Redefinir a implementação de métodos existentes (override)

Herança Simples (extends) Por Exemplo:

Tuma

String situacaoTurma()String verLotacao()

TumaEspecialString situacaoTurma()

String verTurmaEspecial()

OverrideSobreposiçãoRedefinição

15 de 36

Módulo Avançado - Herança

public class Turma{ public String situacaoTurma(){ return “Turma Regular”;} public String verLotacao(){ return “Lotacao da Turma”;} }//fim class

public class TurmaEspecial extends Turma{ public String situacaoTurma(){ return “Turma Especial”;} public String verTurmaEspecial(){ return “verificação da Turma Especial”;} }//fim class

OverrideSobreposiçãoRedefinição

16 de 36

Módulo Avançado - Herança

public class TestaHerancaTurma{... Turma t = new TurmaEspecial(); System.out.println(t.situacaoTurma()); }//fim class

Ligação Dinâmica

Ligação Dinâmica (proporciona o Polimorfismo) Por Exemplo:

17 de 36

Módulo Avançado - Herança

public class Turma{... public String verTurma(){...}; public String verTurma(String pCod){...}; public String verTurma(int pCod){...}; public String verTurma(String pCod, int pVagas){...}; public String verTurma(int pVagas, String pCod){...};...}//fim class

Sobrecarga (overaload) de Métodos• Métodos sobrecarregados são distinguidos por

sua assinatura (nome do método + número de parâmetros + tipo dos parâmetros)

Por Exemplo:

18 de 36

Módulo Avançado - Herança

Para acessar membros da superclasse deve-se utilizar o palavra reservada super:

Por Exemplo:

super.codTurma; O construtor da superclasse pode ser ativado na

subclasse também através de super: Por Exemplo:

super(); //se o construtor da superclase não possuir parâmetros

19 de 36

Módulo Avançado - Herança

OBS1: Caso seja fornecida uma implementação para o construtor de uma classe diferente da padrão (fornecida por Object), o construtor padrão deixa de existir

OBS2: Caso um método de um superclasse seja redefinido em sua subclasse, mas com diferentes tipos e/ou número de parâmetros, isto não é sobreposição(override) e sim sobrecarga(overload)

20 de 36

Módulo Avançado - Classes Abstratas e Interfaces

Modificador abstract para declarar classes ou métodos abstratos (Herança Simples - extends)

Por Exemplo:

public abstract class Aluno { public abstract void String verJub(); public void verAluno(){ System.out.println(“Verificando Aluno Genérico”);}}

public class AlunoGrad extends Aluno { public void verJub(){System.out.println(“Jubilando Aluno Graduação”);} public void verAluno(){ System.out.println(“Verificando Aluno Graduação”);}}

21 de 36

Módulo Avançado - Classes Abstratas e Interfaces

public class TestaAbstAluno{... Aluno a2 = new AlunoGrad(); a2.verAluno; a2.verJub; }//fim class

Ligação Dinâmica

Ligação Dinâmica (proporciona o Polimorfismo) Por Exemplo:

22 de 36

Módulo Avançado - Classes Abstratas e Interfaces

Classes abstratas não podem ser instanciadas diretamente com o operador new

Uma subclasse de uma classe abstrata deve implementar todos os métodos abstratos da superclasse

Pode ter construtor mas somente para ser herdado (super())

23 de 36

Módulo Avançado - Interface

Uma classe que implemente(implements) uma Interface deve fornecer implementação para todos os métodos da interface correspondente

24 de 36

Módulo Avançado - Interface

class Cliente implements Chamar{ void proc1 (int p) { System.out.println(“método Chamar com “ + p); }

}

class TestaInterface{ public static void main (String args[ ]){ Chamar c = new Cliente( ); c.proc1(42); }

}

interface Chamar{ void proc1 (int param);}

de 36

Módulo Avançado - Classes Abstratas e Interface

Classes (abstratas) Agrupa objetos com

implementações compartilhadas

Define novas classes através de herança (simples) de código

Só uma pode ser supertipo de outra classe

Interfaces Agrupa objetos com

implementações diferentes

Define novas interfaces através de herança (múltipla) de assinaturas

Várias podem ser supertipo do mesmo tipo

O que usar? Quando?

26 de 36

Módulo Avançado - Classes Abstratas e Interface

Duas formas para definir subtipos:• extends: classe -> classe (herança simples) interface -> interface• implements: classe -> interface (herança

múltipla)

27 de 36

Tipos de exceção

As exceções em Java são objetos Novos tipos de exceção estendem a classe Exception

class AlunoJaExiste extends Exception{ private String detalhe; AlunoJaExiste(String a) { detalhe = a; } public String toString( ) { return "Aluno Já Cadastrado [” + detalhe + “]”; }}

28 de 36

Exemplo

public class TestaExcecaoPer{

static void inserir (String a) throws AlunoJaExiste{ System.out.println(”inclusão de alunos"); //...verificar se aluno a existe e caso exista throw new AlunoJaExiste(a);}

public static void main(String args[ ]){ try { inserir("001"); }catch (AlunoJaExiste e){ System.out.println("capturada " + e); }}

29 de 36

Diretrizes de

Projeto

Recommended