
Código: INF1922 | Turma: MINF-0103
Carga horária: 72h (4 créditos)
Horário e local: Terças e Sextas às 09:20 – 11:00 | Bloco D – Sala/Laboratório 402 - UNICAP
Esta disciplina aprofunda a Programação Orientada a Objetos (POO) com Java. Os estudantes aprenderão como a POO transforma o projeto e o desenvolvimento de software, permitindo modelar sistemas complexos de forma intuitiva, modular e escalável. O foco é criar soluções robustas e reutilizáveis, preparando desenvolvedores para os desafios da engenharia de software contemporânea.
Fundamentos de Java e Introdução à POO
Classes, Objetos e o Princípio do Encapsulamento
Herança e Polimorfismo: Reutilização e Flexibilidade
Abstração e o Uso de Interfaces
Tratamento de Exceções e Coleções
Padrões de Projeto e Concorrência em Java

Seja bem-vindo à Programação Orientada a Objetos com Java! Aqui você aprenderá a pensar em objetos, modelar domínios complexos e construir sistemas robustos e reutilizáveis.
Cada módulo constrói sobre o anterior, do básico de Java até os padrões de projeto.
O foco é compreender a lógica da POO e tomar decisões de design fundamentadas.
Você desenvolverá um sistema orientado a objetos completo aplicando todos os conceitos aprendidos.
Sairá com competências em modelagem POO, padrões de projeto e boas práticas de desenvolvimento.
Conheça as competências que você desenvolverá ao longo da disciplina.
Capacitar o estudante a projetar, implementar e documentar sistemas orientados a objetos em Java, aplicando os quatro pilares da POO, padrões de projeto e boas práticas de engenharia de software. O foco central é o desenvolvimento de um projeto integrador completo, do design à defesa técnica.
A disciplina está organizada em quatro macro-módulos progressivos, do conceitual ao prático.
Fundamentos de Java e POO
Pilares da POO
Desenvolvimento de Aplicações Java
Integração dos conceitos e desenvolvimento orientado do Projeto Integrador
Nossa abordagem combina teoria e prática por meio de metodologias ativas para o desenvolvimento progressivo de competências.
Conheça as ferramentas que utilizaremos e as referências bibliográficas recomendadas.
Bases da linguagem Java e introdução ao paradigma orientado a objetos.
Os mecanismos centrais da POO para modelagem e reutilização de software.
Estruturação de aplicações com interfaces, exceções, coleções, I/O e padrões de projeto.
Integração dos conceitos no desenvolvimento e apresentação de um sistema completo.
(sem listas específicas neste módulo — foco no Projeto Integrador)
Entenda como sua nota será calculada e os requisitos para aprovação na disciplina.
Foco: Fundamentos de Java, Classes, Objetos, Encapsulamento, Herança e Polimorfismo.
Foco da Prova: Padrões de Projeto e Integração dos Conceitos (Aulas 17–20). As Aulas 10–16 (Classes Abstratas, Interfaces, Exceções, Coleções, Arquivos e Threads) são avaliadas pela Avaliação Formativa III e pelo Projeto Integrador.
Acompanhe o planejamento completo das aulas, incluindo datas de avaliações e feriados.
Carga horária: 72h | Terças e Sextas | 09:20–11:00 | Bloco D – Lab 402
Desenvolvimento de um Sistema Orientado a Objetos
Desenvolver um sistema orientado a objetos completo em Java, partindo da modelagem conceitual até a implementação com padrões de projeto e defesa técnica, aplicando os conhecimentos construídos ao longo da disciplina.
Cada etapa do Projeto Integrador corresponde aos conteúdos desenvolvidos até aquele momento da disciplina, permitindo a construção incremental de um sistema completo.
Entrega: 11/09/2026 (Enc. 11 – Lançamento do Projeto Integrador)
Entregáveis:
Valor: 0,5 ponto
Entrega: 29/09/2026 (Enc. 16 – Revisão 1º GQ)
Entregáveis:
Valor: 1,0 ponto
Entrega: 02/10/2026 (Enc. 17 – 1º GQ)
Entregáveis:
Valor: 1,5 pontos
Entrega: 10/11/2026 (Enc. 28 – Oficina de Desenvolvimento do Projeto Integrador I)
Entregáveis:
Valor: 2,0 pontos
Entrega: 17/11/2026 (Enc. 30 – Oficina de Desenvolvimento do Projeto Integrador III)
Entregáveis:
Valor: 1,5 pontos
Defesa: 24/11/2026 (Enc. 32 – Apresentação dos Projetos – Defesa Técnica)
Entregáveis:
Valor: 1,5 pontos
Orientações para organização e registro dos grupos
Sugere-se que o grupo tenha perfis complementares:
Os papéis são apenas uma recomendação e podem ser acumulados por um mesmo integrante, especialmente em grupos de 2 ou 3 pessoas.
⚠️ Não é obrigatório, mas melhora desempenho.
Até 11/09/2026, cada grupo deve enviar:
Sem registro formal → grupo não validado.
Verifique todos os requisitos antes de cada entrega
Acompanhe visualmente a evolução do seu projeto
Formação dos grupos, registro do projeto e entrega da Proposta e Escopo.
Diagrama de classes UML completo com herança, interfaces e justificativa das decisões.
Prova escrita (Aulas 01–09) e avaliação da implementação parcial das classes principais.
Prova de segunda chamada para estudantes que não realizaram o 1º GQ na data regular (Aulas 01–09).
Exceções, coleções (List, Map, Set), I/O e testes básicos implementados.
Ao menos 2 padrões GoF aplicados, documentados e com código refatorado.
Apresentação oral, demonstração do sistema funcionando e código completo no GitHub.
Prova escrita sobre Aulas 17–20 (Padrões de Projeto e integração dos conteúdos).
Prova de segunda chamada para estudantes que não realizaram o 2º GQ na data regular.
Regras, prazos e conduta acadêmica
Entregas devem ocorrer até 23h59 do dia estipulado na plataforma institucional, com código versionado no GitHub e identificado com o nome do grupo. O horário considerado será o registrado pelo Microsoft Teams.
Materiais adicionais para aprofundar seu aprendizado
Orientação estratégica para maximizar seu aprendizado
Se você entende por que encapsular, getters e setters fazem sentido naturalmente.
Antes de criar uma classe, pergunte: ela faz uma coisa só?
Treine hierarquias semânticas, @Override e referências do tipo pai — pontos clássicos de avaliação.
Código funcionando não basta: saiba explicar cada decisão de modelagem e padrão aplicado.
O diferencial está em aplicar padrões GoF com justificativa, saber escolher entre interface e classe abstrata, e escrever código limpo e testável.
Aprenda com os erros mais frequentes e evite-os
Classe é o molde; objeto é a instância — são conceitos distintos e não devem ser confundidos.
Se algo tem comportamento próprio e relacionamentos, provavelmente é uma classe, não um atributo simples.
Use herança apenas para relações reais de "é um" — prefira composição quando a relação for "tem um".
Atributos públicos violam o princípio — use sempre private com getters/setters e validação.
Divida métodos longos em partes menores e focadas para facilitar testes e manutenção.
Use um padrão apenas quando ele resolve um problema real — saiba sempre explicar a escolha.
Trate exceções específicas com mensagens úteis e nunca deixe um catch vazio.
Faça commits descritivos a cada etapa concluída para proteger seu trabalho e facilitar a defesa técnica.
O projeto é incremental — atrasos se acumulam e comprometem a qualidade da defesa.
Critérios de excelência que elevam seu projeto
Um modelo simples, bem justificado e com responsabilidades claras vale mais que um diagrama complexo sem propósito.
Explique por que aquela hierarquia existe — a justificativa demonstra maturidade técnica.
Use nomes claros e descritivos, evitando abreviações confusas ou nomes genéricos como "Classe1".
Métodos curtos, nomes descritivos e Javadoc mostram que você domina boas práticas, não apenas que o código funciona.
Mostre que cada escolha — interface, padrão, hierarquia — foi consciente e fundamentada, não acidental.
Mostre que você identificou um problema real e escolheu o padrão certo para resolvê-lo.
O código deve ter sido refatorado com os padrões, não apenas adicionado por cima.
Um README claro com instruções de execução e padrões aplicados demonstra profissionalismo.
Responda com confiança e admita quando não souber — honestidade técnica é valorizada.
Tenha respostas prontas para cada escolha de design: padrão utilizado, herança aplicada, interfaces criadas.
Mostre o sistema rodando e execute funcionalidades ao vivo para impressionar e validar seu trabalho.
Programação Orientada a Objetos