A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Programação Orientada para Objectos ETI e IGE ISCTE.

Apresentações semelhantes


Apresentação em tema: "1 Programação Orientada para Objectos ETI e IGE ISCTE."— Transcrição da apresentação:

1 1 Programação Orientada para Objectos ETI e IGE ISCTE

2 2003/2004 Programação Orientada para Objectos 2 Docentes Ricardo Ribeiro Gabinete D6.21 Cacifo 292 Responsável: Prof. Manuel Menezes de Sequeira

3 2003/2004 Programação Orientada para Objectos 3 Informação Diapositivos das aulas teóricas Resumos das aulas práticas

4 2003/2004 Programação Orientada para Objectos 4 Avaliação Problema: 10% Em grupo Trabalho final: 40% Entrega intermédia: avaliação negativa = -3 valores Entrega final: trabalho completo Em grupo com discussão individual Frequência: 50% Individual sem consulta: nota mínima 7 Grupos: 2 alunos

5 2003/2004 Programação Orientada para Objectos 5 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.

6 6 Aula 1 Modularização física e em pacotes

7 2003/2004 Programação Orientada para Objectos 7 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

8 2003/2004 Programação Orientada para Objectos 8 Modularização Procedimental: rotinas Funções e procedimentos De dados: classes Classes Física: módulos físicos (ou módulos) Ficheiros Em pacotes: pacotes Espaços nominativos

9 2003/2004 Programação Orientada para Objectos 9 Modularização procedimental Módulos são rotinas que modularizam algoritmos: Caixas pretas que separam interface de implementação: interface: cabeçalho implementação (mecanismo): corpo Escondem implementação (encapsulamento): consumidor da rotina limita-se a invocá-la

10 2003/2004 Programação Orientada para Objectos 10 Modularização de dados Módulos são classes que modularizam dados e respectivas operações: Caixas pretas que separam interface de implementação: interface: operações públicas (e restantes membros públicos) Implementação: métodos e membros privados Escondem a implementação (encapsulamento): consumidor da classe limita-se a usá-la

11 2003/2004 Programação Orientada para Objectos 11 Modularização física Divisão de um programa em ficheiros Módulos são conhecidos por… módulos Módulos físicos são pares de ficheiros fonte: Ficheiro de interface (.H ) como se usam e o que fazem as ferramentas disponibilizadas pelo módulo Ficheiro de implementação (.C ) implementação das ditas ferramentas Consumidor do ficheiro usa o ficheiro de interface

12 2003/2004 Programação Orientada para Objectos 12 Módulo programa programa.C: #include "matematica.H" #define TURMAS_GRANDES #ifdef TURMAS_GRANDES int const número_máximo_de_alunos = 100; #else int const número_máximo_de_alunos = 30; #endif int main() { int notas[número_máximo_de_alunos];... cout << média(notas, 10) << endl; }

13 2003/2004 Programação Orientada para Objectos 13 Módulo matematica matematica.H: double média(int const m[], int const n); matematica.C: #include "matematica.H" double média(int const m[], int const n) { double soma = 0.0; for(int i = 0; i != n; ++i) soma += m[i]; return soma / n; }

14 2003/2004 Programação Orientada para Objectos 14 Construção de um executável 1. Pré-processamento: pré-processador c++ -E programa.C –o programa.ii c++ -E matematica.C –o matematica.ii 2. Compilação: compilador c++ [opções] –c programa.C c++ [opções] –c matematica.C 3. Fusão (to link): fusor (linker) c++ -o programa programa.o matematica.o

15 2003/2004 Programação Orientada para Objectos 15 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 )

16 2003/2004 Programação Orientada para Objectos 16 Compilação Tradução de unidade de tradução para linguagem máquina Fases da compilação: 1. Análise lexical 2. Análise sintáctica 3. Análise semântica 4. Optimização 5. Geração de código máquina

17 2003/2004 Programação Orientada para Objectos 17 Análise lexical Divide em palavras e símbolos a sequência de caracteres que constitui o ficheiro fonte Verifica a correção dos símbolos Exemplo para a língua Portuguesa: A a alfac um choou ovo. Erros!

18 2003/2004 Programação Orientada para Objectos 18 Análise sintáctica Verifica as regras de gramática da linguagem Exemplo para a língua Portuguesa: A a alface um chocou ovo. Erros!

19 2003/2004 Programação Orientada para Objectos 19 Análise semântica Verifica se, apesar de sintacticamente correcta, a sequência de símbolos faz sentido Exemplo para a língua Portuguesa: A alface chocou um ovo. Erro!

20 2003/2004 Programação Orientada para Objectos 20 Optimização e geração de código máquina Optimização Elimina o código redundante Simplifica expressões Elimina variáveis desnecessárias … Geração de código máquina Gera em linguagem máquina as instruções que realizam o especificado inicialmente na linguagem C++

21 2003/2004 Programação Orientada para Objectos 21 Ficheiros objecto programa.omatematica.o Necessidades média() Necessidades Disponibilidades main() Disponibilidades média()

22 2003/2004 Programação Orientada para Objectos 22 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

23 2003/2004 Programação Orientada para Objectos 23 Exemplo «file» matemática.H «file» matemática.C «file» programa.C «file» programa.ii «file» matemática.ii «file» matemática.o «file» programa.o «file» programa Pré-processamento Compilação Ficheiros fonte Unidades de tradução Ficheiros objecto Fusão

24 2003/2004 Programação Orientada para Objectos 24 Bibliotecas Bibliotecas ou ficheiros de arquivo Prefixo: lib Extensão:.a Como arquivar ficheiros objecto ar ru libarquivo.a ficheiro_objecto.o … Como compilar com bibliotecas c++ … -larquivo

25 2003/2004 Programação Orientada para Objectos 25 Modularização física Dois ficheiros fonte: Interface (.H ) Implementação (.C ) Que colocar em cada módulo? Que colocar em cada ficheiro fonte?

26 2003/2004 Programação Orientada para Objectos 26 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!!!)

27 2003/2004 Programação Orientada para Objectos 27 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

28 2003/2004 Programação Orientada para Objectos 28 Modularização em pacotes Agrupamento das ferramentas num nível mais elevado de modularização: os espaços nominativos (name spaces) Principais razões para o uso de pacotes: Evitar problema de colisão de nomes Distribuir software

29 2003/2004 Programação Orientada para Objectos 29 Colisão de nomes (I) Verão software logistica.H... void consolida();... logistica.C... void consolida() {... }... liblogistica.a: logistica.o Inverno software contabilidade.H... void consolida();... contabilidade.C... void consolida() {... }... libcontabilidade.a: contabilidade.o

30 2003/2004 Programação Orientada para Objectos 30 Colisão de nomes (II) programa.C: #include int main() { consolida(); } Qual das versões do procedimento é invocada?

31 2003/2004 Programação Orientada para Objectos 31 Colisão de nomes (III) Comando de construção do executável: c++ -o programa programa.C -llogistica -lcontabilidade Compilação tem sucesso: Fusão dos arquivos pára quando o procedimento é encontrado Seguintes não são pesquisados Comando de construção do executável: c++ -o programa programa.C logistica.o contabilidade.o Fusão dá erro por definição duplicada!

32 2003/2004 Programação Orientada para Objectos 32 Definição de espaços nominativos Verão software logistica.H namespace VerãoSoftware {... void consolida();... } logistica.C... Void VerãoSoftware::consolida() {... }... Inverno software contabilidade.H namespace InvernoSoftware {... void consolida();... } contabilidade.C... void InvernoSoftware::consolida() {... }...

33 2003/2004 Programação Orientada para Objectos 33 Utilização de ferramentas em espaços nominativos programa.C: #include int main() { VerãoSoftware::consolida(); InvernoSoftware::consolida(); }

34 2003/2004 Programação Orientada para Objectos 34 Organização Podemos ter hierarquias de espaços nominativos namespace InvernoSoftware { namespace Contabilidade { void consolida(); } Colocar ficheiros de interface em directórios correspondentes ao espaço nominativo a que pertencem InvernoSoftware/Contabilidade/contabilidade.H

35 2003/2004 Programação Orientada para Objectos 35 Aula 1: Sumário Modularização: física e em pacotes Noções de modularização física e compilação separada: Vantagens. Fases da construção dum programa Compilação Noções sobre ficheiros de interface (.H ), fonte (.C ), objecto (.o ), biblioteca ou arquivo (.a ), e executável Conteúdo dos ficheiros de implementação e de interface Noções de modularização em pacotes e espaços nominativos (namespaces): Utilidade Sintaxe Utilização


Carregar ppt "1 Programação Orientada para Objectos ETI e IGE ISCTE."

Apresentações semelhantes


Anúncios Google