78
Capítulo 13 Capítulo 13 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Encapsulamento Encapsulamento

Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Capítulo 13Capítulo 13

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

EncapsulamentoEncapsulamento

Page 2: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Objetivos do Capítulo

� Indicar a importância do mecanismo de encapsulamento no contexto do desenvolvimento de software utilizando a programação orientada a objetos.

� Apresentar os métodos de leitura de escrita e as convenções aplicáveis a eles.

� Explorar diversas formas de validação de dados que podem

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Explorar diversas formas de validação de dados que podem ser realizadas nos métodos de escrita e nos construtores.

� Analisar o uso de atributos estáticos, métodos estáticos e atributos constantes.

Page 3: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

� Classes: tipos de membros

� Atributos

� Construtores

� Métodos

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 4: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

� Níveis de visibilidade

� Definição: intensidade das restrições

� Quantidade: 4

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 5: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

� Encapsulamento

� Mecanismo da POO

� Define níveis de visibilidade

� Tipos:

� Público

� Privado

� Protegido

� Pacote (padrão)

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 6: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

� Diretivas – qualificadores – modificadores de acesso

� Public

� Protected

� Private

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 7: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

� Encapsulamento público

� O mais permissivo

� Acesso externo livre

� Regra geral: inadequado para atributos

� Encapsulamento privado

� O mais restritivo

� Acesso externo bloqueado

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Acesso externo bloqueado

� Regra geral: inadequado para construtores

� Encapsulamento protegido

� Restrição moderada

� Acesso externo limitado ao pacote e a subclasses

Page 8: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 9: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Introdução

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 10: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Públicos e Quebra de Integridade de Conteúdo

� Responsabilidade das classes

� Manter a integridade do conteúdo de seus atributos

� Atributos públicos têm acesso externo livre

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 11: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Públicos e Quebra de Integridade de Conteúdo

� Código 13.1 – Professor.java

� Implemente a classe Professor conforme representação.

� Código 13.2 – TestaProfessor.java

� Implemente a classe TestaProfessor conforme representação.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Professor.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores inválidos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

�Modifique o conteúdo de seus atributos com valores inválidos.

� Recupere e exiba o conteúdo de seus atributos.

Page 12: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Bloqueio do Acesso Externo aos Atributos

� Prescrição

� Atributos privados

� Problema

� Atributos totalmente inacessíveis

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 13: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Bloqueio do Acesso Externo aos Atributos

� Código 13.3 – Aluno.java

� Implemente a classe Aluno conforme representação.

� Código 13.4 – TestaAluno.java

� Implemente a classe TestaAluno conforme representação.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Aluno.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores inválidos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

�Modifique o conteúdo de seus atributos com valores inválidos.

� Recupere e exiba o conteúdo de seus atributos.

Page 14: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Bloqueio do Acesso Externo aos Atributos

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 15: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos de Leitura e Escrita

� Finalidade

� Intermediar o acesso aos atributos

� Método de leitura

� Recupera o conteúdo

� Prefixo: get

� Método de escrita

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Método de escrita

� Modifica o conteúdo

� Prefixo: set

Page 16: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos de Leitura e Escrita

� Código 13.5 – Curso.java

� Implemente a classe Curso conforme representação.

� Código 13.6 – TestaCurso.java

� Implemente a classe TestaCurso conforme representação.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Curso.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores válidos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

�Modifique o conteúdo de seus atributos com valores válidos.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores inválidos.

� Recupere e exiba o conteúdo de seus atributos.

Page 17: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos de Leitura e Escrita

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 18: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validações nos Métodos de Escrita

� Finalidade:

� Impedir a gravação de dados inválidos nos atributos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 19: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validações nos Métodos de Escrita

o Código 13.7 – Disciplina.java

– Implemente a classe Disciplina conforme representação.

– Implementar validações nos métodos de escrita:

• Código: deve ser um número inteiro positivo.

• Descrição: deve conter de 5 a 50 caracteres.

o Código 13.8 – TestaDisciplina.java

– Implemente a classe TestaDisciplina conforme representação.

– Implemente o seguinte procedimento no seu método main( ):– Implemente o seguinte procedimento no seu método main( ):

• Instancie um objeto da classe Disciplina.

• Recupere e exiba o conteúdo de seus atributos.

• Modifique o conteúdo de seus atributos com valores válidos.

• Recupere e exiba o conteúdo de seus atributos.

• Modifique o conteúdo de seus atributos com valores inválidos.

• Recupere e exiba o conteúdo de seus atributos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 20: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validações nos Métodos de Escrita

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 21: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Unchecked Exceptions nos Métodos de Escrita

� Finalidade

� Sinalizar quando um dado inválido for identificado

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 22: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Unchecked Exceptions nos Métodos de Escrita

� Código 13.9 – Livro.java

� Implemente a classe Livro conforme representação.

� Regras para a validação dos dados:

� Código: deve ser um número inteiro positivo

� Título: deve conter de 5 a 50 caracteres

� Disparar unchecked exceptions nos métodos de escrita

� setCodigo( ): IllegalArgumentException

� setTitulo( ): NullPointerException e IllegalArgumentException

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

setTitulo( ): NullPointerException e IllegalArgumentException

Page 23: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Unchecked Exceptions nos Métodos de Escrita

� Código 13.10 – TestaLivro.java

� Implemente a classe TestaLivro conforme representação.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Livro.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores válidos.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores inválidos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Recupere e exiba o conteúdo de seus atributos.

Page 24: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Unchecked Exceptions nos Métodos de Escrita

� Código 13.11 – TestaLivroProtegido.java

� Implemente a classe TestaLivroProtegido.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Livro.

� Recupere e exiba o conteúdo de seus atributos.

�Modifique o conteúdo de seus atributos com valores inválidos.

� Recupere e exiba o conteúdo de seus atributos.

� Proteja as instruções que invocam os métodos de escrita.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Proteja as instruções que invocam os métodos de escrita.

� Tratamento para RuntimeException

Page 25: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Unchecked Exceptions nos Métodos de Escrita

� Código 13.12 – CadastroLivros.java

� Implemente a classe CadastroLivros.

� Implemente o seguinte procedimento no seu método main( ):

� Crie um vetor capaz de armazenar até 100 objetos da classe Livro.

� Permita que o usuário cadastre até 100 livros.

o Grave os dados de cada livro em um objeto da classe Livro.

o Grave todos os objetos criados no vetor supracitado.

� Se o usuário informar um dado inválido, solicite-o novamente.

� Ao final, exiba um relatório de todos os livros cadastrados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Ao final, exiba um relatório de todos os livros cadastrados.

Page 26: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Unchecked Exceptions nos Métodos de Escrita

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 27: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Checked Exceptions nos Métodos de Escrita

� Finalidade

� Tornar o tratamento obrigatório

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 28: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Checked Exceptions nos Métodos de Escrita

� Código 13.13 – Autor.java

� Implemente a classe Autor conforme representação.

� Regras para a validação dos dados:

� Código: deve ser um número inteiro positivo

�Nome: deve conter de 5 a 50 caracteres

� Disparar checked exceptions nos métodos de escrita

� Sinalizar toda exceção como Exception

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 29: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Checked Exceptions nos Métodos de Escrita

� Código 13.14 – CadastroAutores.java

� Implemente a classe CadastroAutores.

� Implemente o seguinte procedimento no seu método main( ):

� Crie um vetor capaz de armazenar até 100 objetos da classe Autor.

� Permita que o usuário cadastre até 100 autores.

o Grave os dados de cada autor em um objeto da classe Autor.

o Grave todos os objetos criados no vetor supracitado.

� Se o usuário informar um dado inválido, solicite-o novamente.

� Ao final, exiba um relatório de todos os autores cadastrados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Ao final, exiba um relatório de todos os autores cadastrados.

Page 30: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Uso de Checked Exceptions nos Métodos de Escrita

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 31: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Representação Textual Através do Método toString( )

� Contexto

� Todas as classes derivam de Object

� Um dos métodos de Object é o toString( )

� Finalidade: representação textual do objeto

� Assinatura:

public String toString( )

� Retorno padrão:

o O nome da classe do objeto

o @

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

o @

o Representação hexadecimal do código de hash do objeto

Page 32: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Representação Textual Através do Método toString( )

� Código 13.15 – ImprimeLivro.java

� Implemente a classe ImprimeLivro.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Livro.

�Modifique o conteúdo de seus atributos com valores válidos.

�Ordene a impressão deste objeto através de um diálogo.

� Instancie outro objeto da classe Livro.

�Modifique o conteúdo de seus atributos com valores válidos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

�Ordene a impressão deste objeto através de um diálogo.

Page 33: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Representação Textual Através do Método toString( )

� Código 13.16 – Assunto.java

� Implemente a classe Assunto conforme representação.

� Retorno do método toString( ):

�Nome da classe

�Um espaço

� Código

� Dois-pontos

�Um espaço

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Descrição

Page 34: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Representação Textual Através do Método toString( )

� Código 13.17 – TestaAssunto.java

� Implemente a classe TestaAssunto.

� Implemente o seguinte procedimento no seu método main( ):

� Instancie um objeto da classe Assunto.

�Ordene a impressão deste objeto através de um diálogo.

� Instancie outro objeto da classe Livro.

�Ordene a impressão deste objeto através de um diálogo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 35: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validação de Dados no Construtor

� Motivação

� Forma alternativa ao uso de métodos de escrita

� Garantir a validade do conteúdo dos atributos desde o princípio

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 36: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validação de Dados no Construtor

� Código 13.18 – Computador.java

� Implemente a classe Computador conforme representação.

� Implementar validações no construtor:

� Código: deve ser um número inteiro positivo.

� Descrição: deve conter de 5 a 50 caracteres.

� Sinalizar exceções no construtor com Exception

� Retorno do método toString( ):

� <Nome da classe> <código>: <descrição>

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� <Nome da classe> <código>: <descrição>

Page 37: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validação de Dados no Construtor

� Código 13.19 – CadastroComputadores.java

� Implemente a classe CadastroComputadores.

� Implemente o seguinte procedimento no seu método main( ):

� Crie um vetor para armazenar até 100 objetos da classe Computador.

� Permita que o usuário cadastre até 100 computadores.

o Grave os dados de cada computador em um objeto da classe Computador.

o Grave todos os objetos criados no vetor supracitado.

� Se o usuário informar um dado inválido, solicite-o novamente.

� Ao final, exiba um relatório de todos os computadores cadastrados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Ao final, exiba um relatório de todos os computadores cadastrados.

Page 38: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Validação de Dados no Construtor

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 39: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Relação Assimétrica entre Atributos e Métodos de L/E

� Atributo sem método de Leitura

� Atributo sem método de Escrita

� Atributo sem métodos de L/E

� Atributo com métodos de escrita sobrecarregados

� Atributo manipulado por métodos diversos

� Método de leitura sem atributo

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 40: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Relação Assimétrica entre Atributos e Métodos de L/E

� Código 13.20 – Conta.java

� Implemente a classe Conta conforme representação.

� Implementar validações no construtor:

�Número: deve ser um número inteiro positivo.

� Sinalizar exceções com Exception

� Retorno do método getDisponível( ): saldo + limite

� Validações nos métodos de escrita:

� Limite: deve ser um valor maior ou igual a zero.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Limite: deve ser um valor maior ou igual a zero.

� Sinalizar exceções com Exception

� Validações no método sacar( ):

� Valor: não deve ser superior à soma do saldo e do limite.

� Sinalizar exceções com Exception

� Retorno do método toString( ):

� Conta <número> : <saldo> || <limite> || <disponível>

Page 41: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Relação Assimétrica entre Atributos e Métodos de L/E

� Código 13.21 – OperadorConta.java

