Aprenda
a Linguagem C++, capacitando-se para ingressar
em nossos cursos avançados: Visual
C++ e/ou C++ para Linux e/ou Desenvolvimento multi-plataforma
em C++ com Qt
PERFIL
Objetivo:
Capacitar o aluno como programador na Linguagem
de programação C++, possibilitando
o ingresso em nossos cursos avançados:
Visual C++ (para Windows) e/ou C++ para Linux.
E se você se inscrever para o curso "Linguagem
C++" e também para um dos avançados
("Visual C++" ou "C++ para Linux"),
terá direito a desconto de 20%.
Pré-requisitos: Conhecimentos básicos
de algum sistema operacional (exemplos: Windows,
Linux, etc) e saber Lógica de Programação.
Carga Horária:
60 horas.
Instrutores: desenvolvedores C++, com longa
experiência em programação.
PRINCIPAIS
TÓPICOS
Ocupando
e acessando a memória / Fluxo de processamento:
Classes
e tipos de variáveis; tipos básicos
ou primitivos;
Controle do fluxo de processamento: - módulos,
funções, laços, blocos, decisões;
Operadores;
O pré processador; diretivas de
pré processamento; padronização
de constantes;
Entendendo a memória global, a pilha
e o heap; vetores, matrizes e ponteiros.
Ponteiros e referências; o especificador
const.
Ponteiros para funções;
Criando tipos através de estruturas,
classes, uniões e enumeradores; diferença
entre uma estrutura na Linguagem C e uma estrutura
na Linguagem C++;
Quando usar class, quando usar struct;
Biblioteca C++ padrão: funções
herdadadas da biblioteca C; os streams
de input e output de C++; tratamento
de arquivos;
Evitando estouros de buffer.
Estruturas
e classes C++:
Conceitos
de programação estruturada e modular;
conceito de orientação a objetos
(OOP) e sua implementação em C++;
Encapsulamento: namespace; struct
e class; tipos aninhados; criando membros
de dados e funções-membro; definindo
proteções de acesso aos membros. Funções
construtoras e função destrutora;
construtores default e de cópia;
construtores explicit;
O ponteiro this; definindo o ponteiro
this como const; especificação
mutable para membros de dados;
Classes e funções amigas; Identidade; membros
estáticos; constantes membras;
Criando operadores membros de uma class
ou struct;
Sobrecarga de funções e operadores;
Reaproveitamento de código: agregação
e herança;
Herança: interdependências
entre herança e encapsulamento; restrição
de acesso protected; derivação
public, private e protected; herança
simples e herança múltipla;
Polimorfismo; interdependências entre
herança e polimorfismo: redefinição
de funções; funções
virtuais e funções virtuais puras;
redefinição de funções
virtuais;
A OOP e a técnica da linha de montagem:
desenvolvendo componentes de software por meio
de classes e objetos em C++ ;
utilizando funções virtuais para
criar interfaces, frameworks e eventos; Tratamento de excessões:
throw, try, catch(<type> <var>),
catch(...); set_terminate, set_unexpected;
Templates:
O que
são templates; entendendo a parametrização
de tipos; templates de classes e templates de
funções.
Biblioteca C++ padrão: o que é
a biblioteca de templates STL(Standard
Template Library);
os tipos string e wstring; os templates
basic_string, list, vector, map, multimap,
set, multiset e outros; functors e
algorítmos genéricos;
Templates e programação genérica;
Como operadores colaboram em programação
genérica através de templates; Utilizando smart pointers; Entendendo o uso do iterator;
os vários tipos de iterator; exemplos
de uso do especificador mutable;
Entendendo o uso do allocator;
Especialização de templates;
Polimorfismo em tempo de compilação
e em tempo de execução;
Templates de conversão de tipo (casts):
dynamic_cast, static_cast, reinterpret_cast,
const_cast; criando casts personalizados;
Entendendo C++ como uma linguagem multiparadigma,
com suporte a mais que uma técnica de programação,
indo além de Orientação a
Objetos.