Realizando Chamadas
Explorando POO com Python - 1/3
Descrição
Vamos agora, adicionar uma funcionalidade à classe UsuarioTelefone
, que realizar chamadas para outros usuários. Cada chamada terá uma duração em minutos e o custo será deduzido do saldo do usuário, suponha o custo de $0.10 por minuto. Você pode criar um método fazer_chamada
que vai permitir que o usuário faça a chamada, ele vai receber o destinatario
e duracao
como parâmetros. Calcule o custo da chamada usando o método custo_chamada
do objeto plano
, além de adicionar o método deduzir_saldo
para deduzir o valor do saldo do plano e depois retorne uma mensagem adequada como mostra no exemplo a baixo.
Entrada
Número do usuário, número do telefone, saldo inicial, número do destinatário e a duração da chamada em minutos.
Saída
Mensagem indicando o sucesso da chamada ou saldo insuficiente para fazer a chamada.
Exemplos
A tabela abaixo apresenta exemplos com alguns dados de entrada e suas respectivas saídas esperadas. Certifique-se de testar seu programa com esses exemplos e com outros casos possíveis.
Entrada | Saída |
---|---|
Rodrigo | |
(00) 90000-0000 | |
10.00 | Chamada para (33) 93333-3333 realizada com sucesso. Saldo: $4.00 |
(33) 93333-3333 | |
60 |
Entrada | Saída |
---|---|
Yule | |
(11) 91111-1111 | |
30.00 | Chamada para (00) 90000-0000 realizada com sucesso. Saldo: $6.00 |
(00) 90000-0000 | |
240 |
Entrada | Saída |
---|---|
Amelia | |
(33) 93333-3333 | |
10.00 | Saldo insuficiente para fazer a chamada. |
(11) 91111-1111 | |
120 |
Resolução
class UsuarioTelefone:
def __init__(self, nome, numero, plano):
self.nome = nome
self.numero = numero
self.plano = plano
def fazer_chamada(self, destinatario, duracao):
custo_chamada = self.plano.custo_chamada(duracao)
if self.plano.verificar_saldo() >= custo_chamada:
self.plano.deduzir_saldo(custo_chamada)
return f"Chamada para {destinatario} realizada com sucesso. Saldo: ${self.plano.verificar_saldo():.2f}"
else:
return "Saldo insuficiente para fazer a chamada."
class Plano:
def __init__(self, saldo_inicial):
self.saldo = saldo_inicial
def verificar_saldo(self):
return self.saldo
def custo_chamada(self, duracao):
return duracao * 0.10
def deduzir_saldo(self, valor):
self.saldo -= valor
class UsuarioPrePago(UsuarioTelefone):
def __init__(self, nome, numero, saldo_inicial):
super().__init__(nome, numero, Plano(saldo_inicial))
nome = input()
numero = input()
saldo_inicial = float(input())
usuario_pre_pago = UsuarioPrePago(nome, numero, saldo_inicial)
destinatario = input()
duracao = int(input())
print(usuario_pre_pago.fazer_chamada(destinatario, duracao))
Para encontrar outras soluções, verifique aqui.
Caso encontre algum erro ou tenha sugestões, clique aqui e abra uma issue no Github.