13
ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS Revisão Rápida e Complementos 01.APLICAÇÃO JAVA Qualquer aplicação orientada a objeto possui, geralmente, um programa principal, através do qual efetua-se a chamada aos demais programas (classes). Essas chamadas são, na maioria das vezes, instanciações das demais classes. Considerando que a linguagem de programação seja Java, então o programa principal é o único programa da aplicação que possui o método main. Dessa forma, o programa principal ficará encarregado de instanciar as demais classes (programas) da aplicação e executá-las. Cada classe instanciada pela classe principal, por outro lado, executará um método em seu interior que, ao ser finalizado, retornará à linha seguinte no programa principal. Observe na figura a seguir a instanciação das classes ProgramaA e ProgramaB. Foram criados objetos para cada um dessas classes no código do ProgramaPrincipal. Figura 01.01 Assim, suponha que você deseja criar um programa que apresente o nome e os telefones de uma determinada pessoa, sendo que uma pessoa poderá ter nenhum, um ou vários telefones. Para essa hipotética solução, você deverá criar uma classe principal (que denominaremos de Principal), uma classe Pessoa e uma classe Fones. A classe Pessoa armazenará os dados de uma determinada pessoa em um determinado momento no programa. A classe Fones referencia os telefones da referida pessoa nesse momento específico.

ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS

Revisão Rápida e Complementos

01.APLICAÇÃO JAVA

Qualquer aplicação orientada a objeto possui, geralmente, um programa principal,

através do qual efetua-se a chamada aos demais programas (classes).

Essas chamadas são, na maioria das vezes, instanciações das demais classes.

Considerando que a linguagem de programação seja Java, então o programa principal é o único

programa da aplicação que possui o método main.

Dessa forma, o programa principal ficará encarregado de instanciar as demais classes

(programas) da aplicação e executá-las.

Cada classe instanciada pela classe principal, por outro lado, executará um método em seu

interior que, ao ser finalizado, retornará à linha seguinte no programa principal.

Observe na figura a seguir a instanciação das classes ProgramaA e ProgramaB.

Foram criados objetos para cada um dessas classes no código do ProgramaPrincipal.

Figura 01.01

Assim, suponha que você deseja criar um programa que apresente o nome e os

telefones de uma determinada pessoa, sendo que uma pessoa poderá ter nenhum, um ou vários

telefones.

Para essa hipotética solução, você deverá criar uma classe principal (que denominaremos de

Principal), uma classe Pessoa e uma classe Fones.

A classe Pessoa armazenará os dados de uma determinada pessoa em um determinado

momento no programa.

A classe Fones referencia os telefones da referida pessoa nesse momento específico.

Page 2: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS Como uma Pessoa poderá possuir um, nenhum ou mais de um telefone, teremos que incluir um

atributo na classe pessoa de tal forma que esse atributo deverá ser uma lista específica de

telefones, que denominaremos de listaFones.

Assim, esse atributo deverá ser uma coleção que deve comportar o tipo Fones.

Lembrando que uma coleção (ArrayList, Vector, List e outros) armazena objetos e possui

métodos como add (adiciona elementos na lista), remove (remove certo elemento da lista), size

(que retorna a quantidade de elementos da coleção) e outros, para manipular os seus

elementos.

Observe a representação do diagrama de classes correspondente.

Figura 01.02

O diagrama da figura 01.02 destaca alguns relacionamentos entre as classes.

Observe que a classe Pessoa se relaciona com a classe Fones através de uma linha contínua que

representa uma ligação denominada de associação.

Esse é um exemplo de um, entre vários, relacionamentos que podemos ter entre duas ou mais

classes.

No referido diagrama a classe Pessoa se relaciona com a classe Fones de tal forma que uma

pessoa poderá ter nenhum ou vários telefones.

Isso é indicado no relacionamento através da multiplicidade 0..* (ao lado da classe Pessoa).

Além disso, nesse caso, esse relacionamento, denominado de “associação”, possui uma seta

apontando para a classe Fones, indicando que só a classe Pessoa “enxerga” a classe Fones.

Como regra geral, uma associação entre duas classes exige que uma classe encapsule uma

instância da outra classe e vice-versa.

Como a classe Pessoa possui uma associação que aponta para a classe Fones, então apenas a

classe Pessoa terá como atributo uma instância da classe Fones.

Esse atributo, no entanto será uma coleção de telefones, visto que uma pessoa poderá ter

nenhum ou vários telefones.

Page 3: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS Dessa forma, a classe Pessoa possui o atributo listaFones<Fones> do tipo Vector, que, nesse

caso, é uma coleção de objetos do tipo Fones.

Então, de acordo com a figura 01.02, temos os seguintes trechos de código para cada uma das

classes do diagrama:

Código da classe Fones.java

Código da classe Pessoa.java

A classe Pessoa possui o atributo listaFones do tipo Vector, que corresponde ao relacionamento

entre as classes Pessoa e Fones.

Código da classe Principal.java

Page 4: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS

Observe que as outras duas classes (Pessoa e Fones) foram instanciadas dentro do programa

principal.

Observe que foi criada a variável aux, do tipo Vector, para armazenar as instâncias dos telefones

de uma pessoa.

Essa variável, posteriormente, na linha 19, é armazenada no atributo listaFones da class Pessoa.

Observe atentamente o método mostraPessoas. Qualquer dúvida em relação código desse

método, procure o professor.

Como explicado anteriormente, as classes Pessoa e Fones são denominadas de beans, que são

classes que possuem um método construtor vazio e os métodos getXxx e setXxx (denominados

de métodos getters e setters).

O Xxx no nome representa o nome de cada atributo da classe correspondente.

Um método getXxx (denominado de método acessador) retorna o valor do atributo

correspondente.

Um método setXxx (denominado de método modificador) atribui ou altera o conteúdo do

atributo correspondente.

Considerando que a classe Pessoa, do exemplo anterior, possui os atributos cpf, nome e

listaFones, então ela tem os seguintes métodos getters/setters:

getCpf(), setCpf(), getNome(), setNome(), getListaFones() e setListaFones().

A utilização dos métodos getXxx e setXxx não é um padrão. É apenas uma recomendação dos

profissionais da Sun/Oracle para facilitar o uso de certos frameworks.

Page 5: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS 02. PROCESSANDO INFORMAÇÕES DE ARQUIVOS

Vamos considerar que você necessite ler informações de um arquivo na linguagem Java.

Para isso, necessita-se de utilizar o import das seguintes bibliotecas do Java:

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

As duas primeiras se relacionam com preparação e leitura de arquivos e a terceira

importação permite tratar exceções através de try/catch.

Um bloco try permite ao programador executar instruções. Caso ocorra algum erro,

este será desviado para o bloco catch. Por enquanto, você não precisa entender detalhes de

try/catch. Isso será visto posteriormente.

Vamos ver um exemplo na prática.

Abra o Eclipse e crie o projeto Java denominado de Arquivo01.

Em seguida, crie o pacote controle.

Em seguida, crie a classe Java Principal.java dentro do pacote controle. Com isso, sua

aplicação terá a seguinte estrutura:

Figura 02.01

Como já citado anteriormente, é salutar utilizar pacotes em uma aplicação. Cada pacote deve

armazenar classes que possuem uma mesma finalidade dentro da aplicação.

Nesse exemplo, criamos apenas o pacote controle que possui o programa Principal. Para essa

aplicação utilizaremos apenas esse pacote.

Em seguida, utilize o bloco de notas e crie um arquivo com o nome MeuArquivo.txt e insira as

seguintes linhas nesse arquivo:

linha 01

linha 02

linha 03

Fim.

Page 6: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS Grave esse arquivo na unidade c do seu computador.

Abra o arquivo Principal.java e digite as seguintes linhas nessa classe.

Observe que o programa utiliza try/catch que permitem o tratamento de erros. O bloco try se

inicia na linha 13 e termina na linha 20.

O bloco catch inicia na linha 22 e termina na linha 23.

Caso ocorra algum erro dentro do bloco try, ocorrerá um desvio para o bloco catch que, no

exemplo, não possui nenhuma instrução.

Não se preocupe com os detalhes de try/catch ainda. Posteriormente explicaremos essas

estruturas com mais detalhes.

Salve a aplicação e execute-a. Será apresentada uma tela de mensagem semelhante à indicada

a seguir.

Figura 02.02

Observe a saída das informações.

Analise o código e procure compreendê-lo conforme o resultado de saída apresentado pelo

JOptionPane.

03. VALIDAÇÃO DE DADOS

Page 7: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS 03.01. Introdução

Qualquer Interface Gráfica do Usuário (GUI) necessita de validações. Considere, por

exemplo, uma interface de entrada de dados com o JOptionPane. Neste caso, o usuário irá

