- Level Professional
- Course by Instituto Tecnológico de Aeronáutica
-
Offered by
About
Neste curso, assumimos que você já sabe desenvolver programas pequenos em Java, mas você talvez não se sinta ainda confortável em projetar programas mais complexos com método e organização. O objetivo deste curso é fazer você compreender os princípios de orientação a objetos por meio da linguagem Java e saber como eficientemente aplicar esses princípios na prática quando projetando e desenvolvendo software de maneira ágil. Os conceitos discutidos e experimentados por você neste curso serão a base para você poder compreender os novos conceitos apresentados nos cursos seguintes desta especialização. Os conceitos Java apresentados neste curso incluem o seguinte: revisão de conceitos básicos de orientação a objetos, tais como classes, objetos, métodos e atributos, variáveis de instância e de classe; responsabilidades, colaborações e cartões CRC; testes de unidade, uso de plataforma IDE como o Eclipse; herança, classes concretas e abstratas, interfaces, modificadores de acesso, encapsulamento, métodos de acesso; aprofundamento nos conceitos de polimorfismo, sobrecarga e sobreposição; associação de classes, agregação e composição; exceções, delegação e acoplamento abstrato. Em seguida, vocês serão apresentados aos principais princípios usados para organizar o desenvolvimento de programas orientados a objetos com qualidade, dentre os quais, os princípios "Tell, Don't Ask!" e "Law of Demeter". Sempre que conveniente, cada conceito será representado por meio de diagramas UML. Você será exposto a propriedades e anotações em Java. Ao final deste curso, você terá amadurecido de tal modo suas habilidades de programação que você será capaz de implementar versões iniciais do componente de gamificação constante do Trabalho de Conclusão da Especialização, com base nas boas práticas exercitadas neste curso.Modules
Introdução e Visão Geral do Curso
1
Assignment
- Como está o seu conhecimento sobre o assunto deste curso?
1
Videos
- Vídeo de boas-vindas
5
Readings
- Sobre o Curso
- Formato dos Exercícios de Programação
- Acompanhando as Aulas de Hands-On
- Ferramentas de Comunicação
- Disciplina Consciente e Plágio nos Exercícios
Conhecendo as Classes
2
Assignment
- Sobre os conceitos de classe e objeto
- O que você aprendeu sobre classes e objetos?
2
Videos
- Identificando Classes e Objetos
- Comportamento e Estado das Classes
Conhecendo as Classes com Java
4
Videos
- Criando Classes com Java
- Hands-on: Classes e Objetos
- Construtores de Classes
- Hands-on: Construtores Diferentes para Mesma Classe
CRC: Classe, Responsabilidade e Colaboração
2
Assignment
- Sobre CRC
- Mais sobre CRC
4
Videos
- Identificando Responsabilidades
- Identificando a Lógica das Responsabilidades
- Identificando Colaborações
- Cartão CRC
Avaliação pelos pares
1
Peer Review
- Classe para Cálculo do IMC
1
Readings
- ATENÇÃO - Cuidados na revisão dos trabalhos de colegas
Material Complementar
1
Videos
- Hands-on: Compilando e Executando Programas em Java
Lesson1: Aprofundando nas Classes com Java
1
Assignment
- Você sabe utilizar classes?
6
Videos
- Relacionamento entre Classes
- Hands-on: Colaborações entre Classes
- Métodos e Atributos Estáticos
- Hands-on: Comparando Tipos de Atributos – Estático X Instância
- Pensando em Métodos Orientados a Objetos
- Hands-on: Refatorando – de Funções para Métodos
Lesson 2: Modelagem CRC
1
Assignment
- Mais sobre Modelagem CRC
2
Videos
- Modelagem CRC: Identificando Classes
- Modelagem CRC: Identificando Responsabilidades e Colaborações
Avaliação por pares
1
Peer Review
- Qual o preço da pizza?
1
Readings
- ATENÇÃO – Cuidados na revisão dos trabalhos de colegas
Material Complementar
4
Videos
- Hands-on:Modelagem CRC– Identificando Classes
- Hands-on: Modelagem CRC: Identificando Responsabilidades e Colaborações-
- Hands-on: Modelagem CRC: Apresentando a Lógica das Responsabilidades
- Hands-on: Modelagem CRC: Refinando as Responsabilidades e Classes
Testes de Unidade
1
Assignment
- O que você aprendeu sobre testes?
5
Videos
- Importância de Testes
- Testes Automatizados com JUnit
- Hands-on:Testando com JUnit na Prática
- Antes e Depois de um Teste
- Hands-on: Métodos Before e After no JUnit
Diagramas UML
1
Assignment
- Mais sobre diagrama de classes
3
Videos
- Preciso de Diagramas?
- Diagrama de Classes UML: Classe, Associação e Multiplicidade
- Diagrama de Classes UML: Navegabilidade, Agregação, Composição e Herança
Colaboração, Dependência e Contrato de Classes
1
Assignment
- Mais sobre dependência e contrato de classes
3
Videos
- Colaboração, Dependência e Classes Cliente e Servidora
- Caracterizando Responsabilidade Pública
- Caracterizando Responsabilidade Privada e Contrato de Classe
Avaliação pelos pares
1
Peer Review
- Testes da Classe Pizza e CarrinhoDeCompras
1
Readings
- ATENÇÃO – Cuidados na revisão dos trabalhos de colegas
Material Complementar
1
Peer Review
- Testes do Cálculo do IMC
Conhecendo a Herança
1
Assignment
- Como funciona a herança?
4
Videos
- Trabalhando com Níveis de Abstração
- Utilizando Herança
- Herança: Especialização e Generalização
- Hands-on- Entendendo a Herança
Acesso aos Objetos
1
Assignment
- Entendendo modificadores de acesso
2
Videos
- Modificadores de Acesso
- Hands-on: Modificadores de Acesso na Prática
Aprofundando na Herança
1
Assignment
- Sabe mesmo sobre herança?
7
Videos
- Sobreposição de Métodos
- Classes Abstratas
- Cadeia de Construtores
- Hands-on: Cadeia de Construtores na Prática
- Hands-on: Herança na Classe Carro – Parte 1
- Hands-on: Herança na Classe Carro – Parte 2
- Hands-on: Herança na Classe Carro – Parte 3
Avaliação pelos pares
1
Peer Review
- Diferentes tipos de produto
1
Readings
- ATENÇÃO – Cuidados na revisão dos trabalhos de colegas
Material Complementar
1
Peer Review
- Compra Parcelada com Juros
Encapsulamento
4
Videos
- Importância do Encapsulamento
- Métodos de Acesso
- Hands-on: Exemplo de Violação Encapsulamento
- Encapsulamento de Objetos e Arrays
Acoplamento entre Classes
1
Assignment
- Sobre acoplamento entre classes
2
Videos
- Caracterizando Acoplamento e Duas Situações de Acoplamento Alto
- Aplicando Princípio "Tell, Don't Ask!" para Obter Acoplamento Baixo
Interfaces em Java
1
Assignment
- Interfaces e Encapsulamento
4
Videos
- Interfaces na Orientação a Objetos
- Interfaces em Java
- Exemplo de Interface
- Hands-on: Usando a Interface Comparable
Avaliação pelos pares
1
Peer Review
- Formas de Tratamento
Material Complementar
1
Peer Review
- Métodos de Acesso para Data
1
Videos
- Hands-on: Problema no Encapsulamento de Arrays
Sobre Polimorfismo
2
Videos
- Entendendo Polimorfismo
- Hands-on: Interfaces e Polimorfismo
Law of Demeter
1
Assignment
- Sobre acoplamento complexo
2
Videos
- Identificando Dependências mais Complexas
- Aplicando o Princípio "Law of Demeter"
Exceções em Java
1
Assignment
- O que você aprendeu sobre exceções?
7
Videos
- Tratamento de Erros
- Exceções em Java
- Hands-on: Exceções na Prática
- Stack Trace de Exceção
- Tratando Exceções
- Testando Exceções
- Hands-on: Criando e Testando uma Classe que Joga Exceções
Exercício Final do Curso
1
Peer Review
- Jogo das Palavras Embaralhadas
1
Videos
- Apresentação do Exercício Final
1
Readings
- ATENÇÃO – Cuidados na revisão dos trabalhos de colegas
Material Complementar
1
Peer Review
- Exceções para Ler um Arquivo
Auto Summary
"Orientação a Objetos com Java" é um curso especializado em TI e Ciência da Computação, oferecido pela Coursera. Ideal para quem já tem noções básicas de Java, o curso aprofunda princípios de orientação a objetos e boas práticas de desenvolvimento ágil. Com conteúdo abrangente, inclui conceitos como classes, herança, polimorfismo, e padrões de design. Disponível em planos Starter e Professional, é direcionado a profissionais que buscam aprimorar suas habilidades de programação e organização de software.

Clovis Fernandes

Eduardo Guerra