Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 13 Criado por Frederick H. Colclough, Colorado Technical University Recursão.
Advertisements

Funções em C.
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
MAC 238 CÁLCULO III.
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS - LPOO APRESENTAÇÃO DA DISCIPLINA Prof. Thiago Pereira Rique
Programação II Estruturas de Dados
Struct slink { slink* next; slink() { next=0; } slink(slink* p) { next=p; } virtual void print_me() = 0; }; next função virtual pura 1º constructor 2º
Vamos abordar o exemplo
Análise e Projeto de Sistemas
Orientação a Objetos: Modificador Final para Métodos e Classes
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
2002 LCG/UFRJ. All rights reserved. 1 Tópicos em C++ Claudio Esperança Paulo Roma Cavalcanti.
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
Funções em C Universidade do Estado de Santa Catarina
Funções definidas pelo usuário STL oferece a possibilidade de que o usuário escreva seus próprios algoritmos para processar os elementos de coleções #include.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
Curso de C/C++ Avançado
1 Aula 5 Instâncias dinâmicas. 2003/2004 Programação Orientada para Objectos 2 Instâncias… int j = 20; int f() { int const i = 10; // … } Constante automática.
1 Aula 4 Ponteiros. 2003/2004 Programação Orientada para Objectos 2 Instâncias de um programa C++ int i = 10; Nome: i Tipo: int Valor: 10.
1 Aula 3 Listas e iteradores (cont.). 2003/2004 Programação Orientada para Objectos 2 ListaDeInt : interface class ListaDeInt { public: typedef int Item;
Aula 8 Polimorfismo.
1 Aula 7 Herança. 2003/2004 Programação Orientada para Objectos 2 Conceitos fundamentais: Herança Polimorfismo Ligação dinâmica.
2002/2003 Programação Orientada para Objectos 1 Aula 5 Memória livre e instâncias dinâmicas Criação de instâncias dinâmicas Destruição de instâncias dinâmicas.
2002/2003 Programação Orientada para Objectos 1 Aula 4 Memória, unidade básica de memória e conceito de endereço Ponteiros Relação de ponteiros com matrizes.
2002/2003 Programação Orientada para Objectos 1 Aula 3 Utilização de listas Melhorando a implementação das listas e iteradores Reflexão sobre interfaces.
Algoritmos e linguagens de programação 1 (aula 05)
Classes Revisando: –Forma de implementação de estruturas específicas –Atributos (grupos de dados) –Métodos (conjuntos de procedimentos)
Linguagens de Programação
Linguagens de Programação
Linguagens de Programação
Linguagens de Programação
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Linguagens de Programação
Linguagens de Programação
Oberdan B. Ferreira Polimorfismo Oberdan B. Ferreira
Linguagem de Programação II
Algoritmos e linguagens de programação 1 (aula 10)
Programação II Estruturas de Dados Aula 02 - continuação
Métodos de Construção de Software: Orientação a Objetos
Curso de ISI (Implantação de Sistemas de Informação)
+ Curso de C/C++ Aula 8 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Tipos Abstratos de Dados
Curso de C/C++ Aula 9 Instrutor: Luiz Felipe Sotero
Linguagens de Programação II Aula 04 – Entendendo Classes
Linguagens de Programação II
Programação orientada a objectos em C++
INTRODUÇÃO.
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
SISTEMAS DISTRIBUIDOS Aula 4
Wagner Santos C. de Jesus
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 07) Prof. Alessandro Bernardo.
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Linguagens de Programação
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Polimorfismo.
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Herança e Polimorfismos
Linguagens de Programação
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 09) Prof. Alessandro Bernardo.
Linguagens de Programação
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
VII – Conceitos avançados Garbage Collection Linguagens orientadas a objectos Bibliografia aconselhada: –Apontamentos LFA 1999/ Jorge Morais.
2 – Revisão de Programação Orientada a Objetos
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista POO para Redes de Computadores.
Programação Orientada a Objetos para Redes de Computadores
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
Transcrição da apresentação:

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Parte III Introdução à Programação em C++ (Continuação)

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Relembrando da Última Aula... Polimorfismo Mais exemplos de programação orientada a objetos...

Templates Funções templates –Especificam um conjunto completo de funções (sobrecarregada) relacionadas Cada uma é uma função template especializada Classes templates –Especificam um conjunto completo de classes relacionadas Cada uma é uma classe template especializada Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Funções Templates Funções sobrecarregadas –Operações similares ou idênticas Tipos diferentes de dados Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista void print (int a) { cout << Inteiro << a ; } void print (double a) { cout << Double << a ; } void print (int a) { cout << a; } void print (double a) { cout << a; } Operações similares e tipos diferentes Operações idênticas e tipos diferentes

Funções Templates Se as operações forem idênticas para cada tipo... –Funções podem ser escritas de maneira mais compacta Funções template Funções templates –Operações idênticas Tipos diferentes de dados –Template de função única Compilador gera código objeto para cada função utilizada em separado –Checagem de tipo Diferente das macros em C Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista #define min(X, Y) ((X) < (Y) ? (X) : (Y))

