A Anatomia das Classes

Propaganda
Capítulo 12
A Anatomia das Classes
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Objetivos do Capítulo
Relacionar cada um dos elementos constitutivos das classes:
os atributos, os construtores e os métodos.
Apresentar a sintaxe utilizada para a declaração de classes e
para a instanciação de objetos.
Indicar como são declarados os atributos de uma classe e
como podem ser empregados para o armazenamento de
dados dos objetos que a ela pertencem.
Analisar o papel dos construtores para a instanciação de
objetos e para a inicialização de seus atributos.
Apontar como as ações e serviços de um conjunto de objetos
podem ser implementados na forma de métodos em sua
classe.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Introdução
Membros das classes:
Atributos
Construtores
Métodos
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Declaração de Classes
Sintaxe
[public] [abstract|final] class <NomeDaClasse> {
}
Exemplo:
public class Professor {
}
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Instanciação de Classes
Significado:
Criação de objetos
Declaração de objetos: sintaxe
<NomeDaClasse> <NomeDoObjeto>;
Declaração de objetos: exemplos
Professor professor_augusto;
Professor professor_cezar;
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Instanciação de Classes
Instanciação de classes: sintaxe
<nomeDoObjeto> = new <construtor>([argumentos]);
Instanciação de classes: exemplos
professor_augusto = new Professor();
professor_cezar = new Professor(“Cezar Botelho”);
Declaração e instanciação de classes: exemplos
Professor professor_augusto = new Professor();
Professor professor_cezar = new Professor(“Cezar Botelho”);
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Atributos
Definição:
Dados membro
Variáveis de instância
Características dos objetos
Declarados no corpo da classe
Sintaxe:
[encapsulamento] <tipo> <nomeDoAtributo>;
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Atributos
Exemplos:
public class Endereco {
public byte tipo;
public String logradouro;
public int numero;
public String complemento;
public String bairro;
public String cep;
public String cidade;
public String estado;
}
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Atributos
Inicialização:
Endereco endereco_residencial = new Endereco( );
endereco_residencial.tipo = 1;
endereco_residencial.logradouro = “Rua XV de Novembro”;
endereco_residencial.numero = 1556;
endereco_residencial.complemento = “Apartamento 112”;
endereco_residencial.bairro = “Centro”;
endereco_residencial.cep = “85903-550”;
endereco_residencial.cidade = “Toledo”;
endereco_residencial.estado = “Paraná”;
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Atributos
Código 12.1 – Cliente.java
Implemente a classe Cliente conforme representação.
Código 12.2 – TestaCliente.java
Implemente a classe TestaCliente conforme representação.
Implemente o seguinte procedimento no seu método main( ):
Instancie dois objetos da classe Cliente.
Armazene um dado em cada atributo destes objetos.
Recupere e exiba o conteúdo dos atributos destes objetos.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Construtores
Finalidade:
Instanciação de classes.
Inicialização de atributos.
Sintaxe:
public <NomeDoConstrutor>([parâmetros]) {
}
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Construtores
Código 12.3 – Gato.java
Implemente a classe Gato conforme representação.
O construtor deve inicializar todos os atributos.
Código 12.4 – TestaGato.java
Implemente a classe TestaGato conforme representação.
Implemente o seguinte procedimento no seu método main( ):
Instancie um objeto da classe Gato.
Recupere e exiba o conteúdo dos atributos deste objeto.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Construtores
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Construtores
Código 12.5 – Peixe.java
Implemente a classe Peixe conforme representação.
Os dois construtores devem inicializar os atributos.
Código 12.6 – TestaPeixe.java
Implemente a classe TestaPeixe conforme representação.
Implemente o seguinte procedimento no seu método main( ):
Instancie um objeto da classe Peixe utilizando seu construtor padrão.
Armazene um dado em cada atributo deste objeto.
Instancie um objeto da classe peixe com seu construtor alternativo.
Recupere e exiba o conteúdo dos atributos do primeiro objeto.
Recupere e exiba o conteúdo dos atributos do segundo objeto.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Construtores
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Métodos
Definição:
Tarefas realizadas pelos objetos.
Serviços prestados pelos objetos.
Operações realizadas com os objetos no interior do programa.
Sintaxe:
[encapsulamento] <tipo> <identificador>([parâmetros]) {
}
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Métodos
Exemplos:
public int some(int primeiroValor, int segundoValor) {
int resultado;
resultado = primeiroValor + segundoValor;
return resultado;
}
public void exibir(String texto) {
JOptionPane.showMessageDialog(null,texto);
}
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Métodos
Código 12.7 – Matematico.java
Implemente a classe Matematico conforme representação.
Especificação do método fatorial( ):
Parâmetro valor: número inteiro igual ou inferior a 127.
Retorno: o fatorial deste número
Obs.: o fatorial de zero é um.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Métodos
Código 12.8 – TestaMatematico.java
Implemente a classe TestaMatematico conforme representação.
Implemente o seguinte procedimento no seu método main( ):
Peça ao usuário que informe dois números.
o Se ocorrer uma NumberFormatException, exiba uma mensagem e encerre
o programa.
Crie uma instância da classe Matematico.
Utilize os métodos deste objeto para realizar os seguintes cálculos
com os dois valores informados:
o
o
o
o
o
Some os dois valores.
Subtraia o segundo do primeiro.
Multiplique os dois valores.
Divida o primeiro pelo segundo.
Calcule o fatorial de ambos.
Exiba uma mensagem com todos os resultados.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Métodos
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Métodos
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Código 12.9 – Estado.java
Implemente a classe Estado conforme representação.
Especificação dos métodos:
exibirDados( ): deve exibir o conteúdo dos dois atributos, separados
por um hífen, através de um diálogo gráfico. A sigla deve ser
apresentada em maiúsculo.
recuperarDados( ): deve retornar uma string com o conteúdo dos dois
atributos, separados por um hífen. A sigla deve ser apresentada em
maiúsculo.
validarNome( ): deve avaliar se seu parâmetro contém um valor válido
para ser armazenado no atributo nome da classe. Ele só será válido
se tiver de 2 a 50 caracteres. Este método deve retornar true para
indicar que o dado é válido e retornar false para indicar que o dado é
inválido.
validarSigla( ): deve avaliar se seu parâmetro contém um valor válido
para ser armazenado no atributo sigla da classe. Ele só será válido se
tiver de 2 caracteres. Este método deve retornar true para indicar que
o dado é válido e retornar false para indicar que o dado é inválido.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Código 12.10 – CadastroEstado.java
Implemente a classe CadastroEstado conforme representação.
Implemente o seguinte procedimento em seu método main( ):
Instancie um objeto da classe Estado.
Solicite ao usuário o nome e a sigla do estado a ser cadastrado e
grave-os nos atributos correspondentes deste objeto.
Se o usuário cancelar um destes diálogos, encerre o aplicativo.
Utilize o método exibirDados( ) para exibir o conteúdo dos atributos
deste objeto.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Código 12.11 – CadastroEstados.java
Implemente a classe CadastroEstados conforme representação.
Implemente o seguinte procedimento em seu método main( ):
Crie um vetor capaz de armazenar até 26 objetos da classe Estado.
Permita que o usuário registre os dados de até 26 estados.
o Grave os dados de cada estado em um objeto da classe Estado.
o Grave todos os objetos criados no vetor supracitado.
Ao final, apresente um relatório contendo os dados de todos os
estados que foram cadastrados.
o Recupere os objetos que foram gravados no vetor.
o Utilize o método recuperarDados( ) destes objetos para obter o conteúdo
de seus atributos.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Código 12.12 – CadastroEstadosValidacao.java
Implemente a classe CadastroEstadosValidacao.
Implemente o seguinte procedimento em seu método main( ):
Crie um vetor capaz de armazenar até 26 objetos da classe Estado.
Permita que o usuário registre os dados de até 26 estados.
o Grave os dados de cada estado em um objeto da classe Estado.
o Grave todos os objetos criados no vetor supracitado.
Se o usuário informar um dado inválido, solicite-o novamente.
o Realize a validação do nome com o método validarNome( ) da classe Estado.
o Realize a validação da sigla com o método validarSigla( ) da classe Estado.
Ao final, apresente um relatório contendo os dados de todos os
estados que foram cadastrados.
o Recupere os objetos que foram gravados no vetor.
o Utilize o método recuperarDados( ) destes objetos para obter o conteúdo de seus
atributos.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Unindo as Partes
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 1
Crie um novo aplicativo que capte o nome completo de
pessoas e indique quais são as suas iniciais.
Este aplicativo deve ser composto por duas classes: Pessoa
e GeradorIniciais.
Implemente estas classes de acordo com a representação a
seguir.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 1
Especificação dos métodos da classe Pessoa.
validarNome( ): este método deve avaliar se determinada string é
um nome completo válido.
O nome só é válido quando:
o Possui de 5 a 50 caracteres.
o É composto de duas partes.
o Cada parte contém pelo menos 2 caracteres.
Parâmetros:
o nome: uma string contendo o nome a ser avaliado.
Retorno: true quando o dado é válido e false quando o dado é inválido.
gerarIniciais( ): este método deve produzir a string
correspondente às iniciais do nome de uma pessoa.
Este método deve utilizar o conteúdo do atributo nome como valor de
entrada para a realização desta operação.
As iniciais devem ser compostas apenas por letras maiúsculas (A-Z).
Retorno: uma string com as iniciais da pessoa.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 1
Dica para implementação dos métodos da classe Pessoa.
Utilize o método split( ) da classe String sempre que precisar
desmembrar o nome completo em suas partes.
String str = “Rui Rossi dos Santos”;
String[ ] partes = str.split(“ ”);
Para testar se este nome contém menos de duas partes:
if (partes.length < 2) ... ;
Para recuperar o primeiro caractere de cada parte:
for (String s : partes) {
char c = s.charAt(0);
...
}
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 1
O método main( ) da classe GeradorIniciais deve captar o
nome completo de pessoas e indicar quais são as suas
iniciais.
Fluxo normal:
O usuário informa o nome completo de uma pessoa.
O aplicativo exibe as iniciais deste nome.
O aplicativo solicita outro nome.
Tratamento de fluxos excepcionais:
O nome informado não é válido.
o Exibir mensagem de erro: “nome inválido!”.
o Solicitar novamente o nome.
O usuário cancela o diálogo de entrada onde deveria informar o nome.
o O aplicativo é encerrado.
Utilize uma instância da classe Pessoa para validar e armazenar
o nome informado e para gerar as iniciais correspondentes a ele.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 1
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 2
Crie um novo aplicativo que calcule a área de um círculo com
base em sua circunferência.
Este aplicativo deve ser composto por duas classes: Circulo
e AreaCirculo.
Implemente estas classes de acordo com a representação a
seguir.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 2
Especificação dos métodos da classe Circulo.
validarCircunferencia( ): este método deve avaliar se
determinada string é uma circunferência válida.
A circunferência só é válida quando é um número maior que zero.
Parâmetros:
o cf: uma string contendo a circunferência de um círculo.
Retorno: true quando o dado é válido e false quando o dado é inválido.
Exceções a serem tratadas: RuntimeException.
calcularArea( ): este método deve calcular a área de um círculo
com base em sua circunferência.
Este método deve utilizar o conteúdo do atributo circunferencia como
valor de entrada para a realização desta operação.
Passos para a realização do cálculo:
o Divida o valor da circunferência do círculo pelo valor de PI e obtenha o
diâmetro deste círculo.
o Divida o diâmetro do círculo por 2 e obtenha o seu raio.
o Eleve o raio do círculo à segunda potência e multiplique este resultado
pelo valor de PI para obter sua área.
Retorno: a área do círculo.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 2
O método main( ) da classe AreaCirculo deve captar a
circunferência de um círculo e indicar qual é sua área.
Fluxo normal:
O usuário informa a circunferência de um círculo.
O aplicativo exibe a área deste círculo.
O aplicativo solicita a circunferência de outro círculo.
Tratamento de fluxos excepcionais:
A circunferência informada não é válida.
o Exibir mensagem de erro: “Dado inválido!”.
o Solicitar novamente a circunferência.
O usuário cancela o diálogo de entrada.
o O aplicativo é encerrado.
Utilize uma instância da classe Circulo para validar e armazenar
a circunferência informada e para calcular a sua área.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 2
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 3
Crie um novo aplicativo que capte o nome, peso e altura de
pacientes e que calcule seu IMC (Índice de Massa Corporal).
Este aplicativo deve ser composto por duas classes:
Paciente e TesteIMC.
Implemente estas classes de acordo com a representação a
seguir.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 3
Especificação dos métodos da classe Paciente.
validarNome( ): deve avaliar se determinado nome é válido.
O nome só é válido se tiver de 2 a 50 caracteres.
validarPeso( ): deve avaliar se determinada string contém um
peso válido.
O peso só é válido se for um número fracionário maior que 0,0 e
menor ou igual a 350,0.
Exceções a serem tratadas: RuntimeException.
validarAltura( ): deve avaliar se determinada string contém uma
altura válida.
A altura só é válida se for um número fracionário maior que 0,0 e
menor ou igual a 2,5.
Exceções a serem tratadas: RuntimeException.
calcularIMC( ): este método deve calcular o IMC de um paciente.
Este método deve utilizar o conteúdo dos atributos peso e altura
como valores de entrada para a realização desta operação.
Fórmula para a realização do cálculo:
IMC = Peso / Altura2
Retorno: o IMC do paciente.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 3
Especificação dos métodos da classe Paciente.
classificarIMC( ): este método deve analisar o IMC do paciente e
indicar a que categoria ele pertence.
Utilize o método calcularIMC( ) para implementar este método.
Retorno: a categoria a que pertence o IMC do paciente.
recuperarResultado( ): este método deve retornar uma string
contendo todos os dados do paciente.
Cada dado deve ser apresentado em uma linha distinta.
Os dados devem ser listados na seguinte ordem: nome, peso, altura,
IMC e categoria.
Rui Rossi dos Santos
IMC
Categoria
Até 18,4
Abaixo do peso
De 18,5 a 24,9
Peso normal
De 25,0 a 29,9
Sobrepeso
De 30,0 a 34,9
Obesidade Grau I
De 35,0 a 39,9
Obesidade Grau II
Acima de 40,0
Obesidade Grau III
Programação de Computadores em Java
Editora NovaTerra
Exercício 3
O método main( ) da classe TesteIMC deve captar o nome, o
peso e a altura de um paciente e exibir o resultado de seu
teste de IMC.
Fluxo normal:
O usuário informa o nome do paciente.
O usuário informa o peso do paciente.
O usuário informa a altura do paciente.
O aplicativo exibe o resultado de seu teste de IMC.
O aplicativo inicia outro teste de IMC.
Tratamento de fluxos excepcionais:
O usuário cancela um diálogo de entrada.
o O aplicativo é encerrado.
O nome informado não é válido.
o Exibir mensagem de erro: “Nome inválido!”.
o Solicitar novamente o nome.
O peso informado não é válido.
o Exibir mensagem de erro: “Peso inválido!”.
o Solicitar novamente o peso.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 3
Método main( ) da classe TesteIMC
Tratamento de fluxos excepcionais:
A altura informada não é válida.
o Exibir mensagem de erro: “Altura inválida!”.
o Solicitar novamente a altura.
Utilize uma instância da classe Paciente para validar e
armazenar o nome, o peso e a altura informados e para realizar o
teste de IMC e exibir o seu resultado.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 3
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 4
Crie um novo aplicativo que realize o cadastro de clientes.
Este aplicativo deve ser composto por duas classes: Cliente
e CadastroCliente.
Implemente estas classes de acordo com a representação a
seguir.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 4
Especificação dos métodos da classe Cliente.
recuperarDados( ): este método deve retornar uma string
contendo todos os dados do cliente.
Os dados devem ser apresentados separados por hífens.
validarNome( ): deve avaliar se determinado nome é válido.
O nome só é válido se tiver de 2 a 50 caracteres.
Só pode conter letras
o As letras podem ser maiúsculas (A-Z) ou minúsculas (a-z)
o Não pode conter nenhuma acentuação
validarTelefone( ): deve avaliar se determinado telefone é válido.
Só é válido se tiver 10 dígitos (Ex.: 4532789553)
validarEmail( ): deve avaliar se determinado e-mail é válido.
Deve conter de 5 a 50 caracteres.
Deve conter um único símbolo da arroba (@).
A arroba deve ser precedida por pelo menos 2 caracteres.
Deve haver pelo menos 2 caracteres após a arroba.
validarCpf( ): deve avaliar se determinado CPF é válido.
Só é válido se tiver 11 dígitos (Ex.: 87693288512)
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 4
O método main( ) da classe CadastroCliente deve captar os
dados de cadastrais de clientes e armazená-los em um vetor
de objetos.
Este aplicativo deve ser capaz de armazenar até 32767
cadastros de clientes.
Se um dado informado for inválido, o aplicativo deve exibir uma
mensagem de erro e solicitá-lo novamente.
Ao final, o aplicativo deve exibir uma mensagem contendo os
dados cadastrais que foram gravados.
Se o usuário cancelar qualquer diálogo de entrada, somente os
dados dos cadastros que já haviam sido concluídos devem ser
exibidos.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 4
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 5
Crie um novo aplicativo que realize o cadastro de produtos.
Este aplicativo deve ser composto por duas classes: Produto
e CadastroProduto.
Implemente estas classes de acordo com a representação a
seguir.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 5
Especificação dos métodos da classe Produto.
recuperarDados( ): deve retornar uma string contendo todos os
dados do produto.
Os dados devem ser apresentados separados por hífens.
O preço deve receber a formatação de um valor monetário.
validarCodigo( ): avalia se determinado código é válido.
Deve ser um número inteiro maior que zero.
Exceções a serem tratadas: RuntimeException.
validarDescricao( ): avalia se determinada descrição é válida.
Deve conter de 1 a 50 caracteres.
validarPreco( ): avalia se determinado preço é válido.
Deve ser um número fracionário maior que zero.
Exceções a serem tratadas: RuntimeException.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 5
O método main( ) da classe CadastroProduto deve captar os
dados de cadastrais de produtos e armazená-los em um vetor
de objetos.
Este aplicativo deve ser capaz de armazenar os cadastros de até
2.000.000 produtos.
Se um dado informado for inválido, o aplicativo deve exibir uma
mensagem de erro e solicitá-lo novamente.
Ao final, o aplicativo deve exibir uma mensagem contendo os
dados cadastrais que foram gravados.
Se o usuário cancelar qualquer diálogo de entrada, somente os
dados dos cadastros que já haviam sido concluídos devem ser
exibidos.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Exercício 5
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
E-mail Geral: [email protected]
E-mail Comercial: [email protected]
Web Site: http://www.editoranovaterra.com.br
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Download