Capítulo 18
Datas, Horários e
Valores Numéricos
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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.
Manipular os elementos constituintes de datas e horários.
Demonstrar como formatar valores percentuais, monetários e
outros valores decimais.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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( );
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
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
14.600 dias após o marco inicial (40 anos de 365 dias)
11 dias após o instante anterior
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
usuário.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
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
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 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
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
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
instância de java.util.Date.
Método da classe java.text.DateFormat
public Date parse(String source) throws ParseException
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.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
public
public
public
boolean equals(Object obj)
boolean after(Date when)
boolean before(Date when)
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.
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)
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
Rui Rossi dos Santos
País
Atributo
Alemanha
GERMANY
Canadá
CANADA
China
CHINA
Coréia
KOREA
Estados Unidos
US
França
FRANCE
Inglaterra
UK
Itália
ITALY
Japão
JAPAN
Taiwan
TAIWAN
Programação de Computadores em Java
Editora NovaTerra
Convenções Regionais
Atributos da classe Locale para idiomas conhecidos
Rui Rossi dos Santos
Idioma
Atributo
Alemão
GERMAN
Chinês
CHINESE
Coreano
KOREAN
Francês
FRENCH
Inglês
ENGLISH
Italiano
ITALIAN
Japonês
JAPANESE
Programação de Computadores em Java
Editora NovaTerra
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.
Duração: um período no ano.
Brasil: horário de verão.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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.
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.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
Ano: 1582
Ajuste: correção da medição do ano solar
Novo ano solar: 365 dias, 5 horas, 49 minutos e 12 segundos
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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.Calendar
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.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Calendário
o Campos do calendário na classe Calendar
Campo
Atributo
Vlr
0
Período do dia
AM_PM
9
YEAR
1
Hora da manhã
ou tarde
HOUR
10
Mês
MONTH
2
Hora do dia
HOUR_OF_DAY
11
Semana do ano
WEEK_OF_YEAR
3
Minuto
MINUTE
12
Semana do
mês
WEEK_OF_MONTH
4
Segundo
SECOND
13
Milissegundo
MILLISECOND
14
Dia do mês
DATE
5
ZONE_OFFSET
15
Dia do mês
DAY_OF_MONTH
5
Diferença do
fuso horário
DST_OFFSET
16
Dia do ano
DAY_OF_YEAR
6
Dif. no horário
especial
Dia da semana
DAY_OF_WEEK
7
Dia da semana
no mês
DAY_OF_WEEK_IN_MONTH
8
Campo
Atributo
Indicativo da
era
ERA
Ano
Rui Rossi dos Santos
Vlr
Programação de Computadores em Java
Editora NovaTerra
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
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
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Calendário
o Dias da semana na classe Calendar
Dia da semana
Atributo
Valor
Domingo
SUNDAY
1
Segunda-feira
MONDAY
2
Terça-feira
TUESDAY
3
Quarta-feira
WEDNESDAY
4
Quinta-feira
THURSDAY
5
Sexta-feira
FRIDAY
6
Sábado
SATURDAY
7
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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);
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).
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.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
;
Separa padrões para números positivos e negativos
-
Sinal negativo
%
Multiplica por 100 e exibe como percentual
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
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
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.
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 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.
Procure apresentar os dados de acordo com este modelo,
incluindo dez datas por linha.
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 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.
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.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
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.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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
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.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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.
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.
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 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
que devem ser perseguidas.
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
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:
Editora NovaTerra
Telefone: (21) 2218-5314
Web Site: http://www.editoranovaterra.com.br
Rui Rossi dos Santos
Programação de Computadores em Java
Editora NovaTerra
Download

Datas, Horários e Valores Numéricos