[ Foro de Python ]
Hola buenas Tardes,
Llevo 3 semanas en un curso de Python y me pidieron realizar el siguiente ejercicio...
Adjunto el enunciado y lo que he hecho hasta el momento...Agradeceria enormemente cualquier ayuda me puedan brindar:
ENUNCIADO:
Una Aerolinea desea implementar un sistema para emitir boletos de avion con los
siguientes datos:
Los Boletos de Avion tienen: NombreCliente, DireccionCliente, TelefonoCliente, ValorBoleto,ImpuestoSalida, PrecioPagar = ValorBoleto + ImpuestoSalida; HoraSalida, HoraLlegada,CiudadSalida, CiudadDestino, ademas para cada una de estas ciudades se almacena la HoraActual.
Existen tambien Boletos de Avion para Clientes Frecuentes que tienen ademas un PorcentajeDescuento,de modo tal que PrecioPagar = ValorBoleto + ImpuestoSalida -PorcentajeDescuento* ValorBoleto.
Los Boletos de Avion para Ejecutivos tienen tambien una lista de Alimentos Extras, donde cada alimento extra tiene Codigo, Descripciion y Precio, asi para los Boletos de Avion para Ejecutivos se tiene que el TotalAlimentos = suma de cada uno de los precios de la lista de alimentos, y el precio a pagar del boleto se calcula como sigue:
PrecioPagar = ValorBoleto+ ImpuestoSalida + TotalAlimentos.
LO QUE HE HECHO HASTA EL MOMENTO:
import pandas as pd
import numpy as np
class BoletoAvion(): #Clase Base
def __init__(self, valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino):
self.__valorBoleto= valorBoleto
self.__impuestoSalida = impuestoSalida
self.__horaSalida = horaSalida
self.__horaLlegada = horaLlegada
self.__cliente = cliente
self.__ciudadSalidad = ciudadSalida
self.ciudadDestino = ciudadDestino
@property
def PrecioPagar(self):
prepag = self.__valorBoleto + self.__impuestoSalida
return (prepag)
def imprimirboleto(self):
for x in self.boletoAvion:
print("ValorBoleto: ",x.valorBoleto, "impuestoSalida: ", x.impuestoSalida,
"horaSalida: ", x.horaSalida,"horaLlegada: ", x.horaLlegada,"ciudadDestino: ", x.ciudadDestino)
class Cliente (): #La clase base posee una clase llamada:Cliente
def __init__(self, valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino,nombre,direccion,telefono):
super().__init__(valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino)
self.__nombre = nombre
self.__direccion = direccion
self.__telefono = telefono
class Ciudad (): #La clase base posee una clase llamada: Ciudad
def __init__(self, valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino,salidaDestino,horaActual):
super().__init__(valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino)
self.__salidaDestino = salidaDestino
self.__horaActual = horaActual
class Boleto_Cliente_Frecuente(BoletoAvion): #Clase derivada de la clase base
def __init__(self, valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino,descuento):
super().__init__(valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino)
self.__descuento= 10
@property
def PrecioPagarCF(self):
preciopagar = self.__valorBoleto + self.__impuestoSalida - self.descuento * self.__valorBoleto
return (preciopagar)
class BoletoEjecutivo(BoletoAvion): #Clase derivada de la clase base
def __init__(self,valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino,listaAlimentos):
super().__init__(valorBoleto,impuestoSalida,horaSalida,horaLlegada,cliente,ciudadSalida,ciudadDestino)
self.__alimentos = listaAlimentos
@property
def alimentos(self):
return self.__alimentos
@alimentos.setter
def alimentos(self,listaAlimentos):
self.__alimentos = listaAlimentos
def totalAlimento(self):
return sum([i.precio for i in self.__alimentos])
def precioPagar(self):
return super().precioPagar() + self.totalAlimento()
def __str__(self):
alimentos = "\n\n[Alimentos]:\n"
for i in self.__alimentos:
alimentos += i.__str__() + "\n\n"
return super().__str__() + alimentos
class AlimentoExtra():
def __init__(self, alimentos):
self.__alimentos = alimentos
@property
def alimentos(self):
return self.__alimentos
def imprimirAlimentos(self):
for x in self.alimentos:
print("Codigo: ",x.codigo, "Descripcion: ", x.descripcion, "Precio: ", x.precio)
class Alimento(): #La clase Bioleto ejecutivo posee una clase llamada: Alimento
def __init__(self, codigo, descripcion, precio):
self.__codigo = codigo
self.__descripcion = descripcion
self.__precio = precio
@property
def codigo(self):
return self.__codigo
@property
def descripcion(self):
return self.__descripcion
@property
def precio(self):
return self.__precio
def __str__(self):
codigo = "Codigo: %s\n" % (self.__codigo)
descripcion = "Descripcion: %s\n" % (self.__descripcion)
precio = "Precio: %s\n" % (self.__precio)
return codigo + descripcion + precio
hola britanny
yo también estoy empezando, lo que me parece es un empacho de clases jajaja
bueno en realidad creo que le falta un poco de diseño o organización
lo que te propongo es que la clase Boleto guarde todos los datos del boleto y
llame a los metodos privados correspondientes para pedirlos desde __init__
por ej
- d_cliente, guarda los datos del cliente en una tupla
- d_vuelo, guarda en una tupla los datos del vuelo
- etc
y vas rellenado todos los campos del boleto
finalmente sobreescribes __str__ de manera que compruebe si todos los
campos estan rellenados y envie una cadena con todos los datos del boleto
listos para imprimir
en el programa principal entras en un bucle que pida boletos, los guardará
en una lista y al salir pregunte si quieres ver la lista de ventas de boletos que
imprimira cada elemento de la lista ej [print(boleto) for boleto in l_boletos]
te ahorrarás todos los @property y setters ya que son metodos privados
antes de guardar cada boleto visualizalo y confirma que esté correcto, si no lo
es borra con del(boleto) y vuelve a pedir los datos
suerte ;-)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)