Dúvida sobre tarefa

1. Dúvida sobre tarefa

André
andrezc

(usa Debian)

Enviado em 21/03/2010 - 16:18h

Olá, estou com a seguinte tarefa :

************************
Considere que sua empresa seja contratada para desenvolver o software que trata o RioCard. O RioCard é um cartão pré-pago que é debitado do valor da passagem, caso o saldo do cartão seja suficiente, toda vez que o usuário o utiliza em qualquer meio de transporte público (tais como, metrô, trens, vans regularizadas, ônibus e barcas). Existem algumas informações que são relevantes no uso deste cartão, tais como, o saldo e o código do usuário para a realização de recargas.



Existe uma especialização deste cartão, chamado de BilheteUnico, que é mais econômico que o RioCard porque possibilita, em viagens intermunicipais de duração de, no máximo, duas horas, e realizadas em, no máximo, dois meios de transporte quaisquer, que o valor único debitado deste cartão seja pré-fixado em R$ 4,40. Quando se tratar de serviço intermunicipal com valor superior a R$ 4,40, será debitado do cartão o valor máximo de R$ 4,40 mesmo que não haja integração. Neste cartão é importante indicar qual foi a última viagem realizada até o momento.



O tempo de viagem no BilheteUnico só começa a ser
contado após o primeiro contato entre este cartão e o equipamento eletrônico de cobrança (chamado de validador) no primeiro embarque.
Após o segundo embarque, o passageiro também passa este cartão no validador,
mas não será computado o preço inteiro da viagem.


A economia do BilheteUnico pode ser observada nas seguintes situações:



1) Em viagens diretas:

Linha Itinerário Tarifa Economia

118T XXX-YYY R$ 12,35 R$ 7,95

601I NNN-NI R$ 17,30 R$ 12,90

425D AA-CG R$ 10,85 R$ 6,45

496B MC-PM R$ 10,65 R$ 6,25



2) Em viagens com integração:

Trem (R$ 2,50) + ônibus (R$ 2,25) = R$ 4,75 Economia: R$ 0,35

Trem (R$ 2,50) + metrô (R$ 2,80) = R$ 5,30 Economia: R$ 0,90

Ônibus (R$ 2,20) + ônibus (R$ 3,40) = R$ 5,60 Economia: R$ 1,20

Ônibus (R$ 2,20) + barcas (R$ 2,80) = R$ 5,00 Economia: R$ 0,60

Considere que algumas informações sobre a viagem devem ser mantidas, como, por exemplo, código (único para todos os meios de transporte), tarifa e uma informação se o trajeto é intermunicipal.



Escreva as seguintes classes RioCard, BilheteUnico, Viagem e as demais classes que você achar conveniente. Desenvolva também uma classe de Teste para verificar o uso correto de suas classes. Nesta última classe é interessante constar a criação de vários cartões e diversas viagens para testar a funcionalidade descrita no enunciado.

************************




  


2. Re: Dúvida sobre tarefa

André
andrezc

(usa Debian)

Enviado em 21/03/2010 - 16:19h

Primeiramente agradeço a todos que tiveram saco para ler tudo, agora alguém poderia me dizer o que devo fazer ? Não estou pedindo a resposta, só não sei o que devo fazer, ta muito mal explicado :S

Obrigado a todos.


3. Re: Dúvida sobre tarefa

André
andrezc

(usa Debian)

Enviado em 21/03/2010 - 16:35h

Penssando com meus botões, eu pensei em algo como :

public class Principal
{
static int valorCartao = 50000;
public static void main(String args[])
{

System.out.println("Saldo cartao: "+valorCartao);
compraCartao();
}

public static void compraCartao()
{
valorCartao = valorCartao - 475;
System.out.print("Gastando 4,75 com a viagem temos: "+valorCartao);
System.out.println(" de saldo!");
}
}

Mas tem que usar várias classes e tal e não é só isso :S e sem falar que eu chutei o valor do cartão em 500,00 reais ...


4. Re: Dúvida sobre tarefa

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 21/03/2010 - 18:44h

Em vez de te ajudar, vou até atrapalhar mais um pouco.

O BilheteUnico teoricamente está muito bem idealizado, porém na prática apresenta um grave problema, imediatamente detectado por milhares de usuários:

O bilhete tem uma restrição, pela qual o usuário tem um prazo de 60 minutos (2 horas) para usar a segunda perte do bilhete.

