Programação Orientada a Objetos
Abstraindo o Mundo Real com Código
Código: MINF-0301 | Carga horária: 60h (4 créditos)
Horário e local: Terças e Sextas, 11:10 – 12:50, Bloco D – UNICAP
Esta disciplina aprofunda os conceitos de programação, introduzindo o paradigma da Programação Orientada a Objetos (POO) com foco em Java. Os alunos aprenderão a modelar sistemas complexos de forma modular e reutilizável, essencial para o desenvolvimento de software robusto.
Tópicos Principais:
Introdução a Java e POO
Classes, Objetos e Encapsulamento
Herança e Polimorfismo
Abstração e Interfaces
Tratamento de Exceções e Coleções
Padrões de Projeto e Concorrência
Bibliografia Recomendada: Aprofunde Seus Conhecimentos em POO e Java
Para quem deseja aprofundar seus conhecimentos em Programação Orientada a Objetos e na linguagem Java, selecionamos alguns títulos essenciais, desde clássicos atemporais até guias práticos, com uma breve descrição e indicação de nível de dificuldade.
Effective Java
Por Joshua Bloch
Essencial para desenvolvedores Java experientes, este livro oferece conselhos práticos e melhores práticas para escrever código robusto, eficiente e elegante.
Nível de Dificuldade: Avançado
Clean Code: A Handbook of Agile Software Craftsmanship
Por Robert C. Martin
Foca na importância de escrever código limpo e legível. Apresenta princípios e padrões para melhorar a qualidade do código-fonte, aplicáveis a qualquer linguagem orientada a objetos.
Nível de Dificuldade: Intermediário
Head First Design Patterns
Por Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra
Uma abordagem divertida e visual para entender os padrões de design mais comuns em programação orientada a objetos, facilitando a aprendizagem através de exemplos e ilustrações.
Nível de Dificuldade: Intermediário
Java: A Beginner's Guide
Por Herbert Schildt
Um ponto de partida abrangente para iniciantes em Java, cobrindo os fundamentos da linguagem, sintaxe, e conceitos básicos de POO de forma clara e acessível.
Nível de Dificuldade: Iniciante
Design Patterns: Elements of Reusable Object-Oriented Software
Por Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Gang of Four)
O livro seminal sobre padrões de design, introduzindo 23 padrões essenciais que fornecem soluções reutilizáveis para problemas comuns de design de software.
Nível de Dificuldade: Avançado
Ferramentas Essenciais para Desenvolvimento Java
Para uma jornada de sucesso na programação Java, é fundamental contar com um conjunto robusto de ferramentas que otimizam o fluxo de trabalho, desde a codificação até o gerenciamento de dependências e controle de versão.
IDEs: IntelliJ IDEA
Um ambiente de desenvolvimento integrado (IDE) poderoso e inteligente, amplamente reconhecido por sua produtividade, refatoração avançada e recursos de depuração para Java.
IDEs: Eclipse
Uma IDE de código aberto e muito popular, oferecendo um ecossistema rico em plugins e ferramentas para diversos tipos de desenvolvimento Java e outras tecnologias.
IDEs: VS Code
Um editor de código leve, mas extremamente versátil, que se torna uma IDE completa para Java com a adição de extensões, ideal para quem busca flexibilidade e agilidade.
JDK (Java Development Kit)
O coração do desenvolvimento Java, o JDK inclui o compilador Java (javac), a Máquina Virtual Java (JVM) e um conjunto de APIs essenciais para construir e executar aplicações Java.
Ferramentas de Build: Maven
Uma ferramenta de gerenciamento de projetos que automatiza a construção, gerenciamento de dependências e documentação de projetos Java, baseada em um modelo declarativo.
Ferramentas de Build: Gradle
Uma ferramenta de build flexível e de alta performance, combinando o melhor do Maven e Ant, com um sistema de build baseado em Groovy ou Kotlin DSL e um mecanismo de cache eficiente.
Controle de Versão: Git
O sistema de controle de versão distribuído mais utilizado no mundo, essencial para gerenciar o histórico do código-fonte, colaborar em equipes e realizar ramificações e fusões de forma eficiente.
Outras Ferramentas Úteis
Além das ferramentas básicas, utilitários como ferramentas de teste (JUnit), debuggers e analisadores de código estático (SonarQube) são cruciais para garantir a qualidade do software.
Glossário de Termos de POO em Java
A seguir, um glossário com definições claras dos principais conceitos de Programação Orientada a Objetos (POO) essenciais para o desenvolvimento em Java:
Classe
Um modelo ou projeto para criar objetos. Define as características (atributos) e os comportamentos (métodos) que os objetos desse tipo terão.
Objeto
Uma instância concreta de uma classe. Cada objeto possui seus próprios valores para os atributos definidos pela classe.
Herança
Um mecanismo que permite que uma classe (subclasse) adquira as propriedades e comportamentos de outra classe (superclasse), promovendo a reutilização de código e a criação de hierarquias.
Polimorfismo
A capacidade de um objeto de assumir muitas formas. Permite que métodos com o mesmo nome em diferentes classes (relacionadas por herança) sejam tratados de forma genérica.
Encapsulamento
O conceito de agrupar dados (atributos) e os métodos que operam nesses dados em uma única unidade (a classe), restringindo o acesso direto a certas partes do objeto para proteger a integridade dos dados.
Abstração
O processo de ocultar os detalhes complexos de implementação e mostrar apenas as funcionalidades essenciais para o usuário. Em Java, pode ser alcançada através de classes abstratas e interfaces.
Interface
Um "contrato" que define um conjunto de métodos que uma classe deve implementar. Garante que classes diferentes possam fornecer suas próprias implementações para um conjunto comum de comportamentos.
Método
Um bloco de código dentro de uma classe que define um comportamento ou uma ação que um objeto dessa classe pode realizar.
Atributo
Uma variável declarada dentro de uma classe que representa uma característica ou estado de um objeto.
Construtor
Um tipo especial de método chamado automaticamente quando um objeto de uma classe é criado. Sua função principal é inicializar o estado (atributos) do novo objeto.