Os objetivos desta aula são os seguintes: continuar a exercitar a utilização de tipos estruturados de informação, leitura e escrita de ficheiros e utilização de exceções. Após a realização da aula, o estudante deverá:
Uma agenda é composta por contactos telefónicos, em que cada contacto telefónico tem os atributos nome, telefone, email principal (opcional).
Deverá definir a classe de objetos Agenda
deve permitir todas as operações seguintes.
Escreva um programa que apresenta o menu anterior ao utilizador e, consoante a sua escolha faz a operação correspondente. O programa termina quando o utilizador introduzir a opção 0.
Caso o ficheiro de leitura não exista, deve informar o utilizador.
class Contact:
def __init__(self, name, number, email = ""):
self.__name = name
self.number = number
self.email = email
@property
def name(self):
return self.__name
def __str__(self):
return "{},{},{}".format(self.name, self.number, self.email)
def __eq__(self, other):
if not isinstance(other, self.__class__):
return False
return self.name == other.name and self.number == other.number
class Agenda:
def __init__(self):
self.__contacts = []
def add(self, c):
self.__contacts.append(c)
def listar(self):
for c in self.__contacts:
print(c)
def gravar(self, file_name):
f = open(file_name, 'w')
for c in self.__contacts:
f.write(str(c) + "\n")
f.close()
def ler(self, file_name):
f = open(file_name, 'r')
for line in f:
name, number, email = line.strip().split(",")
c = Contact(name, number, email)
self.__contacts.append( c )
f.close()
c1 = Contact("Maria Joana", 9999999, "joana@me.com")
c2 = Contact("Jararé Titó", 5555555, "jacare@lago.br")
# teste da classe agenda
a = Agenda()
a.add(c1)
a.add(c2)
print("=== Contactos na agenda ===")
a.listar()
a.ler("contactos.txt")
a.gravar("contactos.txt")
opcao = ""
while opcao != "0":
print("Menu:")
print("1. Adicionar um contacto à agenda")
print("2. Listar os contactos existentes")
print("7. Escrever a lista telefónica para um ficheiro (gravar)")
print("8. Ler a lista telefónica de um ficheiro (ler)")
opcao = input("Qual a sua opcao: ")
if opcao == "2":
a.listar()
elif opcao == "7":
a.gravar("contactos.txt")
elif opcao == "8":
try:
a.ler("contactos.txt")
except:
print("Não é possivel ler o ficheiro")
O funcionamento que se pretende para a repartição é o seguinte:
Desenvolva a classe fila de espera de modo a que o funcionamento acima seja possível. Na construção de um objeto deste tipo deve ser fornecido ao construtor o número máximo de pessoas admitido.