Skip to content

tirellig/poo

 
 

Repository files navigation

☕ Programação Orientada a Objetos em Java

Seja bem-vindo(a)! 🤗

Este 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 e ministrada pelo professor Fabricio Santana.

Durante 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.

Utilize este material como um recurso adicional para fortalecer seus conhecimentos e aprimorar suas habilidades na linguagem Java.

Nesta página você encontra:

Links importantes

Antes de começar

Para 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.

A escolha do computador e do sistema operacional pode impactar significativamente sua experiência no desenvolvimento de softwares.

Para programar em Java, 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.

Quanto ao sistema operacional, o Linux é amplamente utilizado por desenvolvedores devido à sua compatibilidade com ferramentas open-source e ambientes de desenvolvimento, mas o Windows e macOS também oferecem suporte completo para Java.

Independentemente 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 geralmente por meio do Java Development Kit (JDK). Isso ocorre porque o Java é uma linguagem multiplataforma, permitindo que programas escritos em Java sejam executados sem modificações em diferentes sistemas operacionais.

Caso esteja utilizando o Windows, uma alternativa prática para desenvolver em um ambiente Linux é o Windows Subsystem for Linux (WSL), 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, garantindo um ambiente isolado, portátil e fácil de configurar, sem a necessidade de instalar todas as dependências no sistema operacional principal.

Além de um computador e um sistema operacional, para desenvolver software em Java, é necessário instalar uma distribuição do Java Development Kit (JDK). Há várias distribuições do JDK disponíveis, este repositório utiliza OpenJDK, versão 21.

Embora seja possível desenvolver programas em Java utilizando qualquer editor de texto e um terminal, recomenda-se o uso de um Ambiente de Desenvolvimento Integrado (Integrated Development Environment - IDE). 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 pacotes e uma interface gráfica intuitiva.

Existem 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) 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, tornando o ambiente de desenvolvimento ainda mais acessível e eficiente.

Desenvolver 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, 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.

Em síntese, para aproveitar todo o conteúdo e praticar muito você precisa de no mínimo:

  • Um computador com o sistema operacional de sua escolha, recomenda-se utilizar Linux (Ubuntu), Windows com WSL ou o Github Codespaces
  • Instalar uma das distribuições do Java Development Kit (JDK), recomenda-se o OpenJDK 21
  • Instalar uma IDE, recomenda-se o VS Code com os plugins para Java e Git

Se tudo isso é muito novo para você, invista um tempo em fortalecer sua base de conhecimento com os seguintes recursos:

Livros de referência

  1. BUDD, Timothy. An Introduction to Object-Oriented Programming. 3. ed. Boston: Addison-Wesley, 2002. ISBN 0-201-76031-2.
  2. DEITEL, Paul; DEITEL, Harvey. Java: How to Program, Early Objects. 11. ed. Boston: Pearson, 2017. ISBN 978-0-13-474335-6.
  3. SCHILDT, Herbert. Java: The Complete Reference: Comprehensive Coverage of the Java Language. 12. ed. New York: McGraw Hill, 2021. ISBN 978-1-26-046342-2.
  4. SEGEWICK, Robert; WAYNE, Kevin. Computer Science: An Interdisciplinary Approach. Boston: Addison-Wesley, 2016. ISBN 978-0-13-407642-3.
  5. WEISFELD, Matt. The Object-Oriented Thought Process. 5. ed. Boston: Addison-Wesley, 2019. ISBN 978-0-13-476872-4.

Artigos

  1. The End of Programming as We Know It
  2. The Impact of AI on Computer Science Education
  3. English will become the most popular development language in 6 years
  4. Why Writing by Hand Is Better for Memory and Learning
  5. Prompt Engineering

Slides apresentados em sala

# Conteúdo Atividade em sala
1 Apresentação da disciplina e contextualização
2 Configuração de ambiente, visão geral do github e procedimento para submissão de tarefas Configuração do ambiente java e execução do Hello, World!
3 Plataforma Java - ferramentas, jshell, java e javac Execução de código no jshell
4 Elementos básicos da linguagem Java Execução de código no jshell

Slides apresentados em sala (em revisão)

# Conteúdo Atividade em sala
4 Programação em Java - custom types, entrada e saída, operadores e controle de fluxo Quizz: plataforma java, elementos da linguagem e tipos primitivos;
Análise de código: estruturas de seleção e estruturas de iteração
5 Continuação aula anterior Análise de código: estruturas de seleção e estruturas de iteração
6 Continuação aula anterior
7 Programação Orientada a Objetos em Java - classes, objetos e métodos
8 Programação Orientada a Objetos em Java - classes, objetos, métodos, construtores, sobrecarga de construtores e métodos, modificadores de acesso, métodos get e set, encapsulamento, introdução ao tratamento de exceção, composição, membros de classe e instância
9 Programação Orientada a Objetos em Java - herança, extends, override, super, abstract, polimorfismo, encapsulamento, package, import Análise de código do programa payroll
10 Arrays Análise de código arrays
11 ArrayList
12 Tratamento de Exceções
16 Acesso a banco de dados com JDBC
8 Continuação aula anterior Estudo de caso: IDP Bank (Semana 1)
10 Continuação aula anterior Estudo de caso: IDP Bank (Semana 2)
11 Continuação aula anterior Estudo de caso: IDP Bank (Semana 2)
12 Continuação aula anterior
14 Manipulação de arquivos em Java
15 Coleções genéricas

Além dos links na tabela acima, os slides também ficam disponíveis para download em PDF.

Use o padrão de URL: https://fabriciosantana.github.io/poo/exports/<nome-do-slide>.pdf

Exemplos:

  • https://fabriciosantana.github.io/poo/exports/01-introduction.pdf
  • https://fabriciosantana.github.io/poo/exports/02-platform.pdf

Outros Cursos

https://www.cs.cornell.edu/courses/JavaAndDS/definitions.html https://www.cs.cornell.edu/info/people/tt/Principled_Programming.html https://andrewcmyers.github.io/oodds/

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 88.0%
  • Shell 10.5%
  • Vue 1.1%
  • Other 0.4%