Desarrollo de un Sistema de Gestión de Entidades en Python
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,51 KB
Introducción al Sistema de Gestión de Pilotos y Equipos
Este documento presenta la implementación de una clase en Python, denominada Sistema, diseñada para gestionar la información de pilotos y equipos. Se detallan las funcionalidades clave para el registro, búsqueda y modificación de datos, así como la lógica para la asignación de cupos en los equipos y la identificación de pilotos destacados.
Clase Sistema: Gestión Centralizada
La clase Sistema actúa como el contenedor principal para las colecciones de pilotos y equipos, facilitando las operaciones sobre estos conjuntos de datos.
Constructor de la Clase Sistema
El método __init__ inicializa las listas vacías para almacenar los objetos Piloto y Equipo.
class Sistema():
def __init__(self):
self.pilotos = []
self.equipos = []
Métodos de Gestión de Equipos
Estos métodos permiten la manipulación de los datos relacionados con los equipos.
registrar_equipo(self, codigo, nombre, anio)
Este método se encarga de crear una nueva instancia de Equipo y añadirla a la lista de equipos gestionados por el sistema.
def registrar_equipo(self, codigo, nombre, anio):
# Crea un objeto Equipo.
un_equipo = Equipo(codigo, nombre, anio)
# Guarda el equipo en la lista de equipos.
self.equipos.append(un_equipo)
buscar_equipo(self, un_codigo)
Permite buscar un equipo específico utilizando su código identificador. Retorna el objeto Equipo si lo encuentra, o None en caso contrario.
def buscar_equipo(self, un_codigo):
# Busca el equipo por su ID; si lo encuentra, lo retorna.
# Si termina de recorrer toda la lista, retorna None
# porque no encontró el equipo con el ID.
for eq in self.equipos:
if eq.codigo == un_codigo:
return eq
return None
Métodos de Gestión de Pilotos
Estos métodos se centran en la administración de los datos de los pilotos.
registrar_piloto(self, codigo, nombre, fecha, ptos, equipo)
Registra un nuevo piloto en el sistema, creando una instancia de Piloto y añadiéndola a la lista correspondiente.
def registrar_piloto(self, codigo, nombre, fecha, ptos, equipo):
un_piloto = Piloto(codigo, nombre, fecha, ptos, equipo)
self.pilotos.append(un_piloto)
buscar_piloto(self, un_codigo)
Busca un piloto por su código. Retorna el objeto Piloto si lo encuentra, o None si no existe.
def buscar_piloto(self, un_codigo):
for piloto in self.pilotos:
if piloto.codigo == un_codigo:
return piloto
return None
Lógica de Negocio: Cupos y Rendimiento
La clase Sistema también implementa lógica de negocio específica para la gestión de cupos y el seguimiento del rendimiento de los pilotos.
hay_cupo_en_equipo(self, un_equipo)
Verifica si un equipo tiene cupos disponibles para nuevos pilotos. Se asume que un equipo tiene un máximo de dos pilotos.
def hay_cupo_en_equipo(self, un_equipo):
cantidad_cupos = 0
# Recorre la lista de pilotos para verificar a qué equipo pertenece cada uno.
for piloto in self.pilotos:
# Pregunta a cada piloto si pertenece al equipo buscado.
if piloto.equipo == un_equipo:
cantidad_cupos += 1
# Hay cupos libres si la cantidad de pilotos es menor a 2.
hay_cupos_libres = cantidad_cupos < 2 # (True o False)
return hay_cupos_libres
cambiar_equipo_del_piloto(self, piloto, nuevo_equipo)
Permite cambiar un piloto de equipo, siempre y cuando el nuevo equipo tenga cupo disponible. Retorna True si el cambio se realiza con éxito, False en caso contrario.
def cambiar_equipo_del_piloto(self, piloto, nuevo_equipo):
# Verifica si existe cupo libre en el nuevo equipo.
if self.hay_cupo_en_equipo(nuevo_equipo):
# Realiza el cambio de equipo.
piloto.actualizar_equipo(nuevo_equipo)
# Se realizó la actualización del equipo.
return True
return False
pilotos_en_primer_lugar(self)
Identifica y retorna una lista de todos los pilotos que tienen la puntuación máxima en el sistema.
def pilotos_en_primer_lugar(self):
lista_pilotos = []
# Determina la puntuación máxima entre los pilotos.
maximo = 0
for piloto in self.pilotos:
if piloto.puntos > maximo:
maximo = piloto.puntos
# Verifica qué pilotos tienen el puntaje máximo.
for piloto in self.pilotos:
if piloto.puntos == maximo:
lista_pilotos.append(piloto)
return lista_pilotos
Función de Interfaz de Usuario: Cambio de Equipo
Esta función independiente simula una interacción de usuario para cambiar el equipo de un piloto, solicitando los códigos necesarios y validando su existencia antes de realizar la operación.
def cambiar_equipo_del_piloto():
# Solicita el código del piloto y verifica su existencia.
codigo_piloto = int(input("Ingrese el código del piloto: "))
piloto = sistema.buscar_piloto(codigo_piloto)
if piloto is None:
print("No existe piloto con ese código.")
return
# Solicita el código del nuevo equipo.
codigo_equipo = input("Ingrese el ID del equipo: ")
equipo = sistema.buscar_equipo(codigo_equipo)
if equipo is None:
print("No existe un equipo con ese código.")
return
cambio_realizado = sistema.cambiar_equipo_del_piloto(piloto, equipo)
if cambio_realizado:
print("Equipo actualizado con éxito.")
else:
print("No se pudo actualizar el equipo. El nuevo equipo no tiene cupo.")