{"id":25715092,"url":"https://github.com/fabriciosantana/poo","last_synced_at":"2025-05-05T15:53:58.164Z","repository":{"id":256874746,"uuid":"856543970","full_name":"fabriciosantana/poo","owner":"fabriciosantana","description":"Repositório da disciplina Programação Orientada a Objetos ministrada por Fabricio Santana no 3º semestre da graduação em Ciência da Computação do IDP","archived":false,"fork":false,"pushed_at":"2025-05-02T11:07:10.000Z","size":123526,"stargazers_count":5,"open_issues_count":1,"forks_count":20,"subscribers_count":1,"default_branch":"2025.1","last_synced_at":"2025-05-02T12:19:47.588Z","etag":null,"topics":["java","object-oriented-programming","openjdk"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabriciosantana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-12T18:54:31.000Z","updated_at":"2025-05-02T11:07:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"97114506-ab59-4714-a1dc-423bb1f23497","html_url":"https://github.com/fabriciosantana/poo","commit_stats":null,"previous_names":["fabriciosantana/poo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriciosantana%2Fpoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriciosantana%2Fpoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriciosantana%2Fpoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriciosantana%2Fpoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabriciosantana","download_url":"https://codeload.github.com/fabriciosantana/poo/tar.gz/refs/heads/2025.1","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252527222,"owners_count":21762654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","object-oriented-programming","openjdk"],"created_at":"2025-02-25T13:34:39.288Z","updated_at":"2025-05-05T15:53:53.898Z","avatar_url":"https://github.com/fabriciosantana.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## ☕ Programação Orientada a Objetos em Java\n\nSeja bem-vindo(a)! 🤗\n\nEste repositório reúne materiais, tarefas, projetos, leituras e referências bibliográficas da disciplina **Programação Orientada a Objetos**, oferecida no **[Instituto Brasileiro de Ensino, Desenvolvimento e Pesquisa](http://idp.edu.br)** e ministrada pelo professor **[Fabricio Santana](https://github.com/fabriciosantana/)** no **1º semestre de 2025**. 👨🏾‍🏫\n\nDurante o curso, serão abordados tópicos fundamentais, como introdução à programação, classes, objetos, herança, polimorfismo, encapsulamento e persistência, além de outros conceitos essenciais para a construção de aplicações robustas e escaláveis. 💻\n\nUtilize este material como um recurso adicional para fortalecer seus conhecimentos e aprimorar suas habilidades na linguagem Java. 🌟\n\nVamos começar! 🎉\n\n### 📚 Referências importantes\n- [Plano de ensino](https://1drv.ms/w/s!Avnn2LcOmn0Y3l_dUnQKwrevbU8h?e=0YuCb2) (oficial)\n- [Aulas](./lectures)\n- [Leituras](./readings)\n- [Atividades](./assignments)\n- [Desafios](./challenges)\n- [Projetos](./projects)\n\n### 🏁 Antes de começar\n\nPara executar os códigos de exemplo, realizar as atividades práticas e desenvolver o projeto, é essencial ter um computador e configurá-lo com as ferramentas apropriadas.\n\nA escolha do **[computador](https://en.wikipedia.org/wiki/Computer)** e do **[sistema operacional](https://en.wikipedia.org/wiki/Operating_system)** pode impactar significativamente sua experiência no desenvolvimento de softwares.\n\nPara programar em **[Java](https://en.wikipedia.org/wiki/Java_(programming_language))**, não é necessário um computador de alto desempenho, mas recomenda-se um processador moderno, com pelo menos **16 GB de RAM** e um SSD para garantir melhor desempenho na compilação e execução dos programas. \n\nQuanto ao sistema operacional, o **[Linux](https://en.wikipedia.org/wiki/Linux)** é amplamente utilizado por desenvolvedores devido à sua compatibilidade com ferramentas open-source e ambientes de desenvolvimento, mas o **[Windows](https://en.wikipedia.org/wiki/Microsoft_Windows)** e **[macOS](https://en.wikipedia.org/wiki/MacOS)** também oferecem suporte completo para Java. \n\nIndependentemente do sistema operacional escolhido, seu código poderá ser executado em qualquer outro sistema operacional que possua um ambiente Java devidamente configurado com a **[Java Virtual Machine](https://en.wikipedia.org/wiki/Java_virtual_machine)** geralmente por meio do **[Java Development Kit (JDK)](https://en.wikipedia.org/wiki/Java_Development_Kit)**. Isso ocorre porque o **[Java é uma linguagem multiplataforma](https://en.wikipedia.org/wiki/Cross-platform_software)**, permitindo que programas escritos em Java sejam executados sem modificações em diferentes sistemas operacionais. \n\nCaso esteja utilizando o Windows, uma alternativa prática para desenvolver em um ambiente Linux é o **[Windows Subsystem for Linux (WSL)](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux)**, que permite rodar distribuições Linux diretamente no Windows com desempenho quase nativo. Outra opção é utilizar um **container de desenvolvimento na nuvem**, como o **[GitHub Codespaces](https://docs.github.com/codespaces/overview)**, garantindo um ambiente isolado, portátil e fácil de configurar, sem a necessidade de instalar todas as dependências no sistema operacional principal.\n\nAlém de um computador e um sistema operacional, para desenvolvier software em Java, é necessário instalar uma distribuição do **[Java Development Kit (JDK)](https://en.wikipedia.org/wiki/Java_Development_Kit)**. Há várias distribuições do JDK disponíveis, este respositório utiliza **[OpenJDK](https://en.wikipedia.org/wiki/OpenJDK)**, versão 21.\n\nEmbora seja possível desenvolver programas em Java utilizando qualquer **[editor de texto](https://en.wikipedia.org/wiki/Text_editor)** e um **[terminal](https://en.wikipedia.org/wiki/Terminal_emulator)**, recomenda-se o uso de um **[Ambiente de Desenvolvimento Integrado (Integrated Development Environment - IDE)](https://en.wikipedia.org/wiki/Integrated_development_environment)**. As IDEs tornam o desenvolvimento mais eficiente ao oferecer funcionalidades como edição avançada de código, compilação, testes, depuração, geração de pactoes e uma interface gráfica intuitiva.\n\nExistem diversas IDEs para programação em Java no mercado, todas compatíveis com o código deste repositório. No entanto, recomenda-se a utilização do **[Visual Studio Code (VS Code)](https://code.visualstudio.com/)** devido à sua simplicidade, flexibilidade, extensibilidade e possibilidade de execução online, sem necessidade de instalação. Além disso, o VS Code oferece integração nativa com o **[GitHub Codespaces](https://github.com/features/codespaces)**, tornando o ambiente de desenvolvimento ainda mais acessível e eficiente.\n\nDesenvolver software é um processo contínuo que exige colaboração e organização, frequentemente envolvendo vários desenvolvedores ao longo do tempo. Para gerenciar versões do código, facilitar o trabalho em equipe e manter um histórico estruturado das alterações, este repositório adota o **[Git](https://git-scm.com/)**, um sistema de controle de versão distribuído amplamente utilizado. O Git permite acompanhar mudanças no código, trabalhar em diferentes ramificações e sincronizar o projeto com repositórios remotos, como o **[GitHub](https://github.com/)**.\n\nEm síntese, para aproveitar todo o conteúdo e praticar muito você precisa de no mínimo:\n* Um computador com o sistema operacional de sua escolha, recomenda-se utilizar Linux (Ubuntu), Windows com WSL ou o Github Codespaces\n* Instalar uma das distrições do Java Development Kit (JDK), recomenda-se o OpenJDK 21\n* Instalar uma IDE, recomenda-se o VS Code com os plugins para Java e Git\n\nFinalizada as devidas introduções, vamos seguir para a instalação das ferramentas com os passos abaixo:\n* Instalação do OpenJDK 21 no Linux via apt\n    * (opcional) Instalação manual do OpenJDK 21 no Linux\n    * (opcional) Instalação do OpenJDK 21 no Linux via SDKMAN!\n* Instalação do VS Code no Linux via apt\n    * (opcional) Instalação manual do VS Code no Linux\n* Instalação do Git\n* Instalação do Github Cli\n* Instalação dos seguintes plugins no VS Code\n    * Java Platform Extension for Visual Code\n    * Extension Pack for Java\n    * Git\n    * GitHub\n\nSe tudo isso é muito novo para você, invista um tempo em fortalecer sua base de conhecimento com os seguintes recursos:\n* [Introduction to Linux](https://training.linuxfoundation.org/training/introduction-to-linux/)\n* [Getting started with Visual Studio Code](https://code.visualstudio.com/docs/introvideos/basics)\n* [Intro to GitHub](https://education.github.com/experiences/intro_to_github)\n* [GitHub Foundations (Microsoft)](https://education.github.com/experiences/intro_to_github)\n\n### 🛠️ Configuração do ambiente\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003e🐧 Instalação do OpenJDK 21 no Linux via apt\u003c/h4\u003e\u003c/summary\u003e\n\nExecutar os seguintes comandos no terminal para instalar o OpenJDK 21 no Linux:\n\n1. **Atualizar pacotes**\n\n```bash\nsudo apt update \u0026\u0026 sudo apt upgrade -y\n```\n\n2. **Instalar o OpenJDK 21**\n\n```bash\nsudo apt install -y openjdk-21-jdk\n```\n\n3. **Configurar variáveis de ambiente**\n\n```bash\necho 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64' \u003e\u003e ~/.bashrc\necho 'export PATH=$JAVA_HOME/bin:$PATH' \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\n4. **Verificar a instalação**\n\n```bash\njava -version\n```\n5. **Confirmar a instalação**\n\n```bash\nopenjdk version \"21.0.2\" 2024-01-16\nOpenJDK Runtime Environment (build 21.0.2+13-58)\nOpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)\n```\n\n5. **Configuarar o OpenJDK 21 como padrão**\n\nEsse passo é necessário apenas caso tenha várias versões do Java instaladas\n\n```bash\nsudo update-alternatives --config java\n```\n\n```bash\nsudo update-alternatives --config javac\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003e🐧 Instalação manual do OpenJDK 21 no Linux\u003c/h4\u003e\u003c/summary\u003e\n\nExecutar os seguintes comandos no terminal para instalar o OpenJDK 21 no Linux:\n\n1. **Baixar o OpenJDK**\n\nBaixar executando o comando abaixo no terminal ou fazer download da versão 21 em https://jdk.java.net/archive/\n\n```bash\nwget https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz\n```\n\n2. **Extrair o arquivo baixado e mova para o diretório /opt/**\n\n```bash\ntar -xvzf openjdk-21.0.2_linux-x64_bin.tar.gz\nsudo mv jdk-21.0.2 /opt/\n```\n\n3. **Configurar variáveis de ambiente**\n\n```bash\necho 'export JAVA_HOME=/opt/jdk-21.0.2' \u003e\u003e ~/.bashrc\necho 'export PATH=$JAVA_HOME/bin:$PATH' \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\n4. **Verificar a instalação**\n\n```bash\njava -version\n```\n\n5. **Confirmar a instalação**\n\n```bash\nopenjdk version \"21.0.2\" 2024-01-16\nOpenJDK Runtime Environment (build 21.0.2+13-58)\nOpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)\n```\n\n6. **Configuarar o OpenJDK 21 como padrão**\n\nEsse passo é necessário apenas caso tenha várias versões do Java instaladas\n\n```bash\nsudo update-alternatives --config java\n```\n\n```bash\nsudo update-alternatives --config javac\n```\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003e🐧 Instalação do OpenJDK 21 via SDKMAN\u003c/h4\u003e\u003c/summary\u003e\n\nO [SDKMAN!](https://sdkman.io/) é uma ferramenta que facilita a instalação e o gerenciamento de múltiplas versões do JDK no Linux e macOS. Com ele, você pode instalar, atualizar e alternar entre diferentes versões do Java facilmente.\n\n1. **Instalar o SDKMAN!**\n\n```bash\ncurl -s \"https://get.sdkman.io\" | bash\n```\n\n2. **Ativar o SDKMAN!**\n\n```bash\nsource \"$HOME/.sdkman/bin/sdkman-init.sh\"\n```\n\n3. **Verificar instalação**\n\n```bash\nsdk version\n```\n\n4. **Confirmar instalação**\n\n```bash\nSDKMAN 5.19.0\n```\n\n5. **Instalar o OpenJDK 21**\n\n```bash\nsdk install java 21.0.2-open\n```\n\n6. **Verificar a instalação do OpenJDK 21**\n\n```bash\njava -version\n```\n\n7. **Confirmar a instalação do OpenJDK 21**\n\n```bash\nopenjdk version \"21.0.2\" 2024-01-16\nOpenJDK Runtime Environment (build 21.0.2+13-58)\nOpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)\n```\n\nComando úteis do SDKMAN!\n\n```bash\nsdk update\n\nsdk list java\n\nsdk current java\n```\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ch4\u003e📦 Instalar o VS Code via apt\u003c/h4\u003e\u003c/summary\u003e\n\n1. **Atualizar pacotes**\n\n```bash\nsudo apt update \u0026\u0026 sudo apt upgrade -y\n```\n\n2. **Baixar o VS Code e adicionar a chave do GPG da Microsoft**\n\n```bash\nwget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/packages.microsoft.gpg \u003e /dev/null\n```\n\n3. **Adicionar o repositório do VS Code\n\n```bash\necho \"deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main\" | sudo tee /etc/apt/sources.list.d/vscode.list\n```\n\n4. **Instalar o VS Code**\n\n```bash\nsudo apt update\nsudo apt install -y code\n```\n\n5. **Verificar instalação**\n\n```bash\ncode --version\n```\n\n6. **Confirmar instalação**\n\n```bash\n1.96.4\ncd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba\nx64\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003e🖥️ Instalação manual do VS Code no Linux\u003c/h4\u003e\u003c/summary\u003e\n\n1. **Baixar o pacote .deb**\n\nO pacote está disponível no link https://code.visualstudio.com/download\n\n2. **Instalar o pacote**\n\n```bash\nsudo dpkg -i code_*.deb\n```\n\n3. **Verificar instalação**\n\n```bash\ncode --version\n```\n\n4. **Confirmar instalação**\n\n```bash\n1.96.4\ncd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba\nx64\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ch4\u003e🐙 Instalação do Git\u003c/h4\u003e\u003c/summary\u003e\n\n1. Instalar o Git\n```bash\nsudo apt install git -y\n```\n\n2. Verificar instalação do git\n```bash\ngit --version\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ch4\u003e🔧 Instalação do Github Cli\u003c/h4\u003e\u003c/summary\u003e\n\n1. Instalar o Github Cli\n```bash\nsudo apt install gh\n```\n\n2. Verificar instalação do Github Cli\n```bash\ngh --version\n```\n\n3. Logar no Github\n```bash\ngh auth login\n```\n\n\u003c/details\u003e\n\n\n\u003e 🎉 **Parabéns!** Você concluiu a configuração do ambiente com sucesso! Agora está pronto para começar a programar. 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabriciosantana%2Fpoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabriciosantana%2Fpoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabriciosantana%2Fpoo/lists"}