Você está na página 1de 64

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

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

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


Convenções Regionais
 Atributos da classe Locale para idiomas conhecidos

Idioma Atributo
Alemão GERMAN

Chinês CHINESE

Coreano KOREAN

Francês FRENCH

Inglês ENGLISH

Italiano ITALIAN

Japonês JAPANESE

Rui Rossi dos Santos 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 Campo Atributo Vlr

Indicativo da ERA 0 Período do dia AM_PM 9


era
Ano YEAR 1 Hora da manhã HOUR 10
ou tarde
Mês MONTH 2 Hora do dia HOUR_OF_DAY 11

Semana do ano WEEK_OF_YEAR 3 Minuto MINUTE 12


Segundo SECOND 13
Semana do WEEK_OF_MONTH 4
mês Milissegundo MILLISECOND 14
Dia do mês DATE 5 Diferença do ZONE_OFFSET 15
fuso horário
Dia do mês DAY_OF_MONTH 5
Dif. no horário DST_OFFSET 16
Dia do ano DAY_OF_YEAR 6 especial

Dia da semana DAY_OF_WEEK 7

Dia da semana DAY_OF_WEEK_IN_MONTH 8


no mês

Rui Rossi dos Santos 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: livros@ruirossi.pro.br
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

Você também pode gostar