generated from reprograma/onX-sx-temaX
-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Atividade S08 - Carla Freitas #27
Open
freitascarla
wants to merge
1
commit into
reprograma:main
Choose a base branch
from
reprograma-bootcamp:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
from Livro import Livro | ||
|
||
class Biblioteca: | ||
|
||
def __init__(self): # método construtor da classe | ||
"""Classe Biblioteca (tem como propriedade uma lista de livros)""" | ||
|
||
# raise NotImplementedError # levantando uma excessão para sinalizar que a classe não foi implementada | ||
|
||
self.acervo = [] | ||
"""acervo (lista): propriedade da classe Biblioteca""" | ||
|
||
def adicionar_livro(self, livro:Livro): # parâmetro livro do tipo classe Livro | ||
"""Método para adiconar um livro ao acervo da Biblioteca""" | ||
|
||
if not (isinstance(livro, Livro)): | ||
# se a propriedade livro não for igual a classe Livro apresente mensagem de erro | ||
raise TypeError (f"Esperado livro valor {livro} do tipo {type(livro)}") | ||
|
||
self.acervo.append(livro) | ||
# adicona o livro ao acervo da Biblioteca | ||
|
||
def exibir_acervo(self, livro:Livro): | ||
"""Método para exibir o acervo de livros da Biblioteca""" | ||
|
||
for livro in self.acervo: | ||
return livro | ||
# para cada livro contido no acervo da Biblioteca: exiba os livros | ||
|
||
def remover_livro(self, livro:Livro): | ||
"""Método para remover um livro do acervo da Biblioteca""" | ||
|
||
# para acessar os atributos da classe livro: livro_nomeatributo | ||
|
||
if livro.tituloLivro in self.acervo and livro.estaEmprestado == False: | ||
# se o livro a ser excluído pertence ao acervo da Biblioteca e não está emprestado: remova o livro e informe ao usuário | ||
self.acervo.remove(livro.tituloLivro) | ||
return (f"O livro {livro.tituloLivro} foi removido com sucesso!") | ||
|
||
elif livro.estaEmprestado == True: | ||
# se o livro pertence ao acervo da Biblioteca e está emprestado: não remova e informe ao usuário | ||
return (f"O livro {livro.tituloLivro} está emprestado. Portanto, não pode ser removido do acervo.") | ||
|
||
else: | ||
livro.tituloLivro in self.acervo and livro.tituloLivro not in self.acervo | ||
# se o livro não pertence ao acervo da Biblioteca: informe ao usuário | ||
return (f"O livro {livro.tituloLivro} não foi encontrado no acervo da Biblioteca.") | ||
|
||
def pesquisar_livro(self, livro:Livro): | ||
"""Método para pesquisar um livro no acervo da Biblioteca""" | ||
|
||
if livro.tituloLivro in self.acervo: | ||
# se o livro pertence ao acervo da Biblioteca: informe ao usuário os seus atributos | ||
return (f"Livro:{livro.tituloLivro}\nAutor:{livro.autorLivro}\nAno:{livro.anoLivro}\nStatus?{livro.estaEmprestado}") | ||
|
||
else: | ||
livro.tituloLivro not in self.acervo | ||
# se o livro não faz parte do acervo da Biblioteca: informe ao usuário | ||
return ("Livro não encontrado.") | ||
|
||
def emprestar_livro(self, livro:Livro): | ||
"""Método para emprestar um livro do acervo da Biblioteca""" | ||
|
||
if livro.tituloLivro in self.acervo and livro.estaEmprestado == False: | ||
# se o livro pertence ao acervo da Biblioteca e não está emprestado: empreste o livro | ||
return livro.estaEmprestado == True | ||
|
||
else: | ||
livro.tituloLivro in self.acervo and livro.estaEmprestado == True | ||
# se o livro pertence ao acervo da Biblioteca e está emprestado: informe ao usuário | ||
return (f"O livro {livro.tituloLivro} já se encontra emprestado.") | ||
|
||
def devolver_livro(self, livro:Livro): | ||
"""Método para devolver um livro emprestado ao acervo da Biblioteca""" | ||
|
||
if livro.tituloLivro in self.acervo and livro.estaEmprestado == True: | ||
# se o livro devolvido pertence ao acervo da Biblioteca e está emprestado: disponibilize no acervo | ||
return livro.estaEmprestado == False | ||
|
||
elif livro.tituloLivro in self.acervo and livro.estaEmprestado == False: | ||
# se o livro devolvido pertence ao acervo da Biblioteca mas consta como disponível: existe um problema | ||
return ("!Procure a gerência para verificar essa situção!") | ||
|
||
else: | ||
livro.tituloLivro not in self.acervo | ||
# se o livro não pertence ao acervo da Biblioteca: informe ao usuário | ||
return ("Livro não encontrado") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
class Livro: | ||
|
||
def __init__(self, titulo_livro, autor_livro, ano_livro): # método construtor da classe | ||
"""Classe Livro (tem como atributos: nome do livro, autor do livro e status do livro)""" | ||
|
||
self.tituloLivro = titulo_livro | ||
"""nome (str): propriedade da classe Livro""" | ||
self.autorLivro = autor_livro | ||
"""autor (str): propriedade da classe Livro""" | ||
self.anoLivro = ano_livro | ||
"""ano (str): propriedade da classe Livro""" | ||
self.estaEmprestado = False # por padrão, quando o livro é adicionado, ele não está emprestado | ||
"""status (bool): propriedade da classe Livro""" |
Empty file.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Muito bacana que fez a verificação se o livro já está emprestado antes de alterar o status novamente
Aqui só tem uma pequena correção:
Vc está verificando se o seu parametro recebido (livro) está com o status de emprestado como falso.
é importante a gente validar com as propriedades da própria classe no caso seria:
and self.acervo[x].estaEmprestado == False:
onde x é a posição do seu livro do acervo, e para encontrar o livro correto na lista tem algumas formas, a mais comum sendo o uso da função index()
E agora a dúvida: por que funcionou dessa forma?
parabéns você acaba de conhecer mais uma mania do Python!!
quando a gente cria um objeto e atribui esse objeto a outro eles guardam a mesma referencia, então quando altera um o outro também é alterado.
para se aprofundar nesse assunto aqui um artigo Python - A diferença entre “Deep Copy e Shallow Copy”