Funções Template Definição de funções template –Palavra-chave: template –Lista tipos formais de parâmetros em parênteses angulares ( ) Precedido pela palavra-chave class ou typename –class e typename podem ser intercalados template Especifica tipos de: –Argumentos para funções, tipo de retorno de função e variáveis dentro da função Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Primeiro Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Primeiro Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Primeiro Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Templates de Funções Sobrecarregadas Especialização de funções template relacionadas –Compilador usa resolução sobrecarregada para identificar a função correspondente à chamada no código fonte –Compilador deduz a substituição que deve ser feita entre o tipo do parâmetro do template e o tipo do parâmetro da chamada da função –Compilador compila a versão especializada para que atende a chamada no código fonte No exemplo anterior, três versões especializadas foram criadas para printArray Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Templates de Funções Sobrecarregadas Função template sobrecarregada –Outras funções templates com o mesmo nome Parâmetros diferentes –Funções que não são templates com o mesmo nome Argumentos diferentes de função Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista printArray (const T *array, int count) e printArray (const T *array, int count, int lowSubscript) printArray (const T *array, int count) e printArray (const char *array, double count)

Templates de Funções Sobrecarregadas Função template sobrecarregada –Compilador realiza processo de identificação de padrão Tenta achar o mesmo padrão do nome da função e dos tipos de argumentos –Compilador procura a função mais próxima da função chamada »Ao encontrar, a utiliza Se falhar, –Função template correspondente não é encontrada ou se houver mais de uma função que atende às características »Compilador gera um erro Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Classe Template Pilha (stack) –Estrutura LIFO (Last-In-First-Out) Classes templates –Programação genérica –Descreve pilha genericamente Instanciação de versão de tipo específico –Tipos parametrizados Requerem um ou mais tipos de parâmetros –Personaliza template de classe genérica para formar classe template especializada Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

c

c Classes template são precedidas pelo cabeçalho template

Segundo Exemplo de Programa Usando Template em C++

Funções membro de classe template são também funções template, portanto devem ser precedidas por template O operador de resolução de escopo ( Stack ) é utilizado para associar as funções membro ao escopo da classe template

c

Segundo Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Segundo Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Terceiro Exemplo de Programa Usando Template em C++ Como as operações realizadas sobre as pilhas de doubles e de inteiros foram as mesmas... –Encher e depois esvaziar a pilha Cria-se uma função template para realizar a mesma sequência de operações independente do tipo dos dados inseridos na pilha

Terceiro Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Terceiro Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Terceiro Exemplo de Programa Usando Template em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Classe Template e Parâmetros sem Tipo Classe templates –Parâmetros sem tipo Argumentos padrão Tratados como consts Ex.: template Stack mostRecentSalesFigures; –Declara objeto do tipo Stack pilha Também podem ser usados em funções Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Classe Template e Parâmetros sem Tipo Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Classe Template e Parâmetros sem Tipo Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Classe Template e Parâmetros sem Tipo Classe templates –Parâmetro tipados Tipo padrão Ex.: template –Declara objeto do tipo Stack<> pilha; Não podem ser usados em funções Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Classe Template e Parâmetros sem Tipo Sobrecarregando classe templates –Classe para tipo especializado definido explicitamente Não usa nada da classe template original e pode até implementar suas próprias funções membro –Empregada quando um determinado tipo ou classe exige funções membro específicas –Ex.: template<> class Array { // corpo da defini ç ão de classe }; Objetos da classe Martian exigem um construtor padrão e funções membro próprias

Templates e Herança Há muitas maneiras de relacionar templates e herança –Classe template derivada de classe template especializada –Classe template derivada de classe que não é template –Classe template especializada derivada de classe template especializada –Classe não template derivada de classe template especializada Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Amizade entre classe template e… –Função global –Função membro de outra classe Possivelmente uma classe template especializada –Classe inteira Possivelmente uma classe template especializada Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Função friend –Dentro da definição de template class X friend void f1(); –f1() friend de todas as classes template especializadas friend void f2( X & ); –f2( X & ) friend de X somente, f2( X & ) friend de X somente, … friend void A::f4(); –Função membro f4 da classe A friend de todas as classes template especializadas Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Funções friend –Dentro da definição de template class X friend void C ::f5( X & ); –Função membro C ::f5( X & ) friend da class X somente Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Classes friend –Dentro da definição de template class X friend class Y; –Toda função membro de Y é friend de toda classe template especializada friend class Z ; –class Z friend da classe template especializada X, etc. Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Template e friend Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Templates e Membros static Classe que não é template –Membros de dados estáticos (static) são compartilhados entre todos os objetos Classe template –Cada classe especializada tem a sua própria cópia do membro de dados estático e de funções membro ( static ) Todos os objetos da mesma classe especializada compartilham os dados estáticos –Variáveis estáticas (static) devem ser inicializadas em escopo de arquivo Como das classes que não são templates Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1 Escreva um programa que implemente a classe template List que retira elementos de uma fila na mesma ordem que foram inseridos (esquema first-in first-out FIFO) ? Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2 Escreva um programa que implemente a classe template SonList que herda da classe List do Exemplo 1 e adiciona o método testList, semelhante ao método do segundo exemplo desta aula. ? Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Leitura Recomendada Capítulos 14 do livro –Deitel, C++ How to Program, 5th edition, Editora Prentice Hall, 2005