
Nesta primeira aula apresento o que iremos abordar no curso.
Nesta aula apresentaremos o tema em linhas gerais mostrando o que é a POO, suas vantagens e desvantagens, as classes e os objetos.
Esta é uma aula teórica explicando o que são:
os qualificadores de acesso
o encapsulamento
o qualificador static
Esta é uma aula prática onde veremos o funcionamento dos qualificadores de acesso na linguagem Java.
Esta é uma aula prática onde veremos, em Java, o funcionamento da técnica do encapsulamento e do qualificador static.
Nesta aula veremos como implementar uma classe em C++:
qualificadores de escopo
encapsulamento
qualificador static
Nesta aula veremos:
O que são métodos construtores
O que são métodos destrutores
Como implementar em Java
Como implementar em C++
Nesta aula veremos um programa Java mostrando:
Implementação de métodos construtores.
Métodos destrutores
o método finalize()
o Garbage Collector
Nesta aula veremos uma implementação em C++ do equivalente ao visto na aula passada.
Nesta aula veremos a teoria introdutória da herança:
Conceito de herança
Membros herdáveis / não herdáveis
Superclasse / supertipo - subclasse / subtipo
Cadeias de herança
Quando usar a herança
Vantagens da herança
Nesta aula veremos:
como implementar herança na linguagem Java
os dois exemplos vistos na aula teórica
Nesta aula veremos:
como implementar herança na linguagem C++
os dois exemplos vistos na aula teórica e na implementação Java da aula anterior.
Nesta aula veremos:
a teoria da sobrecarga e sobrescrita nas diversas situações de herança
acesso aos métodos das superclasses
e os métodos construtores, como operam na herança?
Nesta aula veremos:
Como implementar a sobrecarga e a sobrescrita em Java
O comportamento dos métodos construtores na herança
Nesta aula faremos em C++ o que foi feito em Java na aula passada.
Nesta aula veremos a teoria do polimorfismo.
Nesta aula veremos como se implementa o polimorfismo em Java.
Nesta aula veremos como se implementa o polimorfismo em C++.
Nesta aula veremos a teoria de:
As interfaces
As classes abstraras
Nesta aula veremos uma implementação em Java do que foi visto na aula teórica.
As interfaces
O polimorfismo utilizando-se as interfaces
Um pequeno programa exemplificando o uso de interfaces/classes/objetos em geral
As classes abstraras
Nesta aula implementaremos em C++ o que foi feito em Java na aula passada.
Nesta aula veremos:
Simulação de Herança Múltipla em Java com Interfaces
Herança múltipla em C++
Sequência de instanciação
O problema do diamante
Nesta aula veremos a implementação múltipla de Interfaces em Java.
Nesta aula veremos a implementação da Herança Múltipla em C++ nos seguintes casos:
Herança múltipla comum
Herança múltipla com o problema do diamante:
com duplicidade de instâncias na superclasse comum
com eliminação da duplicidade de instâncias na superclasse comum
Nesta aula veremos a sobrecarga de operadores em C++
Um exemplo da classe Retangulo
A tabela de todos os operadores possíveis de serem sobrecarregados
Nesta aula veremos a sobregarga de operador, envolvendo:
Um exemplo com o operador +.
Uma classe Retangulo cuja soma retorna um valor (soma das áreas).
Uma classe Retangulo cuja soma retorna um objeto Retangulo de área equivalente
A soma de uma série de objetos Retangulo armazendos em um vetor.
Nesta aula veremos o que são os métodos e classes de tipos genéricos.
Tipos genéricos em Java
Tipos genéricos em C++
Nesta aula veremos:
Uma classe genérica para armazenamento de objetos em vetor.
A classe ArrayList
A classe HashSet
A classe HashMap
Nesta aula veremos:
A sintaxe de implementação de classes e métodos genéricos (template) em C++.
A implementação de uma classe container para armazenamento de tipos genéricos com diversos exemplos.
Nesta aula veremos:
Uma implementação da classe list.
Uma implementação da classe set.
Uma implementação da classe map.
Nesta aula veremos a implementação em Java do qualificador final nos seguintes casos:
Em uma classe
Em um método
Em um atributo (tipo primitivo e instância)
Em um array
Em um parâmetro de método
Nesta aula veremos a implementação em C++ do qualificador final nos seguintes casos:
Em uma classe
Em um método
E do qualificador const nos seguintes casos:
Em um atributo (tipo primitivo e instância)
Em um array
Em um parâmetro de método
Nesta aula veremos, para C++, os qualificadores:
friend (teoria e prática)
inline (teoria)
mutable (teoria e prática)
volatile (teoria)
Nesta aula veremos a primeira parte de como identificar que classes devem fazer parte de um novo sistema.
(o material anexo vai completo com todas as partes vistas a seguir)
Nesta aula veremos a segunda parte de como identificar que classes devem fazer parte de um novo sistema.
Identificando atributos
Identificando métodos através da UML
Nesta aula iremos ver alguns tipos de classes além das que representam os objetos do mundo real.
Nesta aula veremos:
coesão e o acoplamento
relacionamento entre as classes (parte 1)
a associação
Nesta aula veremos:
Relacionamento entre classes (parte 2)
a Agregação
a Composição
Nas próximas aulas vamos ver um pequeno sistema de banco de dados de pessoas.
Nesta primeira parte vamos ver uma implementação Java não-POO que será posteriormente transformada em uma versão POO.
Nesta aula vamos continuar o sistema iniciado na aula anterior.
Nesta segunda parte vamos ver uma implementação POO em Java do sistema monolítico apresentado anteriormente.
Nesta aula vamos continuar o sistema de banco de dados com as implementações em C++.
Versão não-POO
Versão POO
Minhas palavras finais.
O objetivo deste curso é apresentar o paradigma de Programação Orientada a Objetos voltado a programadores Java e C++.
Apesar de ser um curso introdutório, no contexto global da Programação Orientada a Objetos, este curso apresenta um aprofundamento mais do que suficiente para o desenvolvedor atuar no mercado de trabalho com sobra de conhecimento em relação às demanadas do mercado de trabalho.
Evidentemente que iniciamos com as conceituações fundamentais e vamos até a elaboração prática de um pequeno sistema em duas versões – a primeira não orientada a objetos e a segunda refatorada para operar sob a orientação a objetos.
No meio tempo falaremos dos qualificadores de acesso em uma classe – public, private e protected – que dão acesso, ou não, dependendo do contexto, a objetos de outras classes acessar seus membros.
Falaremos do encapsulamento, que protege os atributos da classe contra acessos indevidos e inadequados, dos membros estáticos, dos métodos construtores e dos destrutores.
A seguir falaremos da herança, a mais poderosa e, podemos dizer, emblemática, característica da Programação Orientada a Objetos.
A sobrecarga, a sobrescrita e o famoso e mal compreendido polimorfismo. As interfaces, as classes abstratas e as classes e métodos de tipos genéricos.
Falaremos também de características exclusivas da linguagem C++, como a herança múltipla e a sobrecarga de operadores. Alguns outros qualificadores como o final (esse também tem no Java), const, friend, mutable, inline e volatile.
A coesão e o acoplamento, associações entre classes, agregação, composição e falaremos, também, de outros tipos de classes além das representativas dos objetos manipulados pelo usuário do software.
Como já dito no início, concluiremos o curso com a elaboração de um pequeno sistema.