.
Apresentar os conceitos de Orientação por Objetos, dando ênfase aos aspectos teóricos e apresentando os conceitos no contexto de uma linguagem de programação.
.
Formalizar conceitos para posterior prática nos demais cursos da Eteg e no dia-a-dia.
.
Criar um conhecimento crítico e analítico a respeito dos benefícios, boas práticas e padrões de projetos que de alguma forma estão relacionados ao uso da orientação por objetos.
Diferenciais:
.
A ementa foi feita por desenvolvedores e cobre os pontos que eles julgam mais importantes ou que já tiveram dificuldade.
.
O material ainda conta com um CD com os softwares gratuitos usados no curso, bem como a solução dos laboratórios, para que o aluno possa praticar fora da sala de aula.
.
Material totalmente em português.
.
O curso, mesmo utilizando exemplos na linguagem Java, é independente de linguagem de programação, portanto os conceitos são facilmente aplicados à maioria das linguagens OO.
Público-alvo:
.
Profissionais que desejam aprender e utilizar os conceitos da orientação por objetos.
.
Profissionais que desenvolvam utilizando linguagens de programação OO como Java, C#, VB.Net, Python, Object Pascal, Groovy, etc.
Pré-requisitos:
.
Conhecimento básico de programação.
Profissional Responsável:
Walter dos Santos Filho, Bacharel em Computação (UFMG), Sun Certified Programmer for Java 2 1.4 e Sun Certified Web Component Developer for J2EE 1.4.
Ementa:
01 - Introdução
Qualidade de Software
Decomposição de Sistemas
Programação Estruturada
Programação Orientada por Objetos
Benefícios da OO
Dificuldades da OO
Atividades da Orientação por Objetos
Elementos Fundamentais da OO
Tipos de Dados
Classes
Objetos
Unified Modeling Language
Diagrama de Classes UML
02 - Classes e Objetos
Classes (Relembrando)
Perspectivas para Diagramas de Classes
Identificando Classes
Objetos (Relembrando)
Atributos ou Propriedades e Campos
Métodos e Operações
Passagem de Parâmetros
Referências Implícitas
Membros Estáticos (de Classe)
Tempo de Vida de um Objeto
Construtores
Finalizadores
Padrão de Projeto Singleton
Regras de Escopo
03 - Herança, Interfaces e Hierarquia de Classes
Herança
Definindo Herança
Entendendo o Uso de Referências
Entendendo o Comportamento da Classe Derivada
Herança Simples e Múltipla
Visões de uma Classe
Classes Abstratas
Definindo Classes Abstratas
Padrão de Projeto Template
Interfaces
Definindo Interfaces
Implementando Interfaces
Herança de Interfaces
Colisão de nomes
Classes Abstratas X Interfaces
Padrão de Projeto Factory Method
Hierarquia de Classes
Identificando Classes e Subclasses
Fechamento de Classes e Membros
04 - Polimorfismo
Fundamentos
Polimorfismo
Tipos de Polimorfismo
Polimorfismo Ad-hoc de Coerção
Polimorfismo Ad-hoc de Sobrecarga
Polimorfismo Universal Paramétrico
Polimorfismo Universal de Inclusão
Método Virtual
O Problema da Classe Base Frágil Revisto
Polimorfismo Universal de Inclusão
05 -Associações
Associação
Direção e Multiplicidade de Associações
Identificando Associações
Associações na Implementação
Agregação e Composição
Identificando Agregações e Composições
Classes Internas e Aninhadas
Composição X Generalização
Padrão de Projeto Composite
Padrão de Projeto Strategy
Realização
Dependência
Associações Reflexivas
06 - Abstração, Modularidade, Encapsulamento e Ocultamento de Informação
Abstração
Modularidade
Acoplamento
Coesão
Organização em Pacotes
Organização em Camadas (Layers)
O Modelo de 4 Camadas
Dependência de Pacotes
Encapsulamento
Ocultamento de Informação
Encapsulamento e Ocultamento de Informação
Classes da Análise
Classes de Desenho
07 - Tipagem, Exceções e Persistência
Tipos Revistos
A Escolha de Tipos
Exceções
Tratamento de Exceções
Persistência
Características da Persistência
Persistência em Arquivos
Persistência em Banco de Dados
Mapeando um Modelo de Domínio para um Banco Relacional
Usando a UML para Projetos de Banco de Dados
Mapeamento de Classes
Identidade
Mapeamento de Associações
Composição
Herança
Herança com Tabela Única por Hierarquia
Herança com Várias Tabelas
08 -UML e Artefatos de Modelagem
A UML
Abordagens da UML
Os Diagramas da UML
Diagramas de Classes – Revisão
Estereótipos na UML
Diagramas de Seqüência
Os Padrões GRASP
Aplicando os Padrões GRASP
Especialista na Informação (Information Expert)
Criador (Creator)
Baixo Acoplamento (Low Coupling)
Alta Coesão (High Coesion)
Controlador (Controller)
Cartões CRC
09 - Tópicos Extras
Boas Práticas de OO
Refatoração (Refactoring)
Fazendo Refatoração
Refatoração: Extract Method
Refatoração: Pull Up
Refatoração: Extract Interface
Refatoração: Encapsulate Field
Outras Práticas de Refatoração
Padrões de Projeto
Exemplos de Padrões: Adapter
Exemplos de Padrões: Proxy
Exemplos de Padrões: Observer
Exemplos de Padrões: Decorator
Exemplos de Padrões: Façade
Estudo de Caso: Desenvolvimento de Agenda
Obs. Havendo tempo suficiente, outros padrões de projeto poderão ser apresentados. O tempo extra poderá ser negociado com a Eteg.