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

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

GP - Generic Programming Thiago Robert Felipe Pompeo.

Apresentações semelhantes


Apresentação em tema: "GP - Generic Programming Thiago Robert Felipe Pompeo."— Transcrição da apresentação:

1 GP - Generic Programming Thiago Robert Felipe Pompeo

2 Um pouco de história STL e GP –Anos 70 - Alexander Stepanov observou que existem diversos algoritmos que não dependem da estrutura de dados sobre a qual operam: sort, for_each,... – Stepanov desenvolveu uma biblioteca genérica em ADA e foi desafiado a fazer o mesmo em C++ (não existiam templates em C++ na época) –1992 HP Labs - Stepanov e Meng Lee desenvolveram a STL, uma biblioteca genérica que provê vários dos algoritmos básicos e estruturas de dados da CCO –14 de julho de STL é adicioanda ao ANSI/ISO C++

3 O básico Idéia chave: separação entre estruturas de dados (containers) e operações nos dados (generic algorithms) Componentes genéricos desenvolvidos são utilizados diretamente no desenvolvimento Dois tipos de genericidade: –A parametrização de tipos (templates em C++) resultam em componentes genéricos –Os algoritmos genéricos podem ser aplicados as diferentes estruturas de dados

4 As 3 dimensões dos SC Desenvolvimento tradicional - i * j * k Parametrização de tipo - elimina o eixo i Algoritmos genéricos - j + k

5 Conceitos Que conjunto de tipos pode ser passado para um parâmetro template? –Tipos que preencham um conjunto de requisitos específicos (implementem um conjunto específico de operações,...) Esse conjunto de requisitos recebe o nome de conceito – é um modelo do conceito

6 Conceitos Refinamento de conceitos é muito parecido com herança de classes: um conceito pode extender os requisitos de outro – é um refinamento do conceito Hierarquia de conceitos - hierarquia de classes Conceitos não podem ser expressos formalmente em C++ (linguagem com melhor suporte para GP atualmente)

7 Vantagens do C++ Templates de classe e templates de função Especialização de templates Function objects Tipos definidos pelo usuário Tipos definidos internamente em classes Overloading de operadores

8 GP X OO GP não é OO OO é apenas um subconjunto do domínio da solução e nem sempre é apropriado para o problema em questão Abstrações –Expressas atravéz de classes base em OO –Expressas atravéz de conceitos em GP Projeto OO não pode ser usado para modelar GP

9 STL e SCE STL - Abstrações chave: –Containers – armazenam dados e exportam iteradores –Iterators – objetos que se comportam como ponteiros para os dados em um determinado container –Algorithms – algoritmos genéricos que manipulam iteradores para executar operações em dados armazenados em containers Algorithm Container Iterator

10 Containers Objetos que armazenam objetos de um tipo qualquer Sequence containers – organizam um conjunto de objetos, todos do mesmo tipo, de maneira linear Associative containers – busca de dados baseada em chaves

11 Containers STL –Sequence Containers: Vector, Deque and List –Associative Containers: Set, MultiSet, Map, Multimap SCE –LinkedListLinkedList Single ou Doubly – parâmetro template Aspecto ordered – parâmetro template SMP para definir o tipo de iteradorSMP –Stack (FIFO, FILO) e DequeStackDeque

12 Iteradores Generalização de ponteiros que permite o tratamento de diferentes tipos de estruturas de dados de maneira uniforme Provêm mecanismos para percorrer estruturas de dados e acessar seus elementos A interface entre algoritmos e estruturas de dados é especificada pelos tipos de iteradores exportados pela estrutura

13 Iterators STL – hierarquia de conceitos de iteradores SCE DoublyLinkedListIterator e SingleLinkedListIteratorDoublyLinkedListIteratorSingleLinkedListIterator Aspecto ordered – parâmetro template SMP – inserção de novos elementos StackIterator e DequeIterator

14 Algoritmos Algoritmos genéricos que manipulam dados armazenados em estruturas de dados Os algoritmos são desacoplados das estruturas de dados: –Funções globais parametrizadas por conceitos de iteradores –Operam sobre um range (iterador inicial, iterador final)

15 Algoritmos STL –Mutating sequence –Non-mutating sequence –Sorting and related –Generalized numeric SCE –algorithms.halgorithms.h

16 Function objects Function object é uma classe que tem o operador de chamada de função (operador ()) definido Geralmete utilizados como argumentos para algoritmos genéricos –function_objects.hfunction_objects.h

17 Exemplos exemplo1.cpp exemplo2.cpp exemplo3.cpp exemplo4.cpp

18 Outros componentes STL Adaptors –Implementam novos objetos com funcionalidades diferentes a partir de componentes existentes Container adaptors – stack >, stack > Iterators adaptors – reverse iterators Function adaptors – negators, binders, adaptors for pointers to functions

19 Outros componentes STL Allocators –Objetos que encapsulam informação a respeito do modelo de memória utilizado –Containers são parametrizados com allocators e os utilizam para realizar acessos a memória

20 Links David R. Musser STL Programmer’s Guide The Matrix Template Library Dagstuhl Seminar – 27 de abril a 1 de maio de 1998


Carregar ppt "GP - Generic Programming Thiago Robert Felipe Pompeo."

Apresentações semelhantes


Anúncios Google