Uma restrição prévia nos dá conta de que ele é válido para uma viagem intermunicipal SEGUIDA DE uma viagem municipal ou vice-versa, e jamais para percursos do mesmo tipo (municipal + municipal ou intermunicipal + intermunicipal).
Por exemplo, para quem mora em Cabuçu (Município de Nova Iguaçu) e trabalha em Ipanema (Município do Rio de Janeiro), o BilheteUnico seria uma mão na roda.

TEORICAMENTE!

Por que? Para voltar de Ipanema para Cabuçu, ainda que haja algum engarrafamento, ainda assim há uma grande chance de o bilhete poder ser usado dentro do intervalo de 60 minutos (duas horas).

NO ENTANTO, A RECÍPROCA NÃO É VERDADEIRA!

Quem sai de Nova Iguaçu e pega engarrafamento, poderá ter seu prazo expirado MUITO ANTES de fazer a segunda parte da viagem (e aí terá de complementar ou bancar o valor da passagem de seu próprio bolso). Como esse tipo de acontecimento não é nada raro, quem imaginou essas regras deixou um furo do tamanho de um túnel...

Mas para fazer suas classes, você deverá ter em mente que:

SE a primeira parte do percurso for MUNICIPAL a segunda parte deverá ser OBRIGATORIAMENTE intermunicipal - ou vice versa.
De forma alguma estarão compreendidos dois percursos da mesma espécie.

Um cartão compreende n créditos de 4,40 x 2 (ida e volta) por dia. De uma forma ideal, o saldo final do mÊs será ZERO. Mas isso não é uma verdade absoluta, pois poderá ter algum saldo para o mês seguinte, ou terminar antes do fim do mês. E pode ser que o usuário banque a segunda passagem integralmente do próprio bolso.

SE o tempo entre o pagamento de cada uma das tarifas exceder a 60 minutos (o que será MUITO frequente no sentido Baixada/Rio), o usuário terá de complementar ou simplesmente bancar o valor da segunda passagem.
Nesse caso, o débito sobre o cartão será de R$ 4,40 OU a valor correspondente ao primeiro percurso.
(Embora eu não saiba a tarifa, uma passagem para Cabuçu é bastante cara).

A primeira tarifa será sempre nominal, para efeito de baixa nos créditos do cartão.

O controle do cartão deverá oferecer meios de verificar qual das tarifas está sendo subsidiada e qual o valor de cada subsídio. Consequentemente, teremos de saber quanto cada cartão tem de subsídios, bem como o total em um dado universo de cartões.

Somente é permitido debitar 8,80 por dia, assim mesmo caso as demais regras sejam obedecidas.

As demais restrições você mesmo irá descobrir, pois são óbvias, apesar de numerosas.

Obs.: A tarifa "normal" no município do Rio de Janeiro já é R$ 2,35 e muitas tarifas intermunicipais passam de R$ 5,00.



5. Re: Dúvida sobre tarefa

André
andrezc

(usa Debian)

Enviado em 21/03/2010 - 19:55h

Puxa ai que acabou de acabar o fim de tudo rs. Mas... obrigado pela resposta.


6. Re: Dúvida sobre tarefa

Brian Chalega da Silva
brian_ch

(usa Arch Linux)

Enviado em 10/04/2010 - 22:24h

E aí,junior como você resolveu o problema, ou ainda não resolveu? Em minha opinião coisas como demora em engarrafamentos não precisam ser implementados, afinal, são imprevisiveis.
Se você ainda precisar fazer os exercícios, e não quiser ser influenciado pela minha (tentativa) de sugestão não leia o resto do post.

Diagrama de classes(bem improvisado!):
obs.: os "#" são para ele não cortar os espaços, alias ficou errado do mesmo jeito!:(
|----------------|
|RioCard######|
|----------------|
|saldo : int ### |
|codUsu: int####|
|ultViagem:Viagem| --> ultima viagem
|horaViagem:float| --> hora da ultima viagem
|----------------|
|pagarPass(v)###|-->Recebe um obj. Viagem como atr.
|----------------|

|-------------------------|
|Viagem#############|
|-------------------------|
|origem : String########|
|destino : String#######|
|duracao: float########|
|transporte:MeioTransporte|
|-------------------------|

|----------------|
|MeioTransporte#|
|----------------|
|area:String###| --> se é local ou intermunucipal
|nome:String###| --> Onibus, metrô, trem, etc..
|----------------|

|------------------|
|BilheteUnico#####| -->extends RioCard
|------------------|
|#############|
|#############|
|------------------|
|verificarDesc()###|--> verificar direito a desconto
|------------------|

Este é só um modelo bem incompleto de como eu tentaria resolver(ou começar a resolver) isto. Só não sei como comparar bem o tempo para fazer os descontos. E nem como se trabalha corretamente com datas em Java!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts