• Informações do Curso
  • Conteúdo do Curso
    • Cap. 0 :: Ambientes de programação C++
    • Cap. 1 :: Introdução à programação em C++
    • Cap. 2 :: Comandos de controle
    • Cap. 3 :: Funções e introdução à recursão
    • Cap. 4 :: Vetores
    • Cap. 5 :: Ponteiros
    • Cap. 6 :: Classes Parte I
    • Cap. 7 :: Classes Parte II
    • Cap. 8 :: Sobreposição de operadores
    • Cap. 9 :: Programação Orientada a Objetos
    • Cap. 10 :: Polimorfismo
    • Cap. 11 :: Templates
    • Cap. 12 :: C++ Fluxo de Entrada/Saída
    • Cap. 13 :: Tratamento de exceções
    • Cap. 14 :: Processamento de arquivos
    • Cap. 15 :: Classe string e processamento de fluxos de strings
    • Cap. 16 :: STL (Standard Template Library)
    • Cap. 17 :: Padrões de Projeto
  • Referências
O objetivo do curso é apresentar um estudo compreensivo do paradigma de orientação a objetos e a sua implementação utilizando a linguagem C++. O curso cobre os tópicos referentes a classes, encapsulamento, abstração de dados, polimorfismo, templates, e a biblioteca padrão de templates (STL).

Instrutores

  • Alvaro Cuno Parari (Doutorando da COPPE/UFRJ) (alvaroecp@gmail.com)
  • André Maximo Almeida (Doutorando da COPPE/UFRJ) (andmax@gmail.com)
  • Flávio Nascimento (Mestrando da COPPE/UFRJ) (flavio@cos.ufrj.br)
  • Paulo Roma Cavalcanti (Professor DCC/COPPE/UFRJ) (roma@lcg.ufrj.br)
  • Yalmar Ponce Atencio (Doutorando da COPPE/UFRJ) (yalmar@gmail.com)

Cronograma

Dia Manhã Tarde
8:00 - 10:00 10:00 - 12:00 13:00 - 15:00 15:00 - 17:00
Segunda 18/02 Yalmar André
Tópicos Cap. 0 :: Ambientes de programação C++

Cap. 1 :: Introdução à C++

Cap. 2 :: Comandos de controle

Cap. 3 :: Funções e introdução à recursão

Cap. 4 :: Vetores

terça 19/02 Alvaro Flávio
Tópicos Cap. 5 :: Ponteiros

Exercicios

Cap. 6 :: Classes I

Cap. 7 :: Classes II

Exercicios

quarta 20/02 Alvaro Flávio Paulo
Tópicos Cap. 8 :: Sobreposição de operadores

Exercicios

Cap. 9 :: Programação Orientada a Objetos

Cap. 10 :: Polimorfismo

Exercicios

Cap. 11 :: Templates

Quinta 21/02 Yalmar Paulo
Tópicos Cap. 13 :: Tratamento de exceções

Exercicios

Cap. 16 :: STL (Standard Template Library)

Exercicios

Sexta 22/02 André Alvaro
Tópicos Cap. 14 :: Processamento de arquivos

Cap. 15 :: Classe string e processamento de fluxo de strings

Exercicios

Cap. 17 :: Padrões de Projeto

Exercicios

Extras

  • Tópicos em C++ (em Português)
Tópicos Abordados:
  • Ambientes de programação em C++
  • Editores de Código C++
  • Documentação de código

Material:
  • Transparências do capítulo (em Português)
  • Exemplos de código
  • Vídeos de introdução

