Programação Orientada para Objectos ETI e IGE ISCTE
Informação http://iscte.pt/programacao/p2/ http://br.groups.yahoo.com/group/poo-iscte/ poo-iscte@yahoogrupos.com.br 2002/2003 Programação Orientada para Objectos
Avaliação Problema: 10% Trabalho final: 40% Frequência: 50% Em grupo Trabalho final: 40% Entrega intermédia: avaliação negativa = -3 valores Entrega final Em grupo com discussão individual Frequência: 50% Individual sem consulta: nota mínima 7 Grupos: 2 alunos 2002/2003 Programação Orientada para Objectos
Objectivos Conhecer os princípios básicos da resolução de problemas usando diversos paradigmas de programação. Ter conhecimentos sólidos da linguagem C++ e conhecimentos básicos da sua biblioteca padrão. Saber desenhar estruturas de dados e respectivos algoritmos em C++. Saber lidar com erros durante o desenvolvimento e fazer programas com um comportamento razoável face a erros. Ser capaz de planear a resolução dos problemas, analisando, desenhando e implementando correctamente os correspondentes programas. Ter conhecimentos elementares sobre a linguagem UML. 2002/2003 Programação Orientada para Objectos
Aula 1 Modularização: física e em pacotes Modularização física e compilação separada Modularização em pacotes e espaços nominativos 2002/2003 Programação Orientada para Objectos
Divisão de um programa Mais fácil dividir trabalho Permite divisão lógica do programa de acordo com objectivo das ferramentas Construção do executável acelerada Facilita reutilização de código 2002/2003 Programação Orientada para Objectos
Modularização Procedimental: rotinas De dados: classes Funções e procedimentos De dados: classes Classes Física: módulos físicos (ou módulos) Ficheiros Em pacotes: pacotes Espaços nominativos 2002/2003 Programação Orientada para Objectos
Construção de um executável Pré-processamento: pré-processador c++ -E programa.C –o programa.ii c++ -E matematica.C –o matematica.ii Compilação: compilador c++ [opções] –c programa.C c++ [opções] –c matematica.C Fusão (to link): fusor (linker) c++ -o programa programa.o matematica.o 2002/2003 Programação Orientada para Objectos
Pré-processamento Copia ficheiro de implementação (.C) para unidade de tradução (.ii) Directivas de pré-processamento (linhas iniciadas por #): Inclusões (#include) Macros (#define) Compilação condicional (#ifdef; #ifndef; #else; #endif) 2002/2003 Programação Orientada para Objectos
Compilação Tradução de unidade de tradução para linguagem máquina Fases da compilação: Análise lexical Análise sintáctica Análise semântica Optimização Geração de código máquina 2002/2003 Programação Orientada para Objectos
Fusão Ficheiros objecto fundidos num único executável Verifica que: Não há repetições Há uma função main() Para cada necessidade existe correspondente disponibilidade 2002/2003 Programação Orientada para Objectos
Exemplo «file» matemática.C «file» matemática.H «file» programa.C Ficheiros fonte Pré-processamento «file» matemática.ii «file» programa.ii Unidades de tradução Compilação «file» matemática.o «file» programa.o Ficheiros objecto Fusão «file» programa 2002/2003 Programação Orientada para Objectos
Modularização física Dois ficheiros fonte: Que colocar em cada módulo? Interface (.H) Implementação (.C) Que colocar em cada módulo? Que colocar em cada ficheiro fonte? 2002/2003 Programação Orientada para Objectos
Ficheiros de interface (.H) Definições de classes Declarações de rotinas não-membro e não inline Definições de rotinas e métodos inline Definições de constantes Declarações de variáveis globais (evitar!!!) 2002/2003 Programação Orientada para Objectos
Ficheiros de implementação (.C) Definições de tudo o que for apenas necessário dentro do módulo (classes, rotinas, ...) Definições de todas as rotinas e métodos que não sejam inline Definições de todas as variáveis globais 2002/2003 Programação Orientada para Objectos
Modularização em pacotes Evitar problema de colisão de nomes Agrupamento das ferramentas num nível mais elevado de modularização: os espaços nominativos (name spaces) Colocar ficheiros de interface em directórios correspondentes ao espaço nominativo a que pertencem 2002/2003 Programação Orientada para Objectos