� Implemente a classe OperadorConta.

� Implemente o seguinte procedimento no seu método main( ):

� Declare um objeto da classe Conta .

� Solicite o número da conta e instancie o objeto supracitado.

o Número inválido: exiba uma mensagem de erro e solicite-o novamente.

� Solicite o limite da conta e o grave no objeto supracitado.

o Limite inválido: exiba uma mensagem de erro e solicite-o novamente.

� Solicite a operação:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Solicite a operação:

o D = Depósito

o S = Saque

�Operação inválida: mensagem de erro e nova solicitação.

� Solicite o valor da operação.

� Realize a operação utilizando o objeto supracitado.

� Exiba o novo estado da conta.

Page 42: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Relação Assimétrica entre Atributos e Métodos de L/E

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 43: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos Estáticos

� Introdução

� Métodos de classe

� Tarefas independentes das instâncias

� Sintaxe:

[encapsulamento] static <tipo> <nome>([parâmetros]){

}

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

}

Page 44: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos Estáticos

� Código 13.22 – Dialogo.java

� Especificação do método captar( ):

� Solicitar um dado através de um diálogo gráfico.

� Parâmetros:

o mensagem: o texto a ser exibido no diálogo.

� Retorno: o dado informado.

� Especificação do método exibir( ):

� Exibir um texto através de um diálogo gráfico.

Parâmetros:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Parâmetros:

o texto: o texto a ser exibido no diálogo.

Page 45: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos Estáticos

� Código 13.23 – TestaDialogo.java

� Solicite o nome do usuário.

� Exiba uma mensagem com este nome.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 46: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Estáticos

� Introdução

� Atributo de classe

� Informação compartilhada entre instâncias

� Um valor único

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 47: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Estáticos

� Sintaxe:

[encapsulamento] static <tipo> <nome>;

� Exemplo:

public class Aliquota {

public static double ir;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

public static double ir;

public static double inss;

}

� Formas de acesso:

Aliquota.inss = 11;

Aliquota aliquota = new Aliquota( );

aliquota.inss = 11;

Page 48: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Estáticos

� Código 13.24 – Doenca.java

� Especificação do construtor:

� Inicializar os atributos codigo e descricao.

� Incrementar o atributo quantidade.

� Especificação do método toString( ):

� Doença <código>: <descrição>

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 49: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Estáticos

� Código 13.25 – TestaDoenca.java

� Crie duas instâncias da classe doença.

� Exibia a representação textual destas instâncias.

� Exiba a quantidade de instâncias criadas.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 50: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Constantes

� Introdução

� Conteúdo imutável

� Sintaxe:

[encapsulamento] final <tipo> <nome> = <valor>;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 51: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Constantes

� Código 13.26 – Atleta.java

� Especificação do construtor:

� Inicializar atributos codigo e descricao.

� Especificação do método toString( ):

� <nome> - <sexo>

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 52: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Atributos Constantes

� Código 13.27 – TestaAtleta.java

� Crie duas instâncias da classe Atleta.

� Exibia a representação textual destas instâncias.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 53: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos de Leitura para Atributos Booleanos

� Convenção de nomes: regra geral

� Método de leitura: prefixo “get”

� Método de escrita: prefixo “set”

� Exemplo:

private String nome;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

public String getNome( ) {

}

public void setNome(String nome) {

}

Page 54: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Métodos de Leitura para Atributos Booleanos

� Convenção de nomes: exceção

� Atributos booleanos: prefixo “is”

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 55: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 1

� Crie um novo aplicativo que permita cadastrar até 1.000 gêneros de filmes.

� Este aplicativo deve ser composto pelas classes Genero e CadastroGeneros.

� Especificações da classe Genero.

� O construtor deve apenas inicializar seu atributo descricao.

� Os métodos de escrita não devem realizar qualquer tipo de validação sobre os dados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

validação sobre os dados.

Page 56: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 1

� O método main( ) da classe CadastroGeneros deve realizar o seguinte procedimento:

� Crie um vetor para armazenar até 1000 objetos da classe Genero.

