UMA LOCADORA de veículos necessita de um sistema para facilitar o atendimento a seus clientes. Os carros são classificados por tipo: popular, luxo e utilitário. As informações que interessam à locadora sobre cada um dos veículos são: placa do carro, tipo e valor diário do aluguel. Os funcionários da locadora são responsáveis pelo cadastro dos clientes e dos veículos. Eles também fazem as locações e encerram as mesmas. Há clientes especiais e comuns. Os especiais têm direito a uma taxa de desconto e um valor de quilometragem extra nas suas locações. Um cliente é identificado pelo nome, número do cartão de crédito e data de expiração.
Identifique classes, atributos e métodos.
Identifique classes, atributos e métodos.
Passo 1
O enunciado pede que a gente identifique as classes, atributos e métodos necessários para um sistema de locadora de veículos. Vou listar aqui, de maneira bem clara, o que o problema fornece e o que ele quer que o sistema trate.
Informações / dados fornecidos pelo enunciado:
- Existem três tipos de carros: popular, luxo e utilitário.
- Para cada veículo a locadora precisa armazenar: placa do carro, tipo e valor diário do aluguel.
- Há funcionários que fazem cadastro de clientes e veículos, e que também realizam e encerram locações.
- Existem dois tipos de clientes: especiais e comuns. Clientes especiais têm direito a uma taxa de desconto e a um valor de quilometragem extra nas locações.
- Um cliente é identificado por nome, número do cartão de crédito e data de expiração do cartão.
O que o enunciado pede:
- Identificar (listar) as classes necessárias.
- Para cada classe, identificar os atributos (informações que precisam ser guardadas).
- Para cada classe, identificar os métodos (as operações que cada classe precisa oferecer).
Passo 2
Vou propor as classes centrais do sistema. Aqui estou pegando as informações do enunciado e transformando em peças de projeto (cada classe corresponde a um “objeto” do domínio):
- Veículo
- Cliente
- ClienteEspecial (subclasse de Cliente)
- Funcionário
- Locação (contrato de aluguel)
- TipoVeículo (enumeração ou campo com conjunto de valores)
- Repositório/Gerenciador de dados (opcional: para operações de salvar/consultar)
- Pagamento (opcional, para registrar pagamentos)
Agora explico em passos detalhados os atributos e métodos de cada uma — do jeito que você consegue escrever numa prova.
Passo 3
Classe Veículo — quais atributos e por quê:
-
: identificador único do carro (string). A placa é usada para localizar o veículo. -
: indica se é , ou . Pode ser uma enumeração. -
: preço por dia (número, ex.: decimal). -
: odômetro atual (número). Útil para calcular km rodado na locação. -
: indica se está , , (string ou enum).
Métodos essenciais da classe Veículo (assinaturas explicativas):
-
: marca o veículo como alugado (muda ). -
: marca o veículo como disponível. -
: atualiza . -
: retorna os atributos principais (útil para listagem).
Explicação didática: um veículo precisa guardar o que o identifica (placa), quanto custa por dia, e seu estado. Os métodos mudam esse estado (alocar/liberar) e atualizam quilometragem.
Passo 4
Classe Cliente — atributos e motivos:
-
: nome do cliente (string). -
: número do cartão de crédito (string, com validação). -
: data de expiração do cartão (data). -
: telefone (opcional). -
: e-mail (opcional). -
: identificador interno (inteiro ou UUID).
Métodos da classe Cliente:
-
: atualiza telefone, e-mail, etc. -
: checa se a data de validade não passou e se o formato do número é plausível. -
: retorna lista de locações já realizadas pelo cliente (pode obter via repositório).
Explicação didática: cliente precisa ser identificado e ter meios de pagamento válidos. Método de validação evita iniciar locação com cartão vencido.
Passo 5
Classe ClienteEspecial — herança de Cliente:
Atributos adicionais:
Atributos adicionais:
-
: percentual de desconto sobre o total ou sobre a diária (ex.: para 10%). -
: quilometragem gratuita extra por locação (número de km).
Métodos adicionais:
-
: retorna o valor após desconto. -
: retorna o limite de km extra disponível.
Explicação didática: usar herança aqui é natural: ClienteEspecial “é um” Cliente, com atributos e comportamentos extras. Na prova, desenhe ClienteEspecial com linha de herança para Cliente e mostre os atributos extras.
Passo 6
Classe Funcionário — atributos e métodos:
Atributos:
Atributos:
-
-
(id do funcionário) -
/ (para sistema) -
(opcional)
Métodos:
-
: cria um novo Cliente no sistema. -
: registra novo Veículo. -
: executa os passos para iniciar uma locação (verificar cliente, veículo, criar registro). -
: encerra uma locação (fechar valores, atualizar quilometragem, liberar veículo).
Explicação didática: o funcionário é ator que executa operações do sistema. Métodos representam ações que, na prova, você descreve como procedimentos que chamam métodos de outras classes.
Passo 7
Classe Locação (contrato) — atributos e por quê:
-
: identificador da locação. -
: referência ao objeto Veículo. -
: referência ao objeto Cliente (ou ClienteEspecial). -
: referência ao Funcionário que criou a locação. -
: data de início da locação. -
: data prevista de devolução (pode ser nula até encerrar). -
: quilometragem do veículo no início. -
: quilometragem no encerramento (pode ser nulo até encerrar). -
: copiado do veículo no momento da locação (para histórico). -
: valor por km excedente (padrão do sistema ou por tipo de veículo). -
: / . -
: valor final calculado no encerramento.
Métodos essenciais da Locação:
-
: marca como ativa, registra e data. -
: define , calcula total, libera veículo e marca =encerrada. -
: aplica a fórmula de cobrança (vou detalhar abaixo). -
: calcula número de dias entre e (com regra de arredondamento se necessário). -
: retorna .
Passo 8
Fórmula de cobrança — explicação passo a passo (muito importante para prova)
Definimos as variáveis:
Definimos as variáveis:
-
= número de dias de locação (inteiro). -
= valor diário ( ). -
= valor cobrado por km extra além do permitido (por exemplo, R$ 0,50/km). -
= quilometragem rodada = . -
= quilometragem inclusa (padrão) + se cliente for especial. -
= valor absoluto subtraído por ser cliente especial (ou percentual aplicado ao subtotal).
Cálculo genérico do total padrão (sem descontos):
Se cliente especial com desconto percentual
(por ex.
para 10%):
Se o desconto for um valor fixo
:
Explicação didática: na prova, escreva as variáveis, explique cada termo e mostre a fórmula final. Sempre cheque se
— então não cobra km extra.
Passo 9
Exemplo numérico (modelo que você pode reproduzir em prova)
Suponha:
Suponha:
-
(R$ 100 por dia) -
dias -
R$ por km extra -
, → - Cliente especial com
km e (10% desconto) - Suponha quilometragem gratuita padrão
(ou algum valor; aqui vamos considerar só o extra do cliente)
Calculamos:
Mostre um cálculo assim na prova: é o que o fiscal espera — números claros, etapas, aplicação do desconto.
Passo 10
Relações entre classes e multiplicidades (como desenhar num diagrama ou descrever em prova)
- Um
pode ter 0…* no histórico, mas no máximo 1 locação ativa. (multiplicidade histórica: 0…*) - Um
pode ter 0…* . - Um
pode criar/encerrar 0…* . -
referencia exatamente 1 e 1 . -
herda de (seta de herança).
Na prova, desenhe linhas entre classes com as multiplicidades (ex.: Cliente 1 — 0…* Locacao).
Passo 11
Validações e regras de negócio importantes para anotar na prova
- Placa
deve respeitar formato (validação por regex). -
e não podem ser negativos. - Cartão de crédito:
deve ser posterior à data atual para permitir locação. - Ao iniciar locação, verificar
. - Ao encerrar, atualizar
com e . - Registrar quem (funcionário) iniciou e encerrou a locação (auditoria).
Passo 12
Classes auxiliares e persistência (boa prática — mencionar em prova se pedir arquitetura)
- Repositório/DAO:
, , com métodos como , , . - Serviço de cobrança/pagamento:
ou com método . - Em prova, diga que persistência pode ser feita em banco de dados; mostre métodos básicos CRUD.
Passo 13
Dicas finais para responder em prova
- Comece listando as classes principais (como eu fiz).
- Para cada classe, escreva 3–6 atributos relevantes e 3–6 métodos principais.
- Mostre relações (herança ClienteEspecial → Cliente; associação Locacao ↔ Veiculo, Cliente, Funcionário).
- Se der tempo, escreva a fórmula de cálculo do valor da locação com variáveis e um exemplo numérico (isso soma muitos pontos).
- Termine citando validações importantes (cartão vencido, veículo não disponível).
Força aí — descrevendo as classes e pegando um exemplo numérico você resolve essa questão na prova sem drama. Agora, na seção seguinte eu coloco apenas o resultado final pedido (classes com atributos e métodos) de forma compacta para você colar na sua folha.
Resposta
Veículo — Atributos:
,
,
,
,
. Métodos:
,
,
,
.
Cliente — Atributos:
,
,
,
,
,
. Métodos:
,
,
.
ClienteEspecial (herda Cliente) — Atributos:
,
. Métodos:
,
.
Funcionário — Atributos:
,
,
,
,
. Métodos:
,
,
,
.
Locação — Atributos:
,
,
,
,
,
,
,
,
,
,
,
. Métodos:
,
,
,
,
.
TipoVeículo (enum) — Valores:
,
,
.
Repositório (ex.: VeiculoRepository / ClienteRepository / LocacaoRepository) — Métodos:
,
,
,
,
.
Pagamento / CobrancaService — Métodos:
,
.
(Fórmula de cobrança a mencionar se pedir cálculo)
Se cliente especial com desconto percentual
: