29
1 de 36 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Aula 24 e 25 - Revisão do Módulo Avançado e Diretrizes de Projeto http://www.ufpa.br/sampaio/bd2003/lpoo Marco Fagundes

Linguagens de Programação Orientadas a Objetos

  • Upload
    jenaya

  • View
    16

  • Download
    0

Embed Size (px)

DESCRIPTION

Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] 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

Page 1: Linguagens de Programação Orientadas a Objetos

1 de 36

Linguagens de Programação Orientadas a Objetos

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

Marco [email protected]

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

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

Marco Fagundes

Page 2: Linguagens de Programação Orientadas a Objetos

2 de 36

Roteiro

Modificador StaticRevisão do Módulo de FundamentosProjeto

Page 3: Linguagens de Programação Orientadas a Objetos

3 de 36

Modificador Static

Page 4: Linguagens de Programação Orientadas a Objetos

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

Page 5: Linguagens de Programação Orientadas a Objetos

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()); }

}

Page 6: Linguagens de Programação Orientadas a Objetos

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();} }

Page 7: Linguagens de Programação Orientadas a Objetos

7 de 36

Revisão do Módulo Avançado

Page 8: Linguagens de Programação Orientadas a Objetos

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

Page 9: Linguagens de Programação Orientadas a Objetos

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

Page 10: Linguagens de Programação Orientadas a Objetos

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

Page 11: Linguagens de Programação Orientadas a Objetos

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 {...}

Page 12: Linguagens de Programação Orientadas a Objetos

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

Page 13: Linguagens de Programação Orientadas a Objetos

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

Page 14: Linguagens de Programação Orientadas a Objetos

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

Page 15: Linguagens de Programação Orientadas a Objetos

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

Page 16: Linguagens de Programação Orientadas a Objetos

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:

Page 17: Linguagens de Programação Orientadas a Objetos

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:

Page 18: Linguagens de Programação Orientadas a Objetos

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

Page 19: Linguagens de Programação Orientadas a Objetos

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)

Page 20: Linguagens de Programação Orientadas a Objetos

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”);}}

Page 21: Linguagens de Programação Orientadas a Objetos

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:

Page 22: Linguagens de Programação Orientadas a Objetos

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

Page 23: Linguagens de Programação Orientadas a Objetos

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

Page 24: Linguagens de Programação Orientadas a Objetos

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);}

Page 25: Linguagens de Programação Orientadas a Objetos

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?

Page 26: Linguagens de Programação Orientadas a Objetos

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)

Page 27: Linguagens de Programação Orientadas a Objetos

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 + “]”; }}

Page 28: Linguagens de Programação Orientadas a Objetos

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); }}

Page 29: Linguagens de Programação Orientadas a Objetos

29 de 36

Diretrizes de

Projeto