La classe ToDo (4 punts)

Dissenyeu la classe ToDo i deseu-la al mòdul todo (fitxer todo.py):

class todo.ToDo(usuari)

Crea una instància de la classe que representa una llista de feines buida d’un usuari concret.

Atributs:

usuari

Nom de l’usuari (str)

llista

Llista de feines (instàncies de la classe Feina)

Mètodes:

afegeix(f)

Afegeix la feina f al final de la llista

neteja()

Elimina de la llista totes les feines ja fetes (no pendents)

Truc

Per a implementar aquest mètode, es recomana fer servir funcions que treballin amb iteradors (tot i que no és indispensable).

reordena()

Reordena la llista de feines de la següent manera:

  1. Les feines pendents s’ordenen per la seva prioritat, començant per la 1. Les feines ja realitzades quedaran darrere les pendents.

  2. En cas d’empat segons el criteri anterior, en ordre alfabètic de la descripció.

Suggeriment

Fixeu-vos que el mètode criteris() està especialment dissenyat per aconseguir fàcilment aquest ordre.

Operacions:

Operació

Resultat

len(todo)

Retorna el nombre de feines de la llista.

todo[i]

Retorna la feina i-èssima de la llista. Es compleix que \(0 \leq i \lt len(todo)\).

Exemples d’ús:


>>> td = ToDo('Josep Sala')
>>> (td.usuari, td.llista)
('Josep Sala', [])
>>> len(td)
0
>>>
>>> f1 = Feina("Rentar el cotxe", 3)
>>> td.afegeix(f1)
>>> f2 = Feina("Comprar entrades teatre", 2)
>>> td.afegeix(f2)
>>> f2.pendent = False
>>> f3 = Feina("Pagar el lloguer", 1)
>>> td.afegeix(f3)
>>> f4 = Feina("Pintar sostre", 2)
>>> td.afegeix(f4)
>>> f5 = Feina("Cosir mitjons", 3)
>>> td.afegeix(f5)
>>> len(td)
5
>>> td.llista == [f1, f2, f3, f4, f5]
True

>>> for i in range(len(td)):
...     print(td[i])
P - 3 - Rentar el cotxe
R - 2 - Comprar entrades teatre
P - 1 - Pagar el lloguer
P - 2 - Pintar sostre
P - 3 - Cosir mitjons

>>> td.neteja()
>>> len(td)
4
>>> td.reordena()
>>> for i in range(len(td)):
...     print(td[i])
P - 1 - Pagar el lloguer
P - 2 - Pintar sostre
P - 3 - Cosir mitjons
P - 3 - Rentar el cotxe

Disposeu de jocs de prova al fitxer tests-todo.txt