digitar em uma caixa de texto alguma informação. No entanto, essa caixa de texto aceita

qualquer tipo de caractere, visto que ela aceita conteúdo String. Assim, se o usuário for

solicitado a digitar uma data, esta deve ser verificada pela aplicação, pois o usuário poderá

digitar uma data inválida como 30/02/2013. Neste caso, o programador deverá estabelecer

validação específica para esse tipo de digitação. O mesmo poderá ocorrer se o usuário for

solicitado para informar apenas dígitos de um CPF. Neste caso, o programador deverá criar uma

validação para verificar se o usuário informou só dígitos para o CPF.

Portanto, uma GUI permite facilidades de interação entre o usuário e o sistema. Por

outro lado, uma GUI necessita de validações específicas para garantir que o usuário informe

dados corretos para que permitam uma atualização confiável no banco de dados.

03.02. Exceções – Uma noção

Uma exceção é uma indicação de um problema que ocorre durante a execução de um

programa. Lançar uma exceção é uma maneira eficaz para indicar que não é capaz de atender a

uma solicitação de um programa. O não tratamento de uma exceção fará com que o programa

termine imediatamente.

Uma exceção verificada é uma subclasse da classe Exception.

Para se capturar uma exceção em um método deve-se utilizar uma instrução try

combinada com catch, no seguinte formato:

try{

//instruções que serão verificadas

}

catch(Exception e1) {

//informe e se recupere da exceção

}

finally{...}

Quando ocorre uma exceção dentro do bloco try, a execução é então executada dentro

do bloco catch correspondente, pois pode-se ter mais de um catch. Depois que o fluxo é

completado pelo catch, o controle não retorna para a instrução que causou a exceção. Nesse

caso, o controle continua abaixo do último catch. Além do catch há também o bloco finally, que

é opcional. Se esse bloco for usado, ele será executado, ocorrendo ou não uma exceção. Em

resumo, temos:

try: é usado para um bloco de código no qual possa ocorrer alguma exceção.

Page 8: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS catch: serve para tratar o possível erro.

finally:sempre será executado depois de try/catch.

Assim, try/catch servem para informar à Java Virtual Machine o que fazer quando uma

exceção ocorrer. Os blocos catch devem aparecer após o try, sendo que entre esses blocos não

deve possuir nenhuma instrução.

Como pode ocorrer a utilização de diversos blocos catch e como todas as exceções são

vinculadas à classe Exception, deve-se, caso ocorra necessidade, inserir uma exceção geral no

último catch, deixando as especificas antes desta.

Exemplo:

try{........}

catch(NumberFormatException e1){......}

catch(ArithmeticException e2){......}

catch(NullPointerException e3){.....}

.....

O trecho anterior destaca algumas exceções, como NumberFormatException (trata

formatação de números), NullPointerException (erro de referência a uma instância inexistente)

e ArithmeticException(erros em processamentos aritméticos) e outros.

03.03. Validando dados numéricos

Ao receber a entrada de uma string via JOptionPane deve-se efetuar a conversão da

string para um valor numérico (int, float, etc.) dentro de try/catch, tratando a exceção de forma

correta.

03.04. Gerando números randômicos

Page 9: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS A geração de números em Java ás vezes se torna importante, como é caso de se criar

valores para testes em um programa ou, até mesmo, criar cartelas para mega-sena. Em Java, a

geração de números ocorre através da classe Random que, naturalmente, gera números

fracionários entre 0 e 1.Se você desejar gerar números inteiros deverá utilizar alguma operação

sobre o número para conseguir o resultado desejado.

Exemplo:

Para gerar números utiliza-se da classe Random que faz parte do pacote Math. Para referenciar

Random, basta utilizar Math.Random. No trecho de código anterior, a linha 11 destaca a geração

de um número randômico que é armazenado na variável double d.

Nesse caso, será gerado um número fracionário entre 0 e 1. Na linha 15 temos a seguinte

instrução:

int i = (int) (Math.Random()*10) + 1;

Neste caso, um número randômico será gerado. Em seguida, será multiplicado por 10 e

adicionado a 1 e convertido para inteiro. Esse é um exemplo de geração de números irão variar

entre 1 e 10. Visto que:

a)se for gerado um 0.0 * 10 = 0, adicionado a 1 implicará no resultado 1.

b)se for gerado um 0.9... * 10 = 9, adicionado a 1 implicará no resultado 10.

