Utilizando a linguagem de programação orientada a objetos de sua preferência, crie uma classe para modelar um livro. Quais atributos e métodos são importantes para um sistema que tem um livro como objeto? Defina os métodos construtor e destrutor da classe.

Passo 1

Beleza, vamos lá! O exercício pede para a gente criar uma classe que modele um livro usando programação orientada a objetos (POO). Isso significa que vamos definir as características e comportamentos que um livro tem dentro de um sistema. Para isso, vamos precisar pensar nos atributos (as características do livro, tipo título, autor) e nos métodos (as ações que o livro pode realizar ou que podemos fazer com ele, como emprestar ou devolver). Também vamos definir o método construtor, que cria o objeto livro com suas características, e o destruidor, que remove o objeto quando não for mais necessário.

Passo 2

Primeiro, vamos escolher uma linguagem de programação. Vou usar Python porque é bem intuitiva e fácil de entender. Na POO, a gente cria classes que são como moldes para os objetos. Então, vamos criar uma classe chamada Livro.
class Livro:
    pass

Passo 3

Agora, vamos pensar nos atributos que um livro geralmente tem. Alguns importantes são:
  • Título (titulo): o nome do livro.
  • Autor (autor): quem escreveu o livro.
  • ISBN (isbn): um código único que identifica o livro.
  • Ano de publicação (ano_publicacao): quando o livro foi publicado.
  • Disponível (disponivel): se o livro está disponível para empréstimo.
Vamos adicionar esses atributos na nossa classe.

Passo 4

Para adicionar os atributos, usamos o método construtor. Em Python, ele é definido com __init__. Esse método é chamado quando a gente cria uma nova instância da classe, ou seja, um novo livro.
class Livro:
    def __init__(self, titulo, autor, isbn, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.isbn = isbn
        self.ano_publicacao = ano_publicacao
        self.disponivel = True  # Por padrão, o livro está disponível
Explicação: O método __init__ recebe os parâmetros básicos do livro e inicializa os atributos. self.disponivel é definido como True por padrão, indicando que o livro está disponível para empréstimo quando criado.

Passo 5

Agora, vamos definir alguns métodos para que possamos interagir com o objeto Livro. Dois métodos básicos são:
  • emprestar: marca o livro como não disponível.
  • devolver: marca o livro como disponível.
class Livro:
    def __init__(self, titulo, autor, isbn, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.isbn = isbn
        self.ano_publicacao = ano_publicacao
        self.disponivel = True

    def emprestar(self):
        if self.disponivel:
            self.disponivel = False
            print(f"O livro '{self.titulo}' foi emprestado.")
        else:
            print(f"O livro '{self.titulo}' já está emprestado.")

    def devolver(self):
        self.disponivel = True
        print(f"O livro '{self.titulo}' foi devolvido.")
Explicação:
  • O método emprestar verifica se o livro está disponível. Se estiver, muda o status para False e avisa que o livro foi emprestado. Se não, informa que já está emprestado.
  • O método devolver simplesmente marca o livro como disponível novamente e avisa que foi devolvido.

Passo 6

Vamos também definir o método destruidor. Em Python, ele é representado por __del__ e é chamado quando o objeto é removido da memória. Embora em Python não seja muito comum precisar de um destruidor, vamos implementá-lo para completar a classe.
class Livro:
    def __init__(self, titulo, autor, isbn, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.isbn = isbn
        self.ano_publicacao = ano_publicacao
        self.disponivel = True

    def emprestar(self):
        if self.disponivel:
            self.disponivel = False
            print(f"O livro '{self.titulo}' foi emprestado.")
        else:
            print(f"O livro '{self.titulo}' já está emprestado.")

    def devolver(self):
        self.disponivel = True
        print(f"O livro '{self.titulo}' foi devolvido.")

    def __del__(self):
        print(f"O livro '{self.titulo}' foi removido do sistema.")
Explicação: Quando um objeto Livro é deletado, o método __del__ imprime uma mensagem indicando que o livro foi removido do sistema.

Resposta

Aqui está a classe Livro completa em Python, com atributos, métodos construtor e destruidor:
class Livro:
    def __init__(self, titulo, autor, isbn, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.isbn = isbn
        self.ano_publicacao = ano_publicacao
        self.disponivel = True

    def emprestar(self):
        if self.disponivel:
            self.disponivel = False
            print(f"O livro '{self.titulo}' foi emprestado.")
        else:
            print(f"O livro '{self.titulo}' já está emprestado.")

    def devolver(self):
        self.disponivel = True
        print(f"O livro '{self.titulo}' foi devolvido.")

    def __del__(self):
        print(f"O livro '{self.titulo}' foi removido do sistema.")
Esse código define uma classe Livro com os atributos titulo, autor, isbn, ano_publicacao e disponivel. Inclui métodos para emprestar e devolver o livro, além do destruidor que avisa quando o livro é removido do sistema.

Exercícios relacionados

Diferencie Associação, Agregação e Composição de objetos.
Para que servem os padrões de projeto de software, no cenário de Orientação a Objetos?
O que é uma classe abstrata? Para que serve? Como implementar uma classe abstrata? Como forçar a implementação de métodos abstratos, nas classes que herdam a classe abstrata? Crie uma classe chamada Obra_de_arte, que seja abstrata e tenha o método abstrato definir_autor. Essa classe abstrata deve ser herdada pela classe criada no exercício 2 .
Descreva, em no máximo 200 palavras, o que é um computador e o que ele faz. Sublinhe os substantivos e verbos. Selecione 5 dos substantivos que você sublinhou e, para cada um, crie uma classe, liste seus atributos e comportamentos (verbos). Descreva brevemente como esses objetos interagem entre si e com outros objetos que você criou. Estes passos que você seguiu são típicos do projeto orientado a objetos.