Python - Ayuda con problema python

 
Vista:
sin imagen de perfil

Ayuda con problema python

Publicado por Marcelo (4 intervenciones) el 16/09/2022 01:50:41
Hola gente, tengo q resolver este problema:

3. La empresa “Floripa!” que se dedica a la comercialización de indumentaria y accesorios
deportivos desea implementar un sistema de control de acceso de sus empleados. La
información a registrar es:

Empleado
Atributo Tipo de Datos
Legajo int
Documento str
Apellido str
Nombre str
Oficina Oficina

Oficina
Atributo Tipo de Datos
Nombre str
HoraEntrada datetime.time
HoraSalida datetime.time

Marcación
Atributo Tipo de Datos
Número de Registro int
Empleado Empleado
FechaHora datetime.datetime
Tipo MarcacionTipo

MarcacionTipo
Valores posibles: Entrada, Salida

a) Programe las clases que considera necesarias para dar solución al problema
planteado.
b) Modifique las clases creadas en el punto anterior agregando:
i. Un constructor que reciba por parámetro valores para inicializar cada una de las
propiedades o atributos.
ii. Los métodos especiales: __str_(), __repr__() y __eq__().
c) Modifique la clase Empleado implementando el método especial __lt__(self, other)
de forma que indique que una instancia de Empleado es menor que otra comparando
los atributos legajo.
d) Modifique la clase Marcacion de forma que:
i. Cuente con una propiedad de clase que almacene el último número de registro
asignado.
ii. Modifique el constructor de forma que a cada nueva instancia se asigne un número
de registro y posteriormente se incremente el atributo de clase.
iii. Defina un método de acceso solo lectura que encapsule el atributo número de
registro. En caso que quiera modificarse el valor del atributo arroje una excepción.
e) Construya la clase MarcacionesAdmin como clase que extienda a
MarcacionesAdminAbstract e implemente sus métodos abstractos:
from abc import ABC, abstractmethod
from empleado import Empleado
from marcacion import Marcacion
class MarcacionesAdminAbstract(ABC):

def __init__(self) -> None:
self.marcaciones = list()

def __len__(self) -> int:
"""Indica la cantidad de marcaciones almacenadas.
Returns:
int: cantidad de elementos almacenados actualmente en marcaciones.
"""
return len(self.marcaciones)

def __getitem__(self, key: int) -> Marcacion:
"""Obtiene el elemento en la posición indicada por key."""
return self.marcaciones[key]

def __delitem__(self, key: int) -> None:
"""Elimina la marcación ubicada en la posición indicada por key."""
del self.marcaciones[key]

def __str__(self) -> str:
res = ""
for elem in self.marcaciones:
res += "{elem}\n".format(elem=str(elem))
return res
@abstractmethod
def agregar(self, marcacion : Marcacion) -> None:
"""Agrega la marcación pasada por parámetro al final de la lista de marcaciones
Args:
marcacion (Marcacion): instancia de clase marcación que se
va a agregar al final de la lista de marcaciones.
"""
pass

@abstractmethod
def empleados(self) -> list:
"""Devuelve todos los empleados de los que se tiene registro de marcación(no repetir
resultados).
Returns:
list: lista formada por las ocurrencias únicas de
empleados dentro de la lista de marcaciones
"""
pass

@abstractmethod
def filtrar_por_empleado(self, empleado: Empleado) -> list:
"""Devuelve todas las marcaciones de un empleado."""
pass

@abstractmethod
def filtrar_por_tipo(self, tipo: Marcacion) -> list:
"""Devuelve todas las marcaciones del tipo especificado por parámetro."""

@abstractmethod
def llegadas_tarde(self) -> list:
"""Devuelve las marcaciones realizadas fuera del horario de ingreso."""

@abstractmethod
def ordenar_legajo(self) -> None:
"""Ordena las marcaciones por legajo de empleado y luego por fecha/hora."""
pass
@abstractmethod
def ordenar_apellido_nombre(self) -> None:
"""Ordena las marcaciones por apellido y nombre del empleado, luego por fecha/hora."""
pass

y esto es lo que llevo resolvido hasta ahora:

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
class Empleado:
    def __init__(self,legajo,documento,apellido,nombre,oficina):
        self.legajo = legajo
        self.documento = documento
        self.apellido = apellido
        self.nombre = nombre
        self.oficina = oficina
 
    def  __str__(self):
        return f"""
Legajo: {self.legajo}
Documento: {self.documento}
Apellido:{self.apellido}
Nombre:{self.nombre}
Oficina:{self.oficina}
"""
while True:
    try:
        legajo = int(input("Por favor ingresar el número de legajo: "))
        break
    except:
        legajo = print("¡Atención! No ingresó un número ")
 
 
documento = input("Por favor ingresar el legajo: ").capitalize()
apellido = input("Por favor ingresar apellido: ").capitalize()
nombre = input("Por favor ingresar nombre: ").capitalize()
oficina = input("Por favor ingresar la oficina: ")
 
e = Empleado(legajo,documento,apellido,nombre,oficina)
print(e)

Principalmente no entiendo los puntos c, d, y e, asi que si alguien quiere guiarme para resolverlos o mostrarme
como queda el ejercicio completo para explicarmelo, estaria agradecido. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder