64
Capítulo 18 Capítulo 18 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Datas, Horários e Datas, Horários e Valores Numéricos Valores Numéricos

Capítulo 18 - Rui Rossi · Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Datas, Horários e Valores Numéricos. Objetivos do Capítulo Indicar as formas

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Capítulo 18Capítulo 18

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

Datas, Horários e Datas, Horários e Valores NuméricosValores Numéricos

Objetivos do Capítulo

� Indicar as formas de representação do tempo.

� Explorar os recursos úteis à formatação de datas e horários.

� Apresentar formas de comparação de datas e horários.

� Analisar o procedimento de validação de datas e horários.

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

� Manipular os elementos constituintes de datas e horários.

� Demonstrar como formatar valores percentuais, monetários e outros valores decimais.

Representação do Tempo

� Instância da classe java.util.Date

� Instante específico no tempo

� Milissegundos transcorridos desde o marco inicial

� Marco inicial: 00:00:00:000 de 01/01/1970 em GMT 00:00

� Fuso horário padrão: GMT (Greenwich Mean Time)

� Horário de Brasília: GMT -03:00

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

Representação do Tempo

� Construtores da classe java.util.Date

� Date( ): para representação do instante atual

� Date(long): para representação do instante especificado

� Exemplos:

Date instante_atual = new Date( );

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

Date instante_atual = new Date( );

Date marco_inicial = new Date( 0 );

Date dt = new Date( 1234567890000L );

� Resultado:

Instante atual

21:00:00:0000 31/12/1969 GMT -03:00

21:31:30:0000 13/02/2009 GMT -03:00

Representação do Tempo

� Métodos da classe java.util.Date

� getTime( ): recupera o número contido no objeto.

� setTime(long): altera este número.

� toString( ): representação textual do objeto.

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

Representação do Tempo

� Código 18.1 – RepresentacaoTempo.java� Crie um aplicativo que represente cinco diferentes instantes no tempo através de objetos da classe java.util.Date e que imprima tanto a representação textual destes objetos quanto o número que eles utilizam internamente.

� Os instantes que devem ser representados são os seguintes:�O instante atual

� Instante específico: 21:31:30 13/02/2009 BRST

�O marco inicial da contagem do tempo

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

�O marco inicial da contagem do tempo

� 14.600 dias após o marco inicial (40 anos de 365 dias)

� 11 dias após o instante anterior

Formatação de Datas e Horários

� Definição:

� Conversão de objeto da classe java.util.Date em um objeto da classe java.lang.String.

� Objetivo:

� Adaptação de objeto interno do sistema para ser apresentado ao

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

� Adaptação de objeto interno do sistema para ser apresentado ao usuário.

Formatação de Datas e Horários

� Formatadores: objetos utilizados para a formatação.

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

Formatação de Datas e Horários

� A classe java.text.DateFormat:

� Atributos: diferentes estilos de formatação.

� Métodos estáticos: getDateInstance(), getDateInstance( ), getTimeInstance( ) e getDateTimeInstance( ).� Retorno: instância de java.text.SimpleDateFormat

� getInstance( ) = getDateTimeInstance(DateFormat.SHORT)

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

Formatação de Datas e Horários

� Código 18.2 – FormatacaoDatas.java� Crie um objeto da classe java.util.Date para representar o instante atual e utilize um formatador para apresentar a data que ele representa em cinco diferentes formatos: padrão, curto, médio, longo e completo.

� A primeira saída deste aplicativo deve indicar a classe real do formatador.

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

Formatação de Datas e Horários

� Código 18.3 – FormatacaoHorarios.java� Crie um objeto da classe java.util.Date para representar o instante atual e utilize um formatador para apresentar o horário que ele representa em cinco diferentes formatos: padrão, curto, médio, longo e completo.

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

Formatação de Datas e Horários

� Código 18.4 – FormatacaoMista.java� Crie um objeto da classe java.util.Date para representar o instante atual e utilize um formatador para apresentar a data e o horário que ele representa em três diferentes formatos: padrão, curto e longo.

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

Formatação de Datas e Horários

� A classe java.text.SimpleDateFormat:

� SimpleDateFormat( ): formatador com estilo curto para a data e o horário.

� SimpleDateFormat(String pattern): formatador baseado no padrão de formatação especificado.

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

