Framework de Bruno Preiss

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

TIPOS ABSTRATOS DE DADOS
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Programação em Java Prof. Maurício Braga
Projeto – Parte II - Exemplos de Diagrama de Colaboração
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
INFORMAÇÕES COMPLEMENTARES
Introdução à Ciência da Computação Linguagens de Programação.
Paulo Marques Hernâni Pedroso
O Modelo de Jesus para Crescimento e Serviço
Engenharia de Software
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Operadores e Funções do LINGO
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Interação entre objetos
Curso de ADMINISTRAÇÃO
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
PERSPECTIVA CONCEITUAL
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
Projetos.
Object Pascal e Delphi Programas e Units.
Sistemas Operacionais
FUNÇÃO MODULAR.
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Introdução à Modelagem Conceitual 1. Conceitos Básicos
Programação orientada a objetos com Java
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Sistemas Operacionais
Conhecendo o Visual Studio.NET
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Aula prática 13 Orientação a Objetos – C++ Parte 1
Taxonomia Profa. Lillian Alvares,
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
É um conjunto de registos dispostos numa estrutura regular que possibilita a reorganização dos mesmos e a produção de informação com a menor redundância.
Projeto Marcas que Eu Gosto 1 PROJETO MARCAS QUE EU GOSTO Estudos Quantitativo de Consumidores Janeiro / 2005.
ACESSO A BASE DE DADOS.
Tipos Abstratos de Dados
Semântica de Linguagens de Programação
DI UFPE Semântica de Java Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College.
Técnicas de Modelagem para Aplicações em Computação Gráfica
Projeto de Banco de Dados
DIEGO RICARDO DE ARAUJO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO INSTITUTO DE CIÊNCIA EXATAS UNIVERSIDADE FEDERAL DE JUIZ DE FORA Seleção de Características.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Orientação a Objetos Parte I
Programação orientada a objectos em C++
Programação Orientada à Objetos
Olhe fixamente para a Bruxa Nariguda
Máquina de Turing Universal
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
SISTEMAS DISTRIBUIDOS Aula 4
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Aula prática 14 Orientação a Objetos – C++ Parte 2
Banco de Dados Aplicado ao Desenvolvimento de Software
1 Baseado em whitepapers/eclipse-overview.pdf Nelson Lago IME/USP 04/2003 A Plataforma Eclipse.
Introdução a Orientação a Objetos
Módulo II Capítulo 1: Orientação a Objetos
Transcrição da apresentação:

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 Características de linguagens que é necessário conhecer Linguagem Java Linguagem C++

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

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

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

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

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)

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

Estruturas de Dados Fundamentais

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

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.

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

Projeto Orientado a Objetos

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

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.

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

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.

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

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

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

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

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”

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

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

Tipos Abstratos de Dados Java

Tipos Abstratos de Dados Java Conceito Padrões de Projeto

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

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

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

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

Hierarquia de Classes do Framework Java de Bruno Preiss

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

Tipos Abstratos de Dados C++

Tipos Abstratos de Dados C++ Conceito Padrões de Projeto

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

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

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

Hierarquia de Classes do Framework C++ de Bruno Preiss

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)

Application Frameworks

Application Frameworks Conceito de Framework Application Framework Application Framework de Bruno Preiss

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

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

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

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

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

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)

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.

Application Frameworks Disponíveis Microsoft Microsoft Foundation Classes (MFC) de 1992 inspirado no Think Class Library (TCL) do Macintosh Borland Object Windows Library (OWL) que deu lugar a Visual Component Library (VCL) Java Abstract Window Toolkit (AWT) para GUI 1995 Java Foundation Classes (JFC) 1997 Incorporação às JFC da interface Swing inspirada na Internet Foundation Classes, da Netscape 1998

Application Framework de Bruno Preiss (1) Criar Projetos com a seguinte composição: Um diretório (ou “package”) com estruturas dos fundamentos da hierarquia de classes e padrões de projeto Um diretório (ou “package”) com as estruturas de dados a utilizar (pilha, fila, lista, árvore, grafo, etc.) Um diretório com a definição dos dados a serem processados Um diretório com a aplicação ou programa principal

Application Framework de Bruno Preiss (2) O diretório das estruturas dos fundamentos é único e reaproveitado sempre Os diretórios das estruturas de dados são um para cada estrutura de dados escolhida (podem ocorrer a implementação por “arrays” e a implementação por listas encadeadas) Para cada novo problema ou aplicação basta fazer a definição dos dados e o programa principal pois todo o resto já está pronto

Application Framework de Bruno Preiss (3) Os sítios de Bruno Preiss para C++e Java, aonde estão disponíveis os fontes, são, respectivamente http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus4/programs/ http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus5/programs/

Fontes Java de Bruno Preiss

Fontes C++ de Bruno Preiss

Projetos

Projetos Conceito de Projeto Projetos em Delphi Projetos em Dev C++ Projetos em JCreator Projetos em Visual C++ Projetos em VB Projetos em JBuilder

Conceito de Projeto Em ambientes de desenvolvimento de programas chama-se de projeto a um conjunto de arquivos e recursos que é utilizado para implementar uma aplicação

Projetos em Delphi Todo o desenvolvimento de aplicações é feito em torno de projetos. Ao se criar uma aplicação Delphi está sendo criado um projeto. Um projeto é uma coleção de arquivos que constitui uma aplicação. Alguns destes arquivos são criados ao tempo de desenvolvimento enquanto outros são gerados automaticamente quando da compilação do código fonte Arquivos de projeto tem a extensão dpr. Contém diretrizes para a construção de uma aplicação ou objeto compartilhado Quando se compila um projeto não interessa aonde residem os arquivos que compõe o projeto

Projetos em Dev C++ Um projeto pode ser considerado como um container que é usado para armazenar todos os elementos necessários para a compilação de um programa

Projetos em JCreator Antes da criação do primeiro arquivo Java deve-se criar um projeto que será associado ao arquivo de programa Java No JCreator, os projetos são criados em Workspaces. Quando se cria um workspace, é criada uma pasta para o armazenamento do novo projeto. Um workspace pode conter diversos projetos Os projetos precisam ter o mesmo nome que o arquivo do programa

Projetos em Visual C++ Arquivos criados para um programa C++ são organizados dentro de um Projeto C++ contido em um workspace Aplicações são desenvolvidas em um Workspace Inicia-se a montagem de aplicações ou criando simultaneamente um projeto e um workspace ou criando um workspace e depois adicionando a ele projeto(s) O desenvolvimento Microsoft eMbedded C++ é caracterizado hierarquicamente por workspace, projetos, e subprojetos Um workspace é um container para o desenvolvimento de projetos Quando se cria nova plataforma cria-se simultaneamente um workspace

Projetos em VB Um projeto é um grupo de arquivos relacionados, usualmente todos os arquivos necessários para o desenvolvimento de um componente de software Arquivos podem ser agrupados em um projeto para a criação de subprojetos Os projetos podem ser definidos de qualquer maneira que faça sentido para o usuário

Projetos em JBuilder Qualquer trabalho em JBuilder é feito dentro de um projeto Um projeto JBuilder é uma estrutura organizacional que contém todos os arquivos necessários para executar a unidade de trabalho definida, incluindo os diretórios nos quais estão os arquivos e todos os caminhos, definições e recursos necessários O usuário é quem decide o que incluir no projeto, que é uma entidade lógica e não física Os arquivos de um projeto podem estar em quaisquer pastas