A linha 19 gerará números entre 50 e 149. Caso você deseje gerar números em intervalos

específicos deverá analisar a expressão correta que proporcionará os resultados desejados.

Exemplo de resultados do programa anterior :

Page 10: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS

Com isso você poderá gerar, além de números, uma sequência de letras ou de outros caracteres,

bastando para isso utilizar o código ASCII.

ATIVIDADE PRÁTICA 01

Usando orientação a objetos, desenvolva uma mini-aplicação (com um programa principal,

usando main, e as demais classes) em Java que:

a)Leia um arquivo no formato texto (com o nome dados.txt) contendo informações de

funcionários(nome, data de nascimento,cpf e dados de seus dependentes como nome,

tipo de dependente, data de nascimento);

b)Deve-se ler o arquivo e armazenar os dados de cada funcionário em objetos da classe

Funcionário e os dados de cada dependente em objetos da classe Dependente;

c)Um funcionário poderá ter um, mais de um ou até nenhum dependente;

d)A classe Funcionario possui um atributo que é uma coleção de seus dependentes;

e)O arquivo de texto possui diversas linhas, sendo que cada linha contém os dados de

cada funcionário e de cada um de seus dependentes, caso existam;

f)O formato de cada linha do arquivo é o seguinte: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXXXXXXX###########BBBBBBBBBBBBBBBBBBBBBBBBYXXXXXXXX...

Onde: AAAA...=nome do funcionário (até 30 caracteres), XXXXXXXX=Data de nascimento

do funcionário e do dependente (posições distintas), ###########=cpf, BBBB..=Nome

do dependente(até 25 caracteres), Y=tipo do dependente (1-pai, 2-mãe, 3-cônjuge, 4-

filho,5-outros). Os nomes devem ser preenchidos com letras em caixa alta (maiúsculas).

As reticências no final da linha indica que a poderá conter mais dependentes.

g)O comprimento de cada um dos campos informados devem ser rigorosamente

respeitados. Assim, se uma matricula for 135 deverá ser escrita como 00135 para ocupar

corretamente o seu espaço na linha. Se um nome de um funcionário possuir menos de

30 caracteres deve ser completado com espaços à direita, e assim por diante.

Page 11: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS h)Você deve criar o seu arquivo de texto utilizando qualquer editor de texto,

respeitando os detalhes de preenchimento como explicado anteriormente. Sendo que

devem ser informados, no mínimo, 15 linhas, sendo que:

h1) 2 não devem conter dependentes;

h2) 3 devem possuir 1 dependente

h3) 4 devem possuir 2 dependentes

h4) 1 deve possuir 3 dependentes

h5) 3 devem possuir 4 dependentes

h6) o restante deve possuir mais de 4 dependentes

i)Após a leitura de todos os dados e, respectivamente, armazenados em objetos, estes

devem ser alocados em suas respectivas coleções, deve-se escrever os dados utilizando-se

System.out.print (ou println), considerando o seguinte formato de saída:

RELAÇÃO DE FUNCIONÁRIOS E SEUS DEPENDENTES

Ord. Nome do Funcionário Data Nasc. Cpf

===============================================================

0001 Aaaaaaaa Bbbbbbbbbbb Ccccccccc 99/99/9999 111.111.111-11

Dependentes: Nome Tipo Data Nasc.

Bbbbb Ccccc Ddddddddddddd cônjuge 99/99/9999

Bbbbb Ccccc Ddddddddddddd pai 99/99/9999

Bbbbb Ccccc Ddddddddddddd filho 99/99/9999

.............................................................................................................................

0002 Aaaaaaaa Bbbbbbbbbbb Ccccccccc 99/99/9999 111.111.111-11

Dependentes: Nome Tipo Data Nasc.

Bbbbb Ccccc Ddddddddddddd cônjuge 99/99/9999

Bbbbb Ccccc Ddddddddddddd mãe 99/99/9999

0003 Aaaaaaaa Bbbbbbbbbbb Ccccccccc 99/99/9999 111.111.111-11

Dependentes: (NÃO POSSUI)

j) Considerar que esse relatório deve possuir 15 linhas por página, incluindo o cabeçalho

(com 3 linhas). Quando atingir o limite de linhas, deve-se escrever o cabeçalho

novamente, simulando um salto de página e continuar a escrever os dados após o

cabeçalho. Observe que a coluna Ord. deve possuir zeros à esquerda. Note que cada

parte de cada nome deve possuir a primeira letra maiúscula e as demais minúsculas.

