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

Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

Embed Size (px)

Citation preview

Page 1: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

CapCapíítulo 13tulo 13EncapsulamentoEncapsulamento

Page 2: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

� Classes: tipos de membros

� Atributos

� Construtores

� Métodos

Page 4: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

� Níveis de visibilidade

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

� Quantidade: 4

Page 5: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

� Encapsulamento

� Mecanismo da POO

� Define níveis de visibilidade

� Tipos:

� Público

� Privado

� Protegido

� Pacote (padrão)

Page 6: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

� Diretivas – qualificadores – modificadores de acesso

� Public

� Protected

� Private

Page 7: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

� Encapsulamento público

� O mais permissivo

� Acesso externo livre

� Regra geral: inadequado para atributos

� Encapsulamento privado

� O mais restritivo

� 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

Page 9: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Introdução

Page 10: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

Page 11: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

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

Page 12: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Bloqueio do Acesso Externo aos Atributos

� Prescrição

� Atributos privados

� Problema

� Atributos totalmente inacessíveis

Page 13: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

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

Page 14: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Bloqueio do Acesso Externo aos Atributos

Page 15: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

� Modifica o conteúdo

� Prefixo: set

Page 16: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

� 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Métodos de Leitura e Escrita

Page 18: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Validações nos Métodos de Escrita

� Finalidade:

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

Page 19: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

• 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.

Page 20: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Validações nos Métodos de Escrita

Page 21: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Uso de Unchecked Exceptions nos Métodos de Escrita

� Finalidade

� Sinalizar quando um dado inválido for identificado

Page 22: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

Page 23: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

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

Page 24: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

� Tratamento para RuntimeException

Page 25: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 26: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Uso de Unchecked Exceptions nos Métodos de Escrita

Page 27: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Uso de Checked Exceptions nos Métodos de Escrita

� Finalidade

� Tornar o tratamento obrigatório

Page 28: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

Page 29: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 30: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Uso de Checked Exceptions nos Métodos de Escrita

Page 31: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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 @

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

Page 32: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

�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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

� Descrição

Page 34: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 35: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

Page 36: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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>

Page 37: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 38: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Validação de Dados no Construtor

Page 39: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

Page 40: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

� 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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:

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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

Page 43: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Métodos Estáticos

� Introdução

� Métodos de classe

� Tarefas independentes das instâncias

� Sintaxe:

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

}

Page 44: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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:

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

Page 45: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Métodos Estáticos

� Código 13.23 – TestaDialogo.java

� Solicite o nome do usuário.

� Exiba uma mensagem com este nome.

Page 46: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Atributos Estáticos

� Introdução

� Atributo de classe

� Informação compartilhada entre instâncias

� Um valor único

Page 47: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Atributos Estáticos

� Sintaxe:

[encapsulamento] static <tipo> <nome>;

� Exemplo:

public class Aliquota {

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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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>

Page 49: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 50: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Atributos Constantes

� Introdução

� Conteúdo imutável

� Sintaxe:

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

Page 51: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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>

Page 52: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Atributos Constantes

� Código 13.27 – TestaAtleta.java

� Crie duas instâncias da classe Atleta.

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

Page 53: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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;

public String getNome( ) {

}

public void setNome(String nome) {

}

Page 54: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Métodos de Leitura para Atributos Booleanos

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

� Atributos booleanos: prefixo “is”

Page 55: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 56: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 57: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 1

Page 58: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 2

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

� Este aplicativo deve ser composto pelas classes Funcionarioe CadastroFuncionarios.

Page 59: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 60: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

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

Page 61: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 2

Page 62: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 3

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

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

Page 63: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

� 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

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

Page 65: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 3

Page 66: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 67: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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

� 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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:

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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 4

Page 70: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 5

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

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

Page 71: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 72: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

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

Page 73: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 5

Page 74: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 6

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

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

Page 75: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

� 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-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

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.

Page 77: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Exercício 6

Page 78: Capítulo 13 - Rui Rossiruirossi.pro.br/livros/li-rui-pcj-cap13.pdf · Mecanismo da POO Define níveis de visibilidade Tipos: Público Privado Protegido Pacote (padrão) Rui Rossi

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

Contato

Com o autor:

Rui Rossi dos Santos

E-mail: [email protected]

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

Com a editora:

Editora NovaTerra

Telefone: (21) 2218-5314

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