Faculdade de Informática, PUCRS, Porto Alegre, RS
Coordenação: Isabel Harb Manssour
Instrutores: Eduardo Bezerra e Cristiane Woszezenki
bezerra @ inf.pucrs.br e cristianew @ inf.pucrs.br
Agosto / Setembro de 2005
1. Informações gerais:
Carga Horária: 20 horas/aula
Sala 246, prédio 30
Inicio: 20/08/2005
Fim: 17/09/2005
Pré-requisito: Conhecimento e experiência prévia no desenvolvimento de programas em alguma linguagem de programação.
2.
Objetivo:
Introduzir conceitos de orientação a objetos utilizando a linguagem de programação C++. Ao final do curso espera-se que o aluno tenha compreendido os conceitos fundamentais do paradigma de orientação de objetos.
3. Programação das aulas:
Obs. As aulas foram preparadas com base nas notas de aula do Prof. Eduardo Bezerra do curso de Laboratório de Programação II da Engenharia da Computação da PUCRS, e também a partir do tutorial de C++ disponível em http://www.cplusplus.com/ (visitar o site e consultar o tutorial disponível para maiores detalhes no conteúdo das aulas desse curso).
Dia 1: Sábado, 20/08/2005. “A linguagem de programação C++, visão geral”.
1.1 Organização do curso
1.2 Estrutura de um programa em C++
1.3 Variáveis, tipos de dados, constantes, palavras reservadas
1.4 Operadores
1.6 Funções
1.7 Operador de resolução de escopo, sobrecarga de funções, templates
1.8 Class x Struct
1.9 Prática para fixação dos conteúdos
1.9.1 Apresentação do ambiente de desenvolvimento (g++, Linux)
1.9.2 Comandos básicos do Linux e resumo em uma página
1.9.3 Exercícios: utilização dos comandos básicos do Linux na prática
1.9.4 Exercícios em C++
Dia 2: Sábado, 27/08/2005. “Introdução ao paradigma de programação OO”.
2.1 Objetos
2.2 Classes (métodos, atributos e diagrama de classes)
2.3 Abstração
2.4 Encapsulamento (declaração e visibilidade de métodos e atributos)
2.5 Declaração de classes em C++
2.5.1 Exemplo de um programa OO em C++
2.5.2 Construtores
2.6 Prática para fixação dos conteúdos
2.6.1 Conceitos de orientação a objetos (abstração)
2.6.2 Programação
Dia 3: Sábado, 03/09/2005. “Mecanismo de herança”.
3.1 Herança
3.2 Separando as classes da implementação
3.3 Herança múltipla
3.4 Prática para fixação dos conteúdos
Dia 4: Sábado, 10/09/2005. “Relacionamento entre classes”.
4.1 Agregação
4.2 Prática para fixação dos conteúdos
Dia 5: Sábado, 24/09/2005. “Polimorfismo”.
5.1 Polimorfismo
5.2 Conversão dinâmica de tipos
5.3 Prática para fixação dos conteúdos
4. Material de apoio:
Notas de aula "Classes e Objetos em C++", Eduardo Bezerra (versão em PDF, versão para o Open Office)
Notas de aula, Eduardo Bezerra - herança, herança múltipla, classes virtuais, funções virtuais, funções friend, classes abstratas, sobrecarga de funções, sobrecarga de operadores, polimorfismo, template, GUI.
Aplicações exemplo:
Classe SystemUser (ler antes o arquivo README.txt)
Herança bastante simples: (Pessoa.cpp, Aluno.cpp, main.cpp)
Herança: (Heranca)
Agregação: (Agregacao)
Herança: Sistema Bank Account (account.h, account.cpp, testAccount.cpp, accounts.txt)
Exemplo/exercício de herança: ex_heranca.cpp, mmamals.cpp, e vmammals.cpp
Exemplos de programas em C++ desenvolvidos no contexto de diferentes turmas da disciplina de Lapro II (EC) - diretório cpp/
Material sobre unix - Resumo dos comandos mais usados em uma página; Comandos básicos - parte 1 e parte 2, Edição e Compilação de programas, Dicas sobre linux e C
Material sobre ponteiros, Eduardo Bezerra - notas de aula e exemplos
Resumo das bibliotecas padrão do C++: cpp_libraries1.jpg e cpp_libraries2.jpg
Material sobre listas encadeadas (listas, filas, pilhas)
Uma classe Pilha para armazenar dados genéricos (stack.h, stack.cpp, test_stack.cpp)
Uma classe Fila para armazenar dados genéricos (queue.h, queue.cpp, test_queue.cpp)
Uma classe Lista para armazenar dados genéricos (list2.h, list2.cpp, testlist2.cpp)
Exemplo de lista encadeada genérica. Neste exemplo é possivel criar listas de alunos e professores. (/LinkedList)
Material sobre árvores
Um nodo para construção de árvores binárias (de inteiros): Nodo_arvoreb.h e Nodo_arvoreb.cpp.
Classe para criação e manipulação de Árvore Binária de Pesquisa utilizando Nodo_arvoreb.h: ABP.h, ABP.cpp e testeABP.cpp.
Enunciados dos exercicios desenvolvidos nas aulas de Lapro II (EC) - siga esse link para alguns exemplos
Apostilas de C++ freeware
Cursos de C++ freeware
Introdução a Linguagem C++ e POO (14 slides)
Curso de Programação C/C++ (97 slides)
Programação orientada a objetos: Desenvolvimento avançado em C++ (86 slides)
5. Bibliografia:
BÁSICA:
1. DEITEL, HARVEY M et al -- C++ : Como Programar. Porto Alegre : Bookman, 2001.
2. SCHILDT, H. -- C++: the complete reference. Berkeley: McGraw Hill, 1998.
COMPLEMENTAR:
1. HORSTAMANN, C. -- Conceitos de Computação com o Essencial de C++. Porto Alegre: Artmed Editora, 2003.
2. JAMSA, K. -- Aprendendo C++. São Paulo: Makron Books, 1999.
3. SCHILDT, H. -- Schildt's Expert C++, Osborne MacGrawHill, 1996.
4. STROUSTRUP, B. -- The C++ Programming Language. Reading: Addison-Wesley, 1997.
5. ZEIGLER, B. -- Objects and systems : principled design with implementations in C++ and Java. Springer, 1997.
SOFTWARE DE APOIO:
1. g++
2. Linux
Web: http://www.cplusplus.com/
.~. /v\ // \\ /( )\ ^`~`^linux.org