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