Quando um funcionário não possuir dependente deve-se escrever o seguinte:

Dependentes: (NÃO POSSUI)

Page 12: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS k)Note ainda que o tipo de cada dependente deve ser destacado com sua descrição,

conforme o código lido no arquivo.

l)Deve-se validar cada data existente no arquivo. Caso a data seja inválida (por exemplo,

30/02/2020), deve-se apresentar um (*) após a data impressa.

m)Deve-se validar os dois números de controle finais de cada CPF. Se um determinado

CPF possuir controles inválidos, deve-se inserir um (*) após o referido CPF. Pesquisar sobre

esse cálculo e inseri-lo em um método específico da aplicação.

n)Informar, pelo menos, dois valores de CPF inválidos no arquivo e, pelo menos, três

datas inválidas no arquivo.

o)Esse mini sistema deve possuir apenas um arquivo principal (com o método main) e

os arquivos correspondentes das classes necessárias, sendo que o arquivo principal deve

possuir os métodos necessários para atender as regras estabelecidas. PORTANTO, ABUSE

DOS MÉTODOS E UTILIZE-OS NO PROGRAMA PRINCIPAL APLICANDO OS CONCEITOS

CORRETOS DE ORIENTAÇÃO A OBJETOS.

p) Note que antes da impressão de cada nome há um número sequencial. O valor inicial

dessa sequência deve ser informado pelo usuário. Esse valor inicial deve estar no

intervalo de 1 a 105. Se o usuário informar um valor fora desse intervalo, o sistema deve

apresentar mensagem de erro correspondente. O programa deverá, então, escrever

esse valor inicial e incrementar uma unidade a cada novo nome. Além disso, a

quantidade de casas de uma dessas sequências deve ser também informada pelo

usuário (variando de 3 até 6, cuja validação deve ser também apresentada com

mensagem de erro específica). Assim, esses números devem ter zeros à sua esquerda.

A preparação desses zeros deve ser efetuada em um método respeitando a quantidade

de casas inteiras informada pelo usuário e o valor inicial informado pelo usuário. Se, por

exemplo, o número for 1 e a quantidade de casas for 4, deve-se escrever 001, 002 e

assim, por diante. Se, por exemplo, o número for 50 e a quantidade de casas for 5, deve

escrever 00050, 00051 e assim por diante. Se o valor inicial for 99 e a quantidade de

casas for 4, então deve-se escrever, 0099, 0100, 0101 e assim por diante.

Dica: Note que as saídas são todas formatadas. Assim, utilize String e as funções de

manipulação de String para criar os formatos adequados para a saída de dados.

ATIVIDADE PRÁTICA 02

Considerando as mesmas regras da atividade anterior, desenvolva

uma aplicação Java que, em vez de ler um arquivo texto, permita

gerar randomicamente cada um dos atributos apresentados

anteriormente para 25 registros de funcionários e de seus

respectivos dependentes. Sendo que deve-se considerar a geração de

mais um atributo. O salário, cujo valor deve ser gerado no intervalo

de 1225.00 até 125392.15, considerando que a impressão de cada

Page 13: ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE … · 2020-02-07 · ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ECEC – ESCOLA DE CIÊNCIAS EXATAS E COMPUTAÇÃO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA DESENVOLVIMENTO DE APLICAÇÕES CLIENTE-SERVIDOR

ATIVIDADE 04 – LEITURA DE ARQUIVO, OO, RANDOMIZAÇÃO DE DADOS

salário deve possuir o seguinte formato: R$ 999.999,99. Observe que

as casas decimais devem possuir vírgula e não ponto. O nome de um

funcionário deve possuir de 2 a 3 partes, sendo que esse número de

partes deve ser gerado randomicamente (2 ou 3), sendo que a

primeira parte deve possuir 10 caracteres e as demais 9. Completar

com espaços a 3ª parte, caso o nome seja apenas com duas partes. A

mesma regra deve também ser semelhante aos nomes dos

dependentes, sendo: 1ª parte com 8 caracteres, 2ª parte com 8

caracteres e a 3ª parte com 7 caracteres. Não esquecer de gerar cada

um dos tipos de dependência para cada dependente gerado,

conforme os valores estabelecidos. As datas de nascimento devem

ser geradas dentro do intervalo de 01/01/1980 até 31 de dezembro

do ano atual. A impressão do salário deve ser visualizada logo após a

impressão do cpf, com um espaço entre dois.