Contextualização e Introdução
Introdução
Em um mundo dominado por tecnologia e progamação, entender conceitos básicos de programação é essencial para navegar e contribuir efetivamente para esta sociedade digital. Nesta jornada de aprendizado, um dos tópicos mais importantes que encontramos é a Orientação a Objetos(OO). A OO nos permite estruturar nossos programas de forma intuitiva e eficiente, descrevendo objetos do mundo real em termos de suas propriedades(atributos) e comportamentos(métodos).
Python é uma linguagem orientada a objetos em sua essência. A ideia central da OO em Python gira em torno da criação de código reutilizável, organizá-lo de forma intuitiva e simplificar os processos de design e manutenção. Nas próximas seções, vamos mergulhar nos conceitos fundamentais da OO: Classes, Objetos, Herança e Polimorfismo.
Contextualização
No mundo real, tudo ao nosso redor pode ser considerado um objeto. Cada objeto tem características ou atributos e exibe algum comportamento. Por exemplo, uma bicicleta tem atributos como cor, marca, tipo e exibe comportamentos como frear, acelerar. Da mesma forma, a Orientação a Objetos é um paradigma de programação que permite que modelemos e organizemos nosso software de maneira semelhante à maneira como observamos e interagimos com o mundo real.
A Orientação a Objetos é fundamental em muitas áreas de desenvolvimento de software, desde a criação de interfaces de usuário, ao design de jogos, até o desenvolvimento de aplicações web complexas. É uma habilidade essencial para qualquer aspirante a programador e uma ferramenta indispensável para a maioria dos desenvolvedores de software profissionais.
Materiais Extras para um Aprofundamento
Para complementar o conhecimento, aqui estão alguns materiais recomendados:
- Livro: "Python 3 OOP: Análise, Design e Implementação Orientados a Objetos"- Dusty Phillips. [Disponível na Amazon]
- Curso Online: "Curso programação orientada a objetos com Python" [Disponível em Udemy]
- Artigo: "Orientação a Objetos em Python: um guia prático" [Disponível em DelftStack]
São recursos altamente informativos que fornecem uma visão detalhada e direta de OO. Eles são ótimos pontos de partida para um aprofundamento na Orientação a Objetos Python.
Atividade Prática
Criando um sistema de biblioteca orientado a objetos em Python
Objetivo do projeto
O objetivo deste projeto é fazer com que os alunos apliquem os conceitos de Orientação a Objetos que foram aprendidos em sala de aula. Portanto, os alunos devem criar um sistema de biblioteca simples utilizando Classes, Objetos, Herança e Polimorfismo. Esse sistema contará com detalhes sobre livros presentes na biblioteca, relatórios de livros emprestados e a possibilidade de emprestar ou devolver um livro.
Materiais necessários
- Python instalado no computador.
- IDE de sua preferência para escrever e testar o código (recomendamos o Jupyter Notebooks ou PyCharm).
Descrição detalhada do projeto
Os grupos de 3 a 5 alunos terão uma semana para criar o sistema de biblioteca. A execução do código deve levar em torno de 2 a 4 horas e deverá ser feita em Python. Eles irão projetar 3 classes básicas: Livro
, Usuario
e Biblioteca
.
A classe Livro
deve conter as seguintes propriedades: título do livro, nome do autor e status do livro (emprestado ou disponível).
A Classe Usuario
irá incluir propriedades para: nome do usuário, ID do usuário e a lista dos livros atualmente emprestados.
A classe Biblioteca
irá implementar a lógica do sistema, incluindo uma lista de todos os livros disponíveis, a lista de todos os usuários e métodos para emprestar e devolver livros.
Os alunos serão encorajados a desenvolver subclasses quando necessário e implementar polimorfismo.
Passo a passo para a realização da atividade
- Planejamento e Esboço: Antes de começar a escrever as linhas de código, os alunos devem esboçar e planejar as soluções. Eles devem discutir sobre as propriedades e os comportamentos das classes, bem como possíveis cenários que ocorrerão no sistema de biblioteca.
- Implementação da Classe
Livro
: Comece escrevendo a classe livro. Define os atributos e métodos necessários para ela. - Criação da classe
Usuario
: Implemente a classeUsuario
. Adicione os atributos e crie métodos para emprestar e devolver os livros. - Implementação da Classe
Biblioteca
: Esta é a classe mais complexa. Além da lista de usuários e livros, também deve incluir métodos para criar novos usuários, adicionar novos livros, emprestar e devolver livros. - Teste o sistema da biblioteca: Antes de finalizar o projeto, testes são essenciais. Os alunos devem criar diferentes cenários para garantir que o sistema funcione corretamente.
- Refinando o sistema: Se houver tempo extra, os alunos podem adicionar mais funcionalidades ao sistema, como multas por atraso na entrega do livro.
- Produção do relatório do projeto: Finalmente, cada grupo deverá produzir um relatório do projeto com as seções: Introdução, Desenvolvimento, Conclusões e Bibliografia utilizada.
Entregas do projeto e redação do relatório
Ao concluir a parte prática, os alunos precisarão consolidar sua experiência e compreensão em um documento escrito. Aqui estão as diretrizes para os tópicos principais que o relatório deve conter:
-
Introdução: O aluno deve contextualizar a Orientação a Objetos, sua relevância e aplicação no mundo real, além de descrever os objetivos deste projeto.
-
Desenvolvimento: O aluno precisa explicar em detalhes a criação do sistema de biblioteca, incluindo os conceitos de Classe, Objeto, Herança e Polimorfismo usados no projeto. Como é que os métodos e as classes se relacionam? Como é que a herança e o polimorfismo foram aplicados? Apresente também resultados de testes do sistema, comentando sobre o papel de cada componente.
-
Conclusão: Aqui é onde se retomam os pontos principais, os aprendizados obtidos e se fazem reflexões sobre o projeto (por exemplo, mudanças que teriam feito).
-
Bibliografia: Indique os recursos consultados para realizar o trabalho, como livros, sites, tutoriais em vídeo, etc.
Lembre-se, o objetivo deste projeto é construir um sistema de biblioteca com Python usando OO, além de desenvolver habilidades práticas em programação, resolução de problemas, trabalho em equipe e gerenciamento de projetos.