# Projeto 1: Sistema de Biblioteca Básico

Introdução

Neste capítulo, vamos definir o primeiro projeto que desenvolverás durante a tua aprendizagem em Programação Orientada a Objetos (POO) com Python. Esta unidade é crucial porque um bom entendimento do projeto permitirá que planeies e organizes o trabalho de uma forma eficiente e eficaz. Vamos ver não só o que será desenvolvida no projeto, mas também como deves abordar a sua realização.

O Projeto: Sistema de Gestão de Biblioteca

O primeiro projeto será a criação de um Sistema de Gestão de Biblioteca. Este projeto irá focar-se nos conceitos fundamentais de POO, tais como classes, objetos e encapsulamento.

Objetivos do Projeto

  1. Criar Classes: Vais aprender a definir classes que representem os diferentes elementos da biblioteca, como livros e utilizadores.
  2. Instanciar Objetos: Vais criar e manipular objetos a partir das classes definidas.
  3. Encapsulamento: Vais aprender a proteger a informação utilizando variáveis privadas e métodos públicos para aceder a essas variáveis.

Requisitos Funcionais

Funcionalidade 1: Gestão de Livros

A biblioteca necessita de uma forma de gerir os seus livros. Precisamos de criar uma classe Livro que contenha:

  • Título
  • Autor
  • ISBN
  • Estado (disponível ou emprestado)

No contexto do POO, esta classe terá métodos para:

  • Adicionar um novo livro
  • Alterar o estado do livro (emprestar ou devolver)

Funcionalidade 2: Gestão de Utilizadores

A biblioteca também gere os seus utilizadores. Criaremos uma classe Utilizador que terá:

  • Nome
  • ID de Utilizador
  • Listagem de Livros Emprestados

Esta classe terá métodos para:

  • Registar um novo utilizador
  • Atualizar a lista de livros emprestados

Como Abordar o Projeto

Vamos dividir o desenvolvimento deste projeto em passos. Cada passo irá focar-se numa funcionalidade específica e permitir-te compreender profundamente os conceitos que estás a aprender.

Passo 1: Definir as Classes

Começa por definir as classes Livro e Utilizador. Decide quais são os atributos de cada classe e como devem ser inicializados. Deves criar uma classe Biblioteca responsável por gerir todo o processo.

Passo 2: Implementar Métodos Básicos

Em seguida, adiciona métodos às classes para gerires os atributos. Por exemplo, criar métodos para emprestar e devolver livros assim como os getters e setters

Passo 3: Testar o Sistema

Depois de definires e implementares as funcionalidades básicas, testa o teu sistema manualmente criando instâncias dos objetos e executando os seus métodos.

Dicas úteis

  1. Planificação: Antes de começar a codificar, planeia as funcionalidades e a estrutura do teu projeto. Isto ajudará a evitar problemas no futuro.
  2. Documentação: Documenta o código, anotando o que cada método faz. Isto é útil não só para ti, mas também para outras pessoas que possam vir a ler o teu código.
  3. Testes Frequentes: Testa frequentemente o teu código para garantir que está a funcionar conforme esperado. Pequenos erros são mais fáceis de corrigir se detectados cedo.

Resumo

Neste capítulo, definimos o primeiro projeto, que será um Sistema de Gestão de Biblioteca. Abordámos os principais objetivos, requisitos funcionais e como deves planificar e começar a implementação do projeto utilizando os conceitos de POO em Python. Há ênfase em criar classes, instanciar objetos e implementar métodos para manipular os dados de forma eficaz.

Quiz

  1. Qual é a principal funcionalidade da classe Livro no Sistema de Gestão de Biblioteca?

    • a) Guardar informações sobre autores
    • b) Gerir o estado dos livros (disponível ou emprestado)
    • c) Registar os utilizadores
    • d) Mostrar todos os livros da biblioteca
  2. Quais são os atributos principais da classe Utilizador?

    • a) Nome e Título
    • b) Nome e ID de Utilizador
    • c) Autor e ISBN
    • d) Nome e Listagem de Livros Emprestados
  3. Qual é um exemplo de encapsulamento no projeto definido?

    • a) Utilizar métodos públicos para aceder a variáveis privadas
    • b) Definir apenas atributos públicos nas classes
    • c) Usar classes internas
    • d) Proteger os métodos das classes com senhas
<< Encapsulamento, Herança e... Índice