� Permita que o usuário cadastre até 1000 gêneros.

�Grave os dados de cada gênero em um objeto da classe Genero.

�Grave todos os objetos criados no vetor supracitado.

� Ao final, exiba um relatório de todos os gêneros cadastrados.

� Não implemente nenhum tipo de validação de dados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Não implemente nenhum tipo de validação de dados.

Page 57: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 1

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 58: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 2

� Crie um novo aplicativo que permita cadastrar até 200 funcionários.

� Este aplicativo deve ser composto pelas classes Funcionario e CadastroFuncionarios.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 59: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 2

� Especificações da classe Funcionario.

� O construtor deve inicializar seu atributo nome.

� Os métodos de escrita devem disparar exceções do tipo IllegalArgumentException se um dado inválido for recebido.

� Regras para validação dos dados nos métodos de escrita:

�Matrícula: deve ser um número inteiro positivo.

�Nome: deve conter de 5 a 50 caracteres.

� Salário: deve ser um valor não inferior a R$ 465,00.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 60: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 2

� O método main( ) da classe CadastroFuncionario deve realizar o seguinte procedimento:

� Crie um vetor para armazenar até 200 objetos da classe Funcionario.

� Permita que o usuário cadastre até 200 funcionários.

�Grave os dados de cada funcionário em um objeto.

�Grave todos os objetos criados no vetor supracitado.

� Se um dado inválido for informado, exiba uma mensagem de erro e solicite-o novamente.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

solicite-o novamente.

� Ao final, exiba um relatório dos funcionários cadastrados.

Page 61: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 2

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 62: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 3

� Crie um novo aplicativo que permita cadastrar até 500 fornecedores.

� Este aplicativo deve ser composto pelas classes Fornecedor e CadastroFornecedores.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 63: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 3

� Especificações da classe Fornecedor.

� O construtor deve inicializar os atributos de tipo String.

� Os métodos de escrita devem disparar exceções do tipo Exception se um dado inválido for recebido.

� Regras para validação dos dados nos métodos de escrita:

� Código: deve ser um número inteiro positivo.

� Razão social: deve conter de 5 a 50 caracteres.

� Telefone: deve conter 10 dígitos numéricos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� E-mail:

o Deve conter de 5 a 50 caracteres.

o Deve conter uma única arroba: @.

o Deve haver ao menos 2 caracteres antes da @.

o Deve haver ao menos 2 caracteres depois da @.

Page 64: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 3

� O método main( ) da classe CadastroFornecedores deve realizar o seguinte procedimento:

� Crie um vetor para armazenar até 500 objetos da classe Fornecedor.

� Permita que o usuário cadastre até 500 fornecedores.

�Grave os dados de cada fornecedor em um objeto.

�Grave todos os objetos criados no vetor supracitado.

� Se um dado inválido for informado, exiba uma mensagem de erro e solicite-o novamente.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

solicite-o novamente.

� Ao final, exiba um relatório dos fornecedores cadastrados.

Page 65: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 3

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 66: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 4

� Crie um novo aplicativo que permita simular o controle de operações de entrada e saída de estoque de um único produto.

� Este aplicativo deve ser composto pelas classes Produto e OperadorEstoque.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 67: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 4

� Especificações da classe Produto.

� O construtor deve inicializar o atributo descricao.

� Os métodos de escrita devem disparar exceções do tipo Exception se um dado inválido for recebido.

� Regras para validação dos dados nos métodos de escrita:

� Código: deve ser um número inteiro positivo.

� Razão social: deve conter de 5 a 50 caracteres.

� Método registrarEntrada( ):

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Método registrarEntrada( ):

� Deve somar a quantidade ao saldo já existente.

� Exceções:

o Quantidade menor ou igual a zero: “Quantidade inválida”.

� Método registrarSaida( ):

� Deve subtrair a quantidade do saldo existente.

� Exceções:

o Quantidade menor ou igual a zero: “Quantidade inválida”.

o Quantidade maior que o saldo: “Saldo insuficiente”.

Page 68: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 4

� O método main( ) da classe OperadorEstoque deve realizar o seguinte procedimento:

� Crie uma instância da classe Produto.

� Solicite o código e a descrição do produto e grave-os no objeto.

� Se um dado informado for inválido, exiba uma mensagem de erro e solicite-o novamente.

� Inicie uma estrutura de repetição que só seja encerrada quando o usuário cancelar um dos diálogos de entrada.

� Solicite a operação desejada:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Solicite a operação desejada:

o E = Registrar entrada.

o S = Registrar saída.

� Solicite a quantidade.

� Atualize o saldo do produto através do método correspondente.

� Exiba o saldo atualizado do produto.

Page 69: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 4

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 70: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 5

� Crie um novo aplicativo que permita cadastrar até 10 vendedores.

� Este aplicativo deve ser composto pelas classes Vendedor e CadastroVendedores.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 71: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 5

� Especificações da classe Vendedor.

� O atributo nrInstancias deve ser declarado como um atributo estático e representa o número de instâncias da classe Vendedor que foram criadas.

� O construtor deve:

� Inicializar o atributo nome.

� Incrementar o atributo nrInstancias.

� Os métodos de escrita não devem validar os dados e tampouco lançar exceções.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

lançar exceções.

Page 72: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 5

� O método main( ) da classe CadastroVendedores deve realizar o seguinte procedimento:

� Crie um vetor para armazenar até 10 funcionários.

� Permita que o usuário cadastre até 10 funcionários.

�Grave os dados de cada funcionário em um objeto.

�Grave todos os objetos criados no vetor supracitado.

�Utilize um laço while para a simulação dos cadastros.

o Utilize o método getNrInstancias() na condição deste laço.

Ao final, exiba um relatório dos funcionários cadastrados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Ao final, exiba um relatório dos funcionários cadastrados.

� Não implemente nenhum tipo de validação de dados.

Page 73: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 5

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 74: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 6

� Crie um novo aplicativo que permita cadastrar até 100 motoristas.

� Este aplicativo deve ser composto pelas classes Motorista e CadastroMotoristas.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 75: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 6

� Especificações da classe Motorista.

� Descrição dos atributos:

� cnh: o número da CNH (Carteira Nacional de Habilitação).

� nome: o nome completo do motorista.

� situação: N (Normal) ou S (Suspenso).

� SITUACAO_NORMAL: contém o caractere que deve ser armazenado no atributo situacao quando a situação motorista é normal.

� SITUACAO_SUSPENSO: contém o caractere que deve ser armazenado no atributo situacao quando a CNH do motorista foi suspensa.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

no atributo situacao quando a CNH do motorista foi suspensa.

� O construtor deve inicializar os atributos nome e situacao (N).

� Não deve haver método de leitura para nenhum atributo. A única forma de recuperar os dados contidos nos atributos é através da representação textual do objeto, ou seja, do método toString( ).

� Os métodos de escrita não devem validar os dados e tampouco lançar exceções.

Page 76: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 6

� O método main( ) da classe CadastroMotorista deve realizar o seguinte procedimento:

� Crie um vetor para armazenar até 100 motoristas.

� Permita que o usuário cadastre até 100 motoristas.

�Grave os dados de cada motorista em um objeto.

�Grave todos os objetos criados no vetor supracitado.

� Ao final, exiba um relatório dos motoristas cadastrados.

� Não implemente nenhum tipo de validação de dados.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Não implemente nenhum tipo de validação de dados.

Page 77: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Exercício 6

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 78: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap13.pdf · Diretivas –qualificadores –modificadores de acesso Public Protected Private Rui Rossi

Contato

Com o autor:

Rui Rossi dos Santos

E-mail: [email protected]

Web Site: http://www.ruirossi.pro.br

Com a editora:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Com a editora:

Editora NovaTerra

E-mail Geral: [email protected]

E-mail Comercial: [email protected]

Web Site: http://www.editoranovaterra.com.br