Tópicos Abordados:
  • Programas simples em C++
  • Tipos básicos
  • Conceitos básicos de gerenciamento de memória
  • Operadores aritméticos

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Técnicas básicas de solução de problemas
  • Comandos de seleção "if" e "if...else"
  • Comandos de repetição "while", "do...while" e "for"
  • Seleção múltipla com o comando "switch"
  • Comandos de controle de fluxo "break" e "continue"
  • Operadores lógicos para expressões condicionais complexas

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Construção de programas modulares a partir de funções
  • Funções comuns disponíveis na biblioteca padrão do C++
  • Mecanismo de chamada/retorno suportado pela pilha de chamada de funções
  • Geração de números aleatórios
  • Funções recursivas (que chamam a si própria)

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Uso de vetores para representar conjuntos de ítens
  • Uso de vetores para armazenar, ordenar e procurar valores em listas e tabelas
  • Vetores: declaração, iniciaçao e referenciamento
  • Passagem de vetores como parâmetros de função
  • Técnicas básicas de busca e ordenação
  • Declaração e manipulação de vetores multi-dimensionais
  • Uso da classe vetor ("vector") da STL (Standard Template Library)

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • O que são ponteiros
  • Similaridades e diferenças entre ponteiros e referências, e seus usos
  • Uso de ponteiros para passagem de argumentos por referência
  • Uso de ponteiros para funções

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Como usar diretivas de pré-compilação para evitar múltiplas inclusões
  • Escopo de classe e acesso a seus membros através do nome, referência ou ponteiro para um objeto
  • Construtores com argumentos padrão
  • Destrutores
  • Uso de construtores e destrutores
  • Atribuição de dados entre objetos membros de uma classe

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Objetos e funções constantes "const"
  • Objetos compostos de outros objetos
  • Funções "friend" e classes "friend"
  • Uso do ponteiro "this"
  • Criação e destruição dinâmica de objetos com os operadores "new" e "delete"
  • Uso de dados e funções estáticas ("static")
  • Recipientes de dados ("containers")
  • Iteradores para obtenção de elementos de recipientes de dados

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Sobreposição de operadores para tornar um programa mais legível
  • Sobreposição de operadores que trabalham com objetos de uma classe
  • Diferença entre sobreposição unária e binária de operadores
  • Conversão de objetos de uma classe para outra classe

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Derivação de classes ("inheritance")
  • Mecanismo de herança para reutilização de software
  • Noção de classe base, classes derivadas e os relacionamentos entre elas
  • Uso da palavra-chave "protected"
  • Uso de construtores e destrutores na hierarquia de herança
  • Diferenças entre herança pública, protegida e privada
  • Uso de herança para personalizar softwares existentes

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • O que é polimorfismo e para que serve
  • Uso de funções "virtuais"
  • Classes concretas e abstratas
  • Funções puramente virtuais para criação de classes abstratas
  • Determinação do tipo de um objeto em tempo de execução
  • Eliminação apropriada de objetos através de Destrutores Virtuais

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Parametrização de funções através de "templates"
  • Parametrização de classes através de "templates"
  • Distinção entre classes e funções "template" e suas especializações
  • Sobreposição de funções "template"
  • Relação entre "template", "friend", "inheritance" e membros "static"

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Uso do fluxo de E/S em C++
  • Formatação de E/S
  • Hierarquia de classes de fluxo de E/S
  • Uso de manipuladores de fluxo
  • Obtenção do estado de sucesso ou falha em operações de E/S
  • Conexão de fluxos de saída e fluxos de entrada

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • O que são exceções e quando usá-las
  • Uso de "try", "catch" e "throw" para detectar, tratar e indicar exceções, respectivamente
  • Processamento de exceções não tratadas
  • Declaração de novas classes de exceção
  • Empilhamento e tratamento de exceções em escopo de funções
  • Hierarquia padrão de exceções

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Criação, leitura, escrita e atualização de arquivos
  • Processamento de arquivo seqüencial e aleatório
  • Uso de operações de E/S não-formatadas de alto-desempenho
  • Processamento de arquivos com dados formatados e não-formatados

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Classe "string" da biblioteca padrão (STL)
  • Atribuição, concatenação, comparação, busca e substituição de "strings"
  • Busca, substituição e inserção de caracteres em uma "string"
  • Conversão de "string" em estilo C para C++, e vice-versa
  • Uso de iteradores de "string"

Material:
  • Transparências do capítulo (em Inglês)
  • Exemplos de código

Tópicos Abordados:
  • Estruturas de dados encadeadas por ponteiros, classes auto-referenciadas e recursão
  • Estruturas de dados dinâmicas: listas, filas, pilhas e árvores binárias
  • Uso de árvores de busca binária para implementar dicionários
  • Aplicação de estruturas de dados encadeadas
  • Criação de estruturas de dados reutilizáveis baseadas em "template", herança e composição
  • Uso dos "containers" da STL
  • Uso dos algoritmos da STL
  • Uso de iteradores em algoritmos para acessar elementos de recipientes de forma genérica

Material:
  • Transparências do capítulo (em português)
  • Transparências do capítulo (em inglês)
  • Exemplos de código

Tópicos Abordados:
  • Fases de desenvolvimento de um software
  • Padrões de arquitetura
  • Padrões de projeto

Material:
  • Transparências do capítulo (em inglês)
  • Exemplos de código

Referências:
  • Standard Template Library Programmer's Guide; 1994; Hewlett-Packard Company & Hewlett-Packard Company
  • Design Patterns: Elements of Reusable Object-Oriented Software; Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides; 1994; Addison-Wesley Professional Computing Series
  • The C++ Programming Language: Special Edition (3rd Edition); Bjarne Stroustrup; 2000; Addison-Wesley
  • C++: how to program (4th ed.); H. M. Deitel and P. J. Deitel; 2004; Prentice-Hall, Inc.