This repository has been archived by the owner on Aug 23, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
VeiculosBD.py
117 lines (99 loc) · 4.97 KB
/
VeiculosBD.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# -*- coding: utf-8 -*-
from VeiculosTipo import *
from VeiculoAbstrato import Veiculo
'''
Descrição: A classe VeiculosBD é utilizada como um banco de dados para guardar as informações dos carros armazenados
Utilização: A classe é utilizada pela classe controle para realizar algumas operações com o banco de dados através de seus métodos
Parâmetro: A classe não recebe nenhum parâmetro, apenas inicializa com o atributo privado BandoDados, que é do tipo lista
'''
class VeiculosBD():
def __init__(self):
self.__BancoDados = []
# Descrição: Método que adiciona um veiculo ao banco de dados
# Recebe como parâmetro tipo de veículo e os parâmetros das classe veículo, sendo o atributo específico de cada tipo representado por "extra"
def novoVeiculo(self, tipo, fabricante, modelo, extra, autonomia, ano, placa, renavam, chassi, reservado = False ):
if tipo.lower() == "carro":
return self.__BancoDados.append(Carro(fabricante, modelo, extra, autonomia, ano, placa, renavam, chassi, reservado))
elif tipo.lower() == "van":
return self.__BancoDados.append(Van(fabricante, modelo, extra, autonomia, ano, placa, renavam, chassi, reservado))
elif tipo.lower() == "ute":
return self.__BancoDados.append(Utilitario(fabricante, modelo, extra, autonomia, ano, placa, renavam, chassi, reservado))
else:
raise ValueError("Não existe veículo do tipo {0}".format(tipo))
# Descrição: busca um veículo pela placa, chassi ou RENAVAM
def procurar(self, key):
for veiculo in self.__BancoDados:
if key == veiculo.getPlaca() or key == veiculo.getChassi() or key == veiculo.getRenavam():
return veiculo
raise LookupError("Não existe veículo com esse atributo")
# Desrição: Busca todos os veículos disponíveis de um certo tipo
def buscarTipo(self, tipo):
disponiveis = []
if tipo.lower() == "carro":
for veiculo in self.__BancoDados:
if type(veiculo) is Carro and veiculo.getReservado() == False:
disponiveis.append(veiculo)
return disponiveis
elif tipo.lower() == "van":
for veiculo in self.__BancoDados:
if type(veiculo) is Van and veiculo.getReservado() == False:
disponiveis.append(veiculo)
return disponiveis
elif tipo.lower() == "utilitario":
for veiculo in self.__BancoDados:
if type(veiculo) is Utilitario and veiculo.getReservado() == False:
disponiveis.append(veiculo)
return disponiveis
else:
raise LookupError("Não existe veículo do tipo {0}".format(tipo))
# Descrição: Retorna o número de veículos disponíveis
def numVeiculos(self):
numVeiculos = 0
for veiculo in self.__BancoDados:
if veiculo.getReservado() == False:
numVeiculos += 1
return numVeiculos
# Descrição: Retorna o número de veículos disponíveis de um certo tipo
def numVeiculosTipo(self, tipo):
disponiveis = 0
if tipo.lower() == "carro":
for veiculo in self.__BancoDados:
if type(veiculo) is Carro and veiculo.getReservado() == False:
disponiveis += 1
return disponiveis
elif tipo.lower() == "van":
for veiculo in self.__BancoDados:
if type(veiculo) is Van and veiculo.getReservado() == False:
disponiveis += 1
return disponiveis
elif tipo.lower() == "utilitario":
for veiculo in self.__BancoDados:
if type(veiculo) is Utilitario and veiculo.getReservado() == False:
disponiveis += 1
return disponiveis
else:
raise LookupError("Não existe veículo do tipo {0}".format(tipo))
# Descrição: Cancela a reserva de um certo veículo pelo chassi, placa ou RENAVAM
def cancelarReserva(self, key):
veiculo = self.procurar(key)
if veiculo.getReservado() == True:
veiculo.mudaReserva()
return "Reserva cancelada"
else:
return "Veiculo não está reservado"
raise LookupError("Não existe veículo com atributo {0}".format(key))
# Descrição: Faz a reserva de um certo veículo pelo chassi, placa ou RENAVAM
def reservar(self, key):
veiculo = self.procurar(key)
if veiculo.getReservado() == False:
veiculo.mudaReserva()
return "Veículo reservado com sucesso"
else:
return "Veículo já possui reserva"
raise LookupError("Não existe veículo com atributo {0}".format(key))
# Descrição: Devolve uma lista de listas com as informações de todos os veículos em string
def listaVeiculos(self):
veiculos = []
for x in self.__BancoDados:
veiculos.append(x.__repr__())
return veiculos