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.