1 / 65

Framework de Bruno Preiss

Framework de Bruno Preiss. Sumário. Introdução Estruturas de Dados Fundamentais Projeto Orientado a Objetos Tipos Abstratos de Dados Java Tipos Abstratos de Dados C++ Application Frameworks Projetos. Introdução. Introdução. Tipos Abstratos e Dados Tipos de Dados e Abstrações

kaye-moon
Download Presentation

Framework de Bruno Preiss

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Framework de Bruno Preiss

  2. Sumário • Introdução • Estruturas de Dados Fundamentais • Projeto Orientado a Objetos • Tipos Abstratos de Dados Java • Tipos Abstratos de Dados C++ • Application Frameworks • Projetos

  3. Introdução

  4. Introdução • Tipos Abstratos e Dados • Tipos de Dados e Abstrações • Tipos Abstratos e Dados • Características de linguagens que é necessário conhecer • Linguagem Java • Linguagem C++

  5. Tipos de Dados e Abstrações • Uma abstração é a idéia de uma característica ou propriedade independente de qualquer objeto ou coisa real que possua esta característica ou propriedade • Por meio de abstração pode-se raciocinar sobre características de um objeto sem conhecer o objeto • Abstrações servem para esconder detalhes irrelevantes em um dado contexto

  6. Tipos Abstratos e Dados (1) • Em linguagens de programação variáveis são abstrações compostas de diversos atributos: • Nome – rótulo de referência no programa • Endereço – localização na memória • Valor – quantidade representada • Duração – intervalo de tempo no qual a variável existe • Escopo –comandos no programa no qual a variável é visível • Tipo – conjunto de valores que podem ser atribuídos ao atributo valor e conjunto de operações que podem ser realizadas • Tamanho –memória necessária para a representação

  7. Tipos Abstratos e Dados (2) • Associação é o processo de atribuição de valor a um dado atributo, podendo ser • estática (feita em tempo de compilação) • dinâmica (feita em tempo de execução). • Todas as linguagens de programação possuem tipos de dados nativos ou embutidos, tais como inteiros, reais, caracteres, etc • Freqüentemente a natureza do problema a tratar em programas de computadores leva à criação de abstrações apropriadas para a aplicação geradora dos programas

  8. Tipos Abstratos e Dados (3) • Para tratar de tipos de dados não nativos às linguagens de programação são definidos os Tipos Abstratos de Dados (TAD) • Com as linguagens orientadas a objeto os tipos abstratos de dados passaram a apresentar características próprias para essa representação, por meios das classes. • As classes são semanticamente muito mais ricas do que as construções struct do C ou record do Pascal

  9. Linguagem Java • Tipos primitivos e tipos referenciados • Instâncias criadas de forma explícita (new) • Comparação • = = (mesmo objeto) • equal (mesmo valor em diferentes instâncias) • Passagem de parâmetros • Por valor para tipos primitivos • “Por referência” para tipos referenciados (valor de endereço)

  10. Linguagem C++ • Passagem de parâmetros • Por valor • Por referência

  11. Estruturas de Dados Fundamentais

  12. Estruturas de Dados Fundamentais • Conceito • Implementação Java • A Classe Array • A Classe LinkedList • Implementação C++ • A Classe Array • A Classe LinkedList

  13. Conceito de Estruturas de Dados Fundamentais (1) • Em Estruturas de Dados estudam-se diversos Tipos Abstratos de Dados (TAD) • Pilhas • Filas • Deques • Listas • Árvores • Filas de prioridade • Conjuntos • Grafos • etc.

  14. Conceito de Estruturas de Dados Fundamentais (2) • Todos esses Tipos Abstratos de Dados podem ser implementados usando arrays ou estruturas encadeadas. • Arrays e listas encadeadas são base para os demais Tipos Abstratos de Dados • Passaram estes a ser chamados de Estruturas de Dados Fundamentais não sendo chamados de Tipos Abstratos de Dados

  15. Projeto Orientado a Objetos

  16. Projeto Orientado a Objetos • Conceitos iniciais • Containers • Hierarquias de Objetos e Padrões de Projeto (Frameworks)

  17. Conceitos iniciais (1) • Abordagem dos projetos de software • orientada a dados • orientada a processos • orientada a objetos • Objetos combinam dados e procedimentos (também chamados de métodos ou funções) • Esta abordagem permite que se tenha abstração e encapsulamento.

  18. Conceitos iniciais (2) • Uma interface é um conjunto de declarações de métodos • Uma classe abstrata é uma classe que especifica apenas uma interface • Não se pode instanciar uma classe abstrata • Em C++ classes abstratas possuem funções membros puramente virtuais que declaram apenas uma interface, sem implementação • As classes abstratas são usadas como classes base para as classes derivadas

  19. Conceitos iniciais (3) • A declaração de funções membros virtuais permite ter acesso às implementações fornecidas pelas classes derivadas por meio da interface da classe base • Não é necessário saber como uma instância de objeto é implementada nem de que classe derivada ela é instância.

  20. Conceitos iniciais (4) • Este padrão de projeto (interfaces e classes abstratas) explora a idéia do polimorfismo • Uma mesma abstração de interface é válida para a definição de cada tipo abstrato de dados • Diferentes implementações podem ser feitas para acomodar as diversas classes de origem comum com a mesma interface

  21. Containers (1) • Um container é um objeto que comporta outros objetos • Propriedades dos Containers • Capacidade • Lotação • Possibilidade de inserção e remoção de objetos • Um caso particular é constituído pelos containers de busca (searchable containers) que são aqueles que suportam operações eficientes de busca de objetos nele contidos

  22. Containers (2) • Enumerations e Iterators • Visitors • Cursors (não em C++) • Adapters • Singletons

  23. Hierarquias de Objetos e Padrões de Projeto • Conceitos iniciais • Abstração • Encapsulamento

  24. Conceitos iniciais • Os padrões de projeto e as hierarquias de classe são um salto qualitativo no desenvolvimento de “software” mas suas vantagens são semelhantes às das linhas de montagem da indústria • Para grande volume de produção e grande volume de pessoas envolvidas no empreendimento são indispensáveis • Contudo apresentam seus custos de preparação e manutenção que só se justificam para casos específicos com alta taxa de reuso • Para os não iniciados parecem complicações assustadoras e “desnecessárias”

  25. Abstração • Mecanismo de minimização de detalhes pouco relevantes permitindo o raciocínio dirigido • Abstração de procedimentos • ações que devam ser executadas para resolver o problema sem pensar em como essas ações devam ser implementadas • Abstração de dados • objetos de um programa ou sistema sem a preocupação de sua implementação

  26. Encapsulamento • São omitidas informações sobre detalhes de implementação • Objetos encapsulam dados e procedimentos • Independência • Conceitual: o usuário não pode interferir com a implementação do objeto sendo obrigado a usá-lo pelas regras ditadas pelo criador do objeto • Física: as operações sobre os objetos não provocam efeitos colaterais

  27. Tipos Abstratos de Dados Java

  28. Tipos Abstratos de Dados Java • Conceito • Padrões de Projeto

  29. Tipos de variáveis e tipos de dados • O tipo de uma variável especifica dois conjuntos: • um conjunto de valores • um conjunto de operações • Pode-se considerar o tipo de uma variável um tipo abstrato de dados no sentido de que pode-se estudar as qualidades do tipo sem levar em conta a realidade de sua representação • Não é necessário saber como é a representação computacional de um tipo inteiro ou real para poder raciocinar sobre ele

  30. Tipos e Abstrações • No projeto de programas orientados a objeto as primeiras considerações do programador consistem em desenvolver • uma coleção adequada de abstrações para tratar do problema • definir tipos abstratos de dados para representar estas abstrações • A definição de um tipo abstrato de dados requer as especificações de um conjunto de valores e de um conjunto de operações sobre esses valores

  31. Abstrações e a Orientação a Objeto • Só com o advento da Orientação a Objeto é que surgiram linguagens de programação que forneceram as ferramentas que permitiram declarar de maneira adequada os tipos abstratos de dados

  32. Padrões de projeto Hierarquia de Classes e convenções

  33. Hierarquia de Classes do Framework Java de Bruno Preiss

  34. Padrões de Projeto • Hierarquia de Classes • Objetos Java e a interface Comparable • Objetos abstratos comparáveis • Envoltória dos tipos primitivos • Containers • Containers abstratos • Visitantes • O método toString da classe AbstractContainer • Enumerações • Containers de Busca (Searchable Containers) • Associações

  35. Tipos Abstratos de Dados C++

  36. Tipos Abstratos de Dados C++ • Conceito • Padrões de Projeto

  37. Tipos de variáveis e tipos de dados • O tipo de uma variável especifica dois conjuntos: • um conjunto de valores • um conjunto de operações • Pode-se considerar o tipo de uma variável um tipo abstrato de dados no sentido de que pode-se estudar as qualidades do tipo sem levar em conta a realidade de sua representação • Não é necessário saber como é a representação computacional de um tipo inteiro ou real para poder raciocinar sobre ele

  38. Tipos e Abstrações • No projeto de programas orientados a objeto as primeiras considerações do programador consistem em desenvolver • uma coleção adequada de abstrações para tratar do problema • definir tipos abstratos de dados para representar estas abstrações • A definição de um tipo abstrato de dados requer as especificações de um conjunto de valores e de um conjunto de operações sobre esses valores

  39. Abstrações e a Orientação a Objeto • Só com o advento da Orientação a Objeto é que surgiram linguagens de programação que forneceram as ferramentas que permitiram declarar de maneira adequada os tipos abstratos de dados

  40. Hierarquia de Classes do Framework C++ de Bruno Preiss

  41. Padrões de Projeto • Hierarquia de Classes • Objetos • A classe Singleton NullObject • Object Wrappers para os tipos embutidos • Containes • Visitors • Iterators • A classe NullIterator • Conteúdo Direto e Indireto • Associações • Containers de Busca (Searchable Containers)

  42. Application Frameworks

  43. Application Frameworks • Conceito de Framework • Application Framework • Application Framework de Bruno Preiss

  44. Conceitos de Framework (1) • No desenvolvimento de software, um Framework é uma estrutura de suporte bem definida na qual um projeto do software pode ser baseado e desenvolvido. • Um Framework pode incluir programas de apoio, bibliotecas de código, linguagens de script e outros softwares para ajudar a desenvolver e juntar diferentes componentes do seu projeto

  45. Conceitos de Framework (2) • Uma estrutura lógica para a classificação e organização de informação complexa • A estrutura técnica e formato sistemático que suporta os conceitos de metadados, conteúdo e vocabulário controlado

  46. Conceitos de Framework (3) • Uma estrutura extensível para a descrição de um conjunto de conceitos, métodos, tecnologias e mudanças culturais necessárias para o projeto completo de um produto e processo de manufatura • Um conjunto de classes cooperativas que constitui um projeto re-usável para uma aplicação específica

  47. Conceitos de Framework (4) • Uma coleção de classes que fornece um conjunto de serviços para um domínio particular • Um conjunto de classes inter relacionado e re-usável que forma a base de uma aplicação

  48. Application Framework (1) • Conjunto de bibliotecas (coleções de sub programas utilizadas para o desenvolvimento de “software”) ou classes (coleções de tipos encapsulados de variáveis e tipos de métodos) usadas para implementar a estrutura padrão de uma aplicação para um dado sistema operacional

  49. Application Framework (2) • A vantagem de seu emprego é o agrupamento de grande quantidade de código re-usável o que economiza o esforço de reescrever código padrão a cada nova aplicação. Os application frameworks apresentaram grande popularidade com o advento das interfaces gráficas para o usuário (GUI)

  50. Application Framework (3) • A implementação dos application frameworks é feita por programação orientada a objeto e assim o código específico de cada aplicação pode utilizar a herança das classes existentes no application framework.

More Related