<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documentação - Sistema de Gestão de Veículos</title>
<style>
@page {
size: A4;
margin: 2cm;
}
body {
font-family: 'Times New Roman', Times, serif;
font-size: 12pt;
line-height: 1.5;
color: #000;
max-width: 21cm;
margin: 0 auto;
padding: 20px;
background: white;
}
.header {
text-align: center;
margin-bottom: 30px;
border-bottom: 2px solid #000;
padding-bottom: 15px;
}
.header h1 {
font-size: 16pt;
margin: 10px 0;
font-weight: bold;
}
.header p {
font-size: 12pt;
margin: 5px 0;
}
h2 {
font-size: 14pt;
font-weight: bold;
margin-top: 25px;
margin-bottom: 12px;
border-bottom: 1px solid #333;
padding-bottom: 5px;
}
h3 {
font-size: 12pt;
font-weight: bold;
margin-top: 15px;
margin-bottom: 8px;
}
p {
text-align: justify;
margin-bottom: 10px;
}
.diagram {
background: #f9f9f9;
border: 1px solid #333;
padding: 20px;
margin: 20px 0;
font-family: 'Courier New', monospace;
font-size: 10pt;
line-height: 1.4;
}
.class-box {
border: 1px solid #000;
margin: 10px 0;
padding: 10px;
background: white;
}
.class-name {
font-weight: bold;
text-align: center;
border-bottom: 1px solid #000;
padding-bottom: 5px;
margin-bottom: 5px;
}
.abstract {
font-style: italic;
}
ul, ol {
margin-left: 25px;
}
li {
margin-bottom: 8px;
}
.code {
background: #f5f5f5;
border-left: 3px solid #333;
padding: 10px;
font-family: 'Courier New', monospace;
font-size: 11pt;
margin: 10px 0;
}
.footer {
margin-top: 30px;
padding-top: 15px;
border-top: 1px solid #333;
text-align: center;
font-size: 10pt;
}
@media print {
body {
padding: 0;
}
.page-break {
page-break-after: always;
}
}
.btn-print {
position: fixed;
top: 20px;
right: 20px;
padding: 12px 24px;
background: #2c3e50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14pt;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
.btn-print:hover {
background: #1a252f;
}
@media print {
.btn-print {
display: none;
}
}
</style>
</head>
<body>
<button class="btn-print" onclick="window.print()">🖨️ Imprimir PDF</button>
<div class="header">
<h1>SISTEMA DE GESTÃO DE VEÍCULOS</h1>
<p>Universidade Católica de Moçambique</p>
<p>Disciplina: Programação Orientada a Objetos - 2º Ano</p>
<p> Djoy de SA laurentino Machado </p>
</div>
<h2>1. DESCRIÇÃO DO SISTEMA</h2>
<h3>1.1 Visão Geral</h3>
<p>O Sistema de Gestão de Veículos é uma aplicação desenvolvida em Java que permite gerenciar um inventário de veículos (carros e motocicletas). O sistema implementa os principais conceitos de Programação Orientada a Objetos, incluindo herança, polimorfismo, encapsulamento e abstração.</p>
<h3>1.2 Funcionalidades Principais</h3>
<ul>
<li><strong>Adicionar Veículos:</strong> Cadastro de carros e motocicletas com informações específicas de cada tipo.</li>
<li><strong>Listar Veículos:</strong> Visualização de todos os veículos cadastrados no sistema.</li>
<li><strong>Pesquisar por ID:</strong> Busca rápida de veículos através do identificador único.</li>
<li><strong>Pesquisar por Marca:</strong> Filtrar veículos pela marca desejada.</li>
<li><strong>Remover Veículos:</strong> Exclusão de veículos do sistema com confirmação.</li>
<li><strong>Estatísticas:</strong> Visualização do total de veículos e valor total do inventário.</li>
<li><strong>Cálculo de Impostos:</strong> Cálculo automático de impostos anuais baseado no tipo de veículo.</li>
</ul>
<h3>1.3 Características Técnicas</h3>
<p>O sistema utiliza estruturas de dados eficientes para gerenciamento de informações. A classe <strong>GestorVeiculos</strong> implementa um ArrayList para armazenamento sequencial e um HashMap para acesso rápido por ID. Cada veículo possui validação de dados e métodos específicos de acordo com seu tipo.</p>
<div class="page-break"></div>
<h2>2. DIAGRAMA DE CLASSES</h2>
<div class="diagram">
<div class="class-box">
<div class="class-name abstract"><<abstract>> Veiculo</div>
<div>- id: int</div>
<div>- marca: String</div>
<div>- modelo: String</div>
<div>- ano: int</div>
<div>- preco: double</div>
<div>- matricula: String</div>
<div style="border-top: 1px solid #000; margin-top: 5px; padding-top: 5px;">
+ getTipo(): String<br>
+ calcularImposto(): double<br>
+ exibirDetalhes(): void<br>
+ validar(): boolean
</div>
</div>
<div style="text-align: center; margin: 15px 0;">
↓ extends ↓ extends
</div>
<div style="display: flex; justify-content: space-around;">
<div class="class-box" style="width: 45%;">
<div class="class-name">Carro</div>
<div>- numeroPortas: int</div>
<div>- tipoCombustivel: String</div>
<div>- temArCondicionado: boolean</div>
<div style="border-top: 1px solid #000; margin-top: 5px; padding-top: 5px;">
+ calcularImposto(): double
</div>
</div>
<div class="class-box" style="width: 45%;">
<div class="class-name">Motocicleta</div>
<div>- cilindrada: int</div>
<div>- tipoMotor: String</div>
<div>- temBauLateral: boolean</div>
<div style="border-top: 1px solid #000; margin-top: 5px; padding-top: 5px;">
+ calcularImposto(): double
</div>
</div>
</div>
<div class="class-box" style="margin-top: 20px;">
<div class="class-name">GestorVeiculos</div>
<div>- veiculos: ArrayList<Veiculo></div>
<div>- mapaVeiculos: HashMap<Integer, Veiculo></div>
<div style="border-top: 1px solid #000; margin-top: 5px; padding-top: 5px;">
+ adicionar(Veiculo): void<br>
+ listarTodos(): void<br>
+ pesquisarPorId(int): Veiculo<br>
+ pesquisarPorMarca(String): ArrayList<br>
+ remover(int): void<br>
+ calcularValorTotal(): double
</div>
</div>
</div>
<h2>3. INSTRUÇÕES DE USO</h2>
<h3>3.1 Compilação e Execução</h3>
<p>Para compilar e executar o sistema, utilize os seguintes comandos no terminal:</p>
<div class="code">
javac gestao/veiculos/*.java<br>
java gestao.veiculos.Main
</div>
<h3>3.2 Operações do Sistema</h3>
<p><strong>Adicionar um Veículo:</strong> Selecione a opção 1 no menu principal. Escolha o tipo de veículo (Carro ou Motocicleta) e preencha as informações solicitadas. Para carros, informe número de portas, tipo de combustível e se possui ar condicionado. Para motocicletas, informe cilindrada, tipo de motor e se possui baú lateral.</p>
<p><strong>Listar Todos os Veículos:</strong> Selecione a opção 2 para visualizar todos os veículos cadastrados com suas informações resumidas.</p>
<p><strong>Pesquisar por ID:</strong> Use a opção 3 e informe o número de identificação do veículo para visualizar seus detalhes completos, incluindo o cálculo do imposto anual.</p>
<p><strong>Pesquisar por Marca:</strong> Selecione a opção 4 e digite a marca desejada para listar todos os veículos daquela marca.</p>
<p><strong>Remover Veículo:</strong> Na opção 5, informe o ID do veículo a ser removido e confirme a operação.</p>
<p><strong>Visualizar Estatísticas:</strong> A opção 6 exibe o total de veículos cadastrados e o valor total do inventário em Meticais (MT).</p>
<h3>3.3 Validações Implementadas</h3>
<ul>
<li>Ano de fabricação entre 1900 e 2025</li>
<li>Preços positivos e matrícula obrigatória</li>
<li>Número de portas para carros: 2 a 5</li>
<li>Cilindrada para motocicletas: 1 a 2000 cc</li>
</ul>
<div class="footer">
<p><strong>Sistema de Gestão de Veículos</strong> | Versão 1.0 | 2025</p>
<p>Desenvolvido por Djoy MAchado para fins acadêmicos - UCM</p>
</div>
</body>
</html>