Componentes: Enzo Gabriel Preisler, Kauê Rian Pereira Carvalho, Vitor Gabriel Schreiner
Objetivos: Desenvolver um programa em Python usando orientação a objetos para cadastrar, editar, listar e apagar tarefas, cada uma com sua prioridade e setor, para organizar e facilitar o trabalho interno.
Metodologia de desenvolvimento: Metodologia realizada em fases: Análise do problema. Modelagem das classes com herança, encapsulamento e polimorfismo. Criação do menu interativo para o usuário. Testes finais com diferentes tipos de tarefa.
# Classe base
class Tarefa:
def __init__(self, titulo, setor, prioridade):
self.__titulo = titulo
self.__setor = setor
self.__prioridade = prioridade
def get_titulo(self):
return self.__titulo
def get_setor(self):
return self.__setor
def get_prioridade(self):
return self.__prioridade
def set_titulo(self, novo_titulo):
self.__titulo = novo_titulo
def set_setor(self, novo_setor):
self.__setor = novo_setor
def set_prioridade(self, nova_prioridade):
self.__prioridade = nova_prioridade
def exibir(self):
print(f"Tarefa: {self.__titulo} | Setor: {self.__setor} | Prioridade: {self.__prioridade}")
# Classe derivada com polimorfismo
class TarefaImportante(Tarefa):
def __init__(self, titulo, setor):
super().__init__(titulo, setor, "Alta")
def exibir(self):
print(f"[URGENTE] {self.get_titulo()} - {self.get_setor()} (Prioridade: {self.get_prioridade()})")
# Classe que gerencia as tarefas
class GerenciadorTarefas:
def __init__(self):
self.__tarefas = []
def adicionar_tarefa(self, tarefa):
self.__tarefas.append(tarefa)
print(f"Tarefa '{tarefa.get_titulo()}' adicionada.")
def remover_tarefa(self, titulo):
nova_lista = []
removida = False
for tarefa in self.__tarefas:
if tarefa.get_titulo().lower() != titulo.lower():
nova_lista.append(tarefa)
else:
removida = True
self.__tarefas = nova_lista
if removida:
print(f"Tarefa '{titulo}' removida.")
else:
print("Tarefa não encontrada.")
def listar_tarefas(self):
if self.__tarefas == []:
print("Nenhuma tarefa cadastrada.")
else:
print("\n=== TAREFAS ===")
for tarefa in self.__tarefas:
tarefa.exibir()
def editar_tarefa(self, titulo_original):
for tarefa in self.__tarefas:
if tarefa.get_titulo().lower() == titulo_original.lower():
print("\n--- Editar Tarefa ---")
novo_titulo = input("Novo título (deixe vazio para manter): ")
novo_setor = input("Novo setor (deixe vazio para manter): ")
if not isinstance(tarefa, TarefaImportante):
nova_prioridade = input("Nova prioridade (Alta/Média/Baixa, deixe vazio para manter): ")
else:
nova_prioridade = "Alta"
if novo_titulo != "":
tarefa.set_titulo(novo_titulo)
if novo_setor != "":
tarefa.set_setor(novo_setor)
if nova_prioridade != "" and not isinstance(tarefa, TarefaImportante):
tarefa.set_prioridade(nova_prioridade)
print("Tarefa atualizada com sucesso.")
return
print("Tarefa não encontrada.")
# Menu interativo
def menu():
print("\n=== MENU ===")
print("1 - Adicionar tarefa comum")
print("2 - Adicionar tarefa IMPORTANTE")
print("3 - Listar tarefas")
print("4 - Remover tarefa")
print("5 - Editar tarefa")
print("6 - Sair")
def main():
sistema = GerenciadorTarefas()
sair = False
while not sair:
menu()
opcao = input("Escolha: ")
if opcao == "1":
titulo = input("Título: ")
setor = input("Setor: ")
prioridade = input("Prioridade (Alta/Média/Baixa): ")
tarefa = Tarefa(titulo, setor, prioridade)
sistema.adicionar_tarefa(tarefa)
elif opcao == "2":
titulo = input("Título: ")
setor = input("Setor: ")
tarefa = TarefaImportante(titulo, setor)
sistema.adicionar_tarefa(tarefa)
elif opcao == "3":
sistema.listar_tarefas()
elif opcao == "4":
titulo = input("Digite o título da tarefa que deseja remover: ")
sistema.remover_tarefa(titulo)
elif opcao == "5":
titulo = input("Digite o título da tarefa que deseja editar: ")
sistema.editar_tarefa(titulo)
elif opcao == "6":
print("Encerrando o programa.")
sair = True
else:
print("Opção inválida.")
main()