Formatação de Datas e Horários

� A classe java.text.SimpleDateFormat: padrão para datas

Letra Descrição Tipo

d Dia do mês Número

M Mês do ano Número ou texto

y Ano Número ou texto

E Dia da semana Texto

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

E Dia da semana Texto

D Dia do ano Número

F Dia da semana no mês Número

W Semana do mês Número

w Semana do ano Número

G Designador da era Texto

Formatação de Datas e Horários

� A classe java.text.SimpleDateFormat: padrão para horários

Letra Descrição Tipo

H Hora do dia (0-23) Número

m Minutos Número

s Segundos Número

S Milissegundos Número

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

S Milissegundos Número

k Hora do dia (1-24) Número

K Hora (0-11) Número

h Hora (1-12) Número

a Marcador (AM/PM) Texto

z Fuso horário Texto

Z Fuso horário Número

Formatação de Datas e Horários

� Código 18.5 – FormatacaoExtra.java� Crie um objeto da classe java.util.Date para representar o instante atual e utilize um formatador para apresentar a data e/ou o horário que ele representa nos cinco diferentes formatos indicados na figura a seguir.

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

Validação e Conversão com Datas e Horários

� Validação

� Análise de uma string com o objetivo de determinar se o seu conteúdo está em conformidade com determinado formato.

� Conversão

� Transferência de data, horário ou ambos de uma string para uma

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

� Transferência de data, horário ou ambos de uma string para uma instância de java.util.Date.

� Método da classe java.text.DateFormat

public Date parse(String source) throws ParseException

Validação e Conversão com Datas e Horários

� Código 18.6 – ValidaData.java� Crie um formatador de datas que utilize o estilo de formatação padrão e desabilite o seu modo leniente para que não utilize heurísticas.

� Este aplicativo deve solicitar uma data e indicar se é válida.

� O passo anterior deve ser repetido indefinidamente.

� O aplicativo só deve ser encerrado quando o diálogo de entrada for cancelado.

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

Validação e Conversão com Datas e Horários

� Código 18.7 – ValidaHorario.java� Crie um formatador de horários que utilize o estilo de formatação curto e desabilite o seu modo leniente para que não utilize heurísticas.

� Este aplicativo deve solicitar um horário e indicar se é válido.

� O passo anterior deve ser repetido indefinidamente.

� O aplicativo só deve ser encerrado quando o diálogo de entrada for cancelado.

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

Comparação com Datas e Horários

� Métodos da classe java.util.Date

public boolean equals(Object obj)

public boolean after(Date when)

public boolean before(Date when)

public int compareTo(Date anotherDate)

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

Validação e Conversão com Datas e Horários

� Código 18.8 – ComparaDatas.java� Crie um aplicativo que solicite duas datas e compare-as.

�Utilize os métodos equals( ), after( ) e before( ).

� O passo anterior deve ser repetido indefinidamente.

� O aplicativo só deve ser encerrado quando um diálogo de entrada for cancelado.

� Se uma data inválida for informada, uma mensagem de erro deve ser exibida e o procedimento deve ser reiniciado.

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

Validação e Conversão com Datas e Horários

� Código 18.9 – ComparaDatas2.java� Crie um aplicativo que solicite duas datas e compare-as.

�Utilize apenas o método compareTo( ) para a comparação.

� O passo anterior deve ser repetido indefinidamente.

� O aplicativo só deve ser encerrado quando um diálogo de entrada for cancelado.

� Se uma data inválida for informada, uma mensagem de erro deve ser exibida e o procedimento deve ser reiniciado.

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

Validação e Conversão com Datas e Horários

� Código 18.10 – ComparaHorarios.java� Crie um aplicativo que solicite dois horários e compare-os.

�Utilize os métodos equals( ), after( ) e before( ).

� O passo anterior deve ser repetido indefinidamente.

� O aplicativo só deve ser encerrado quando um diálogo de entrada for cancelado.

� Se um horário inválido for informado, uma mensagem de erro deve ser exibida e o procedimento deve ser reiniciado.

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

Convenções Regionais

� Objetivo: criar programas auto-adaptáveis às convenções do país ou região dos usuários.

� Classe java.util.Locale:� Representa uma região geográfica, política ou cultural.

� Pode representar um país.

� Pode representar um idioma.

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

Convenções Regionais

