Created
January 5, 2017 05:29
-
-
Save felipebastosweb/f56c7ea941f21243f04cf1fc7d6a9ba4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Análise inicial da autonomia do combustível (gasolina) de um veículo para uma viagem, ajudando a prever a probabilidade de faltar gasolina. | |
Cálculo incompleto, use por sua conta e risco. | |
Precisa de refatoração. | |
""" | |
class Fabricante(object): | |
nome = '' | |
def __init__(self, nome): | |
self.nome = nome | |
class Modelo(object): | |
fabricante = Fabricante | |
nome = '' | |
fabricacao = 0 | |
venda = 0 | |
tanque = 0 | |
#rendimento | |
gasolina_cidade = 0 | |
gasolina_estrada = 0 | |
def __init__(self, fabricante, nome, fabricacao, venda): | |
self.fabricacao = fabricacao | |
self.venda = venda | |
""" | |
@var integer cidade km/l na cidade | |
@var integer estrada km/l na estrada | |
@return void | |
""" | |
def set_rendimento_gasolina(self, cidade, estrada): | |
self.gasolina_cidade = cidade | |
self.gasolina_estrada = estrada | |
def set_tanque(self, tanque): | |
self.tanque = tanque | |
def tanque(self): | |
return self.tanque | |
def rendimento_gasolina_cidade(self): | |
return self.gasolina_cidade | |
def rendimento_gasolina_estrada(self): | |
return self.gasolina_estrada | |
class Veiculo(object): | |
modelo = Modelo | |
gasolina = 0 | |
def __init__(self, modelo): | |
self.modelo = modelo | |
def set_gasolina(self, gasolina): | |
self.gasolina = gasolina | |
class Percurso(object): | |
tipo = '' | |
distancia = 0 | |
def __init__(self, tipo, distancia): | |
self.tipo = tipo | |
self.distancia = distancia | |
""" | |
52km / 13km/l = 4l | |
""" | |
def litros(self): | |
if self.tipo == 'estrada': | |
return self.distancia / veiculo.modelo.rendimento_gasolina_estrada() | |
else: | |
return self.distancia / veiculo.modelo.rendimento_gasolina_cidade() | |
class Viagem(object): | |
veiculo = Veiculo | |
percursos = [] | |
__distancia_total = 0 | |
def __init__(self, veiculo): | |
self.veiculo = veiculo | |
def add_percurso(self, percurso): | |
self.percursos.append(percurso) | |
def calcula_distancia(self): | |
for p in self.percursos: | |
self.__distancia_total += p.distancia | |
def distancia_total(self): | |
return self.__distancia_total | |
def calcula_litros(self): | |
litros = 0 | |
for p in self.percursos: | |
litros = p.litros() | |
return litros | |
def autonomia(self): | |
litros = self.calcula_litros() | |
if self.veiculo.gasolina > litros: | |
return ((self.veiculo.gasolina - litros) / self.veiculo.modelo.tanque) * 100 | |
fabricante = Fabricante('Ford') | |
modelo = Modelo(fabricante, 'Ka 1.0 SE', 2015, 2015) | |
modelo.set_rendimento_gasolina(11, 13) | |
modelo.set_tanque(51) | |
veiculo = Veiculo(modelo) | |
veiculo.set_gasolina(25) | |
percurso1 = Percurso('cidade', 16) | |
percurso2 = Percurso('estrada', 88) | |
viagem = Viagem(veiculo) | |
viagem.add_percurso(percurso1) | |
viagem.add_percurso(percurso2) | |
viagem.calcula_distancia() | |
print('Distancia Total: \n') | |
print(viagem.distancia_total()) | |
print('\nLitros Total: \n') | |
print(viagem.calcula_litros()) | |
print('\nAutonomia:\n') | |
print(viagem.autonomia()) |
Perfeito Felipe, eu fui acrescentando os atribuitos e os gets e sets a medida que validava o calculo de autonomia (previsibilidade de sobra de combustivel). Vou refatorar estes pontos pra ficar mais pythonico.
Quero inclusive relembrar como setar definindo a variavel .. ex
method(attr1 = value, attr2 = value2)
pq na hora nao lembrei.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Esse jeito de escrever classes é muito Java ou C#...
Uma reescrita seria:
Você não precisa de um
set_gasolina
, pois gasolina não é privado ao objeto.É apenas uma sugestão de escrita.