� Métodos estáticos da classe java.util.Locale� public static String[] getISOLanguages(): retorna os códigos dos idiomas suportados.

� public static String[] getISOCountries(): retorna os códigos dos países suportados.

� public static Locale[] getAvailableLocales(): retorna todos os locais suportados.

� public static Locale getDefault(): retorna o local padrão para a instância atual da JVM.

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

instância atual da JVM.

� Outros métodos da classe java.util.Locale� getLanguage( ): retorna o nome do idioma.

� getCountry( ): retorna o nome do país.

� getDisplayName( ): retorna o nome do local (idioma + país)

� Construtor classe java.util.Locale� Locale(String language, String country)

Convenções Regionais

� Código 18.11 – IdiomasDisponiveis.java� Crie um aplicativo que recupere e imprima os códigos de todos os idiomas suportados.� Imprima 25 códigos por linha.

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

Convenções Regionais

� Código 18.12 – PaisesDisponiveis.java� Crie um aplicativo que recupere e imprima os códigos de todos os países suportados.� Imprima 25 códigos por linha.

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

Convenções Regionais

� Código 18.13 – LocaisDisponiveis.java� Crie um aplicativo que recupere e imprima três dados relativos aos locais suportados:�O código do idioma.

�O código do país.

�O nome do local.

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

Convenções Regionais

� Código 18.14 – LocalPadrao.java� Crie um aplicativo que recupere o local padrão para a instância atual da JVM e que imprima alguns dados acerca do mesmo:� A descrição do local (idioma + país).

�O idioma (nome, código com 2 letras e código com 3 letras).

�O país (nome, código com 2 letras e código com 3 letras).

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

Convenções Regionais

� Código 18.15 – LocalEscolhido.java� Crie um aplicativo que crie uma instância da classe java.util.Locale para representar um local escolhido(italiano da Itália) e que imprima alguns dados acerca do mesmo.

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

Convenções Regionais

� Atributos da classe Locale para países conhecidos

País Atributo

Alemanha GERMANY

Canadá CANADA

China CHINA

Coréia KOREA

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

Coréia KOREA

Estados Unidos US

França FRANCE

Inglaterra UK

Itália ITALY

Japão JAPAN

Taiwan TAIWAN

Convenções Regionais

� Atributos da classe Locale para idiomas conhecidos

Idioma Atributo

Alemão GERMAN

Chinês CHINESE

Coreano KOREAN

Francês FRENCH

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

Francês FRENCH

Inglês ENGLISH

Italiano ITALIAN

Japonês JAPANESE

Zonas Horárias

� Contexto:� Planeta com 24 fusos horários.

� Fuso horário padrão: GMT (Londres, Lisboa)

� Brasil: 3 fusos

� Horário de Brasília: GMT -03:00

� Horário especial:� Adotado em vários países.

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

� Adotado em vários países.

� Duração: um período no ano.

� Brasil: horário de verão.

Zonas Horárias

� Representação de zonas horárias:

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

Zonas Horárias

� Métodos estáticos da classe java.util.TimeZone� public static TimeZone getDefault(): zona horária padrão.

� public static String[] getAvailableIDs(): retorna a identificação de todas as zonas horárias suportadas.

� public static String[] getAvailableIDs(int rawOffset): retorna a identificação de todas as zonas horárias que se encontram no fuso horário especificado (em milissegundos a partir de GMT).

� public static TimeZone getTimeZone(String ID): retorna a zona horária para a identificação especificada.

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

horária para a identificação especificada.

� Outros métodos da classe java.util.TimeZone� public final String getDisplayName(): o nome da zona horária.

� public final String getDisplayName(boolean daylight, int style): permite definir se deve-se incluir o nome do horário especial e o formato do nome da zona horária (curto ou longo).

� public int getDSTSavings( ): quantidade de tempo acrescida durante horário especial (em milissegundos).

� public abstract boolean inDaylightTime(Date date): indica se a data está no período em que vige o horário especial.

Zonas Horárias

� Código 18.16 – FusosDisponiveis.java� Crie um aplicativo que recupere a identificação de todas as zonas horárias que encontram-se no fuso horário GMT-02:00.

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

Zonas Horárias

� Código 18.17 – FusoPadrao.java� Crie um aplicativo que recupere a zona horária padrão e que exiba as seguintes informações sobre a mesma:� Seu nome.

� Seu nome em italiano.

� Seu nome completo (com o nome do horário especial em uso).

� A quantidade de horas acrescidas durante o horário especial.

� Se a data atual utiliza o horário especial.

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

Calendário

� Calendário:� Usado para medir, dividir e organizar o tempo.

� Exemplos:� Juliano (antecessor do gregoriano)

�Gregoriano (países ocidentais)

� Lunar (China e Índia)

� Transição: Juliano para Gregoriano

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

� Transição: Juliano para Gregoriano� Ano: 1582

� Ajuste: correção da medição do ano solar

� Novo ano solar: 365 dias, 5 horas, 49 minutos e 12 segundos

Calendário

� Representação do calendário:

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

Calendário

� Métodos estáticos da classe java.util.Calendar� public static Calendar getInstance(): produz um calendário que utiliza a zona horária e local padrão.

� public static Calendar getInstance(TimeZone zone, Locale local): produz um calendário que utiliza a zona horária e local especificados.

� Outros métodos da classe java.util.Calendarpublic String getDisplayName(int field, int style, Locale locale):

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

� public String getDisplayName(int field, int style, Locale locale): retorna o valor do campo informado no estilo e local especificados.

� public abstract void add(int field, int amount): adiciona ou subtrai uma quantia de tempo do campo especificado.

� public abstract void roll(int field, int amount): adiciona ou subtrai uma quantia de tempo do campo especificado sem alterar os campos maiores.

Calendário

o Campos do calendário na classe Calendar

Campo Atributo Vlr

Período do dia AM_PM 9

Hora da manhã ou tarde

HOUR 10

Hora do dia HOUR_OF_DAY 11

Minuto MINUTE 12

Campo Atributo Vlr

Indicativo da era

ERA 0

Ano YEAR 1

Mês MONTH 2

Semana do ano WEEK_OF_YEAR 3

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

Minuto MINUTE 12

Segundo SECOND 13

Milissegundo MILLISECOND 14

Diferença do fuso horário

ZONE_OFFSET 15

Dif. no horário especial

DST_OFFSET 16

Semana do ano WEEK_OF_YEAR 3

Semana do mês

WEEK_OF_MONTH 4

Dia do mês DATE 5

Dia do mês DAY_OF_MONTH 5

Dia do ano DAY_OF_YEAR 6

Dia da semana DAY_OF_WEEK 7

Dia da semana no mês

DAY_OF_WEEK_IN_MONTH 8

Calendário

o Meses na classe Calendar

Mês Atributo Valor

1º mês do ano JANUARY 0

2º mês do ano FEBRUARY 1

3º mês do ano MARCH 2

4º mês do ano APRIL 3

5º mês do ano MAY 4

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

6º mês do ano JUNE 5

7º mês do ano JULY 6

8º mês do ano AUGUST 7

9º mês do ano SEPTEMBER 8

10º mês do ano OCTOBER 9

11º mês do ano NOVEMBER 10

12º mês do ano DECEMBER 11

13º mês do ano UNDECIMBER 12

Calendário

o Dias da semana na classe Calendar

Dia da semana Atributo ValorDomingo SUNDAY 1

Segunda-feira MONDAY 2

Terça-feira TUESDAY 3

Quarta-feira WEDNESDAY 4

Quinta-feira THURSDAY 5

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

Quinta-feira THURSDAY 5

Sexta-feira FRIDAY 6

Sábado SATURDAY 7

Calendário

o Período do dia:o AM: da meia-noite até antes do meio-dia.

o PM: do meio-dia até antes da meia-noite.

o Estilos de formatação:o SHORT: curto

o LONG: longo

o Era:o AD: era atual (Anno Dommini = Ano do Senhor = Era Cristã = d.C.)

o BC: era anterior (Before Christ = Antes de Cristo = a.C.)

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

Calendário

o Exemplos:

Calendar calendario = Calendar.getInstance( );

calendario.set(Calendar.MONTH, Calendar.SEPTEMBER);

out.print(calendario.getDisplayName(Calendar.MONTH,

Calendar.LONG, Locale.getDefault()));

calendario.add(Calendar.MONTH, -10);

calendario.roll(Calendar.DAY_OF_MONTH, 25);calendario.roll(Calendar.DAY_OF_MONTH, 25);

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

Calendário

� Código 18.18 – CalendarioPadrao.java� Crie um aplicativo que realize diversas operações com diferentes campos de datas e horários:� Crie um formatador para data e horário.

� Crie um novo calendário para representar o instante atual.

� Imprima o nome da classe do calendário.

�Utilize o método get( ) para imprimir cada campo da data e do horário.

� Altere o ano para 2009 e exiba novamente a data e o horário (a partir daqui, utilize o formatador).

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

daqui, utilize o formatador).

� Subtraia 2 unidade do mês e exiba novamente a data e o horário.

� Acrescente 35 unidades ao dia e exiba novamente a data e o horário.

� Imprima o dia da semana por extenso em três idiomas: o padrão, inglês e italiano.

Formatação de Valores Numéricos

� Tipos de valores numéricos:� Números decimais em geral

� Percentuais

� Valores monetários

� Objetivo da formatação� Adaptar ao local em que residem os usuários

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

Formatação de Valores Numéricos

� Código 18.19 – FormatacaoPercentuais.java� Crie uma variável e nela armazena um número decimal (0,25).

� Imprima este número na janela de comando.

� Formate e imprima este número como um percentual.

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

Formatação de Valores Numéricos

� Símbolos empregados no padrão de formatação de números

Símbolo Significado

0 Substituído por um dígito numérico

# Substituído por um dígito e omitido para o zero

. Separador decimal

, Separador de grupo

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

, Separador de grupo

; Separa padrões para números positivos e negativos

- Sinal negativo

% Multiplica por 100 e exibe como percentual

Formatação de Valores Numéricos

� Código 18.20 – FormatacaoDecimais.java� Crie uma variável e nela armazena um número decimal.

� Imprima este número na janela de comando.

� Crie um formatador de números que utilize quatro dígitos decimais fixos e que inclua o separador de milhar.

� Aplique o formatador sobre o número e imprima o resultado na janela de comando.

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

Formatação de Valores Numéricos

� Código 18.21 – FormatacaoMoeda.java� Crie uma variável e nela armazena um número decimal.

� Imprima este número na janela de comando.

� Utilize um formatador para apresentar este número como um valor monetário.

� Aplique as convenções de moeda do Brasil, da Inglaterra, da Itália e da Alemanha.�Nos três últimos casos, especifique o local no momento da instanciação do formatador.

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

instanciação do formatador.

Exercício 1

� Crie um aplicativo, chamado DiferencaTempo, que capte duas datas e horários e que indique o tempo que separa estes dois momentos em cinco diferentes unidades de medida: milissegundos, segundos, minutos, horas e dias.

� O dado informado em cada um dos dois diálogos de entrada deve ser composto pelo dia, mês, ano, hora, minutos e segundos.� Se um dado informado não for válido, exiba uma mensagem de erro e

reinicie a operação.

� Depois de exibir o resultado, o aplicativo também deve reiniciar a

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

� Depois de exibir o resultado, o aplicativo também deve reiniciar a operação para permitir que sejam informados novos dados para a realização de um novo cálculo.

� Este aplicativo só deve ser encerrado quando um dos diálogos de entrada for cancelado.

� Na mensagem que apresenta os resultados dos cálculos, procure apresentar os números no formato indicado na figura do slide seguinte.� Observe que a diferença expressa em milissegundos é um número que

contém separadores de milhar.

� Os demais números devem apresentar dois dígitos decimais fixos.

Exercício 1

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

Exercício 2

� Crie um aplicativo, chamado ExtremosDatas, que capte até 100 datas e que indique qual é a menor e qual é a maior. � Mantenha todas as datas informadas em um vetor de instâncias da classe java.util.Date e exiba todas elas na mensagem final deste aplicativo.

� Se uma data informada não for válida, exiba uma mensagem de erro e solicite-a novamente. A mensagem indicada na figura do slide seguinte só deve ser apresentada se pelo menos uma data tiver sido informada.

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

menos uma data tiver sido informada.� Procure apresentar os dados de acordo com este modelo, incluindo dez datas por linha.

Exercício 2

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

Exercício 3

� Crie um sistema que permita realizar o registro de vendas de mercadorias. Este sistema deve permitir que sejam gravados até 1.000.000 de registros de vendas.

� Quando este sistema for executado, o primeiro diálogo que ele deve apresentar deve permitir ao usuário escolher entre duas opções: “Incluir” e “Consultar”. A figura abaixo ilustra como este diálogo deve ser apresentado.� Se este diálogo for cancelado, o sistema deve ser encerrado.

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

Se este diálogo for cancelado, o sistema deve ser encerrado.

� Se a opção “Incluir” for pressionada, o sistema deve iniciar um novo registro de vendas.

� Se a opção “Consultar” for pressionada, o sistema deve iniciar o procedimento que permite ao usuário consultar os dados de um registro de venda que tenha sido gravado anteriormente.

Exercício 3

� No início do procedimento de inclusão de um registro, o sistema deve verificar se o limite de 1.000.000 de registros já foi atingido.� Em caso positivo, uma mensagem de erro deve ser exibida e este procedimento deve ser abortado.

� Caso contrário, o sistema deve prosseguir e produzir dois diálogos para que o usuário informe o valor da venda e o número de parcelas em que o cliente dividirá o pagamento.

� Se um dado inválido for informado pelo usuário, o sistema

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

� Se um dado inválido for informado pelo usuário, o sistema deve exibir uma mensagem de erro e solicitá-lo novamente.� O valor da venda deve ser um número maior que zero

� O número de parcelas deve ser maior ou igual a zero.

� Se o número de parcelas indicado for igual a zero, significará que a venda será paga à vista.

Exercício 3

� Depois que o usuário tiver informado o valor da venda e o número de parcelas, o sistema deve apresentar uma mensagem contendo todas as informações do registro que foi gravado. A figura abaixo ilustra como este diálogo deve ser apresentado.

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

Exercício 3

� O número da venda, a data da venda, o valor de cada parcela e a data de vencimento de cada parcela devem ser determinados pelo próprio sistema.� Os números das vendas devem constituir uma seqüência contínua e iniciada no número um.

� A data da venda deve ser obtida do sistema operacional sobre o qual o sistema estiver sendo executado.

� As parcelas devem ter valores iguais e qualquer ajuste que seja necessário para que sua soma coincida com o valor total da

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

necessário para que sua soma coincida com o valor total da venda deve ser realizado sobre o valor da última parcela.

� Os vencimentos das parcelas devem ocorrer no mesmo dia da venda e a primeira parcela deve ter o vencimento fixado para o mês seguinte.

� Se a venda for realizada após o dia 28, o vencimento da primeira parcela deve ser fixado para o primeiro dia do mês posterior ao mês seguinte à venda e os vencimentos das demais parcelas também devem ser fixados para o primeiro dia de cada mês.

Exercício 3

� No início do procedimento de consulta, o sistema deve verificar se há algum registro de venda gravado.� Caso não haja, uma mensagem de erro deve ser exibida e este procedimento deve ser abortado.

� Caso haja ao menos um registro, o sistema deve solicitar o número da venda que o usuário deseja consultar.

� Se o número informado for inválido, uma mensagem de erro deve ser exibida e este procedimento deve ser encerrado.� Para ser válido, o número deve ser maior que zero.

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

� Para ser válido, o número deve ser maior que zero.

� Se não houver nenhuma venda com o número informado, o sistema também deve exibir uma mensagem de erro e encerrar este procedimento.

� Se houver um registro de venda com o número informado, o sistema deve apresentar uma mensagem contendo todos os seus dados. A figura do slide seguinte ilustra tanto o diálogo através do qual o usuário informa o número da venda desejada quanto o diálogo que é gerado para apresentar os dados da mesma.

Exercício 3

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

Exercício 3

� Sugere-se que você aplique todos os conceitos e todas as técnicas de Programação Orientada a Objetos que aprendeu até o presente momento na construção deste sistema.� Divida-o em múltiplas classes, procure definir claramente as responsabilidades de cada uma delas, evite a produção de código repetitivo e procure construir algoritmos cuja legibilidade seja elevada.

� Além disso, tenha em mente que manutenibilidade e a reusabilidade dos componentes são qualidades fundamentais

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

reusabilidade dos componentes são qualidades fundamentais que devem ser perseguidas.

Exercício 3

� A figura abaixo deve ajudá-lo a compreender qual é a proposta deste exercício. Mas você pode construir este sistema utilizando uma estrutura de classes diferente.

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:

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