Apresentação sobre Paradigmas de Programação

46
APRESENTAÇÃO SOBRE PARADIGMAS DE PROGRAMAÇÃO Filipe Marques Ribeiro Drisostes

description

Filipe Marques Ribeiro Drisostes. Apresentação sobre Paradigmas de Programação. Tópicos. Programação Concorrente Modelo de Dados Relacional Redes de Petri Programação Orientada a Aspectos. Programação Concorrente. Definição Execução Concorrente Threads Sincronização - PowerPoint PPT Presentation

Transcript of Apresentação sobre Paradigmas de Programação

Page 1: Apresentação sobre Paradigmas de Programação

APRESENTAÇÃO SOBRE PARADIGMAS DE PROGRAMAÇÃO

Filipe Marques Ribeiro Drisostes

Page 2: Apresentação sobre Paradigmas de Programação

Tópicos

Programação Concorrente Modelo de Dados Relacional Redes de Petri Programação Orientada a Aspectos

Page 3: Apresentação sobre Paradigmas de Programação

Programação Concorrente

Definição Execução Concorrente Threads Sincronização Exemplo Prático – Números Primos

Page 4: Apresentação sobre Paradigmas de Programação

Definição

Para um melhor entendimento do conceito

de programação concorrente devemos

saber o que é concorrência.

Concorrência é disputa por recursos ou

juntar se para uma ação ou fim comum.

A programação concorrente é uma técnica

De programação que explora a independência

Temporal de atividades definidas por uma aplicação.

Page 5: Apresentação sobre Paradigmas de Programação

Execução Concorrente

Pseudo-Paralela: execução em um único processador.

Paralela: Execução em vários processadores que compartilham uma memória.

Distribuída: Execução em vários processadores independentes, sem compartilhamento de memória.

Page 6: Apresentação sobre Paradigmas de Programação

Threads

Um thread é um fluxo único de controle sequencial dentro de um programa.

É importante destacar a diferença entre thread e processo. O que diferencia ambas é o espaço de endereçamento. Enquanto várias threads compartilham o mesmo espaço (processo), vários processos possuem diferentes espaços de endereçamento.

Page 7: Apresentação sobre Paradigmas de Programação

Sincronização

É a troca de informações entre duas

tarefas. A sincronização permite controlar

o compartilhamento de dados entre

tarefas. Existem dois tipos de

sincronização, sincronização de

competição e sincronização de

cooperação.

Page 8: Apresentação sobre Paradigmas de Programação

Sincronização

Sincronização de Competição: impede

que duas tarefas acessem uma estrutura

de dados compartilhados ao mesmo

tempo, sob pena da informação perder

sua integridade.

Sincronização de Cooperação: Quando

dois objetos trabalham juntos em uma

determinada tarefa e o objeto A precisa

esperar que o objeto B termine sua

execução para então continuar a sua.

Page 9: Apresentação sobre Paradigmas de Programação

Exemplo Prático – Números Primos

Page 10: Apresentação sobre Paradigmas de Programação

Modelo de Dados Relacional

Page 11: Apresentação sobre Paradigmas de Programação

Modelo de Dados Relacional

Definição Entidades e Relacionamentos Chaves Classificações

Modelo Conceitual Modelo Lógico Modelo Físico

SQL Data Definition Language Data Manipulation Language

Page 12: Apresentação sobre Paradigmas de Programação

Definição

Estudo das informações existentes em um contexto sob observação para construção de um modelo de representação de domínio real.

Page 13: Apresentação sobre Paradigmas de Programação

Entidades e Relacionamentos

Entidades são “objetos” do mundo real que podem ser identificadas de forma única em relação aos outros objetos. Entidades podem ser concretas(pessoas, casa) ou abstratas(departamento, polígono).

Relacionamento são associações entre entidades ou ainda ações que podem ser realizadas de uma entidade sobre outra.

Page 14: Apresentação sobre Paradigmas de Programação

Chaves

Conjunto de atributos que podem identificar unicamente uma entidade. Chaves podem ser primárias ou estrangeiras. Chaves primárias identificam uma entidade. Chaves estrangeiras são atributos de uma entidade que são chaves primárias em outras entidades.

Page 15: Apresentação sobre Paradigmas de Programação

Classificações

Modelo Conceitual Modelo Lógico Modelo Fisico

Page 16: Apresentação sobre Paradigmas de Programação

Modelo Conceitual

Descreve a realidade do ambiente do problema, formado das principais entidades e relacionamentos.

Page 17: Apresentação sobre Paradigmas de Programação

Modelo Conceitual

Page 18: Apresentação sobre Paradigmas de Programação

Modelo Lógico

Estabelece a lógica de relacionamento entre dados. Inicia-se o modelo lógico após a construção do modelo conceitual.

Page 19: Apresentação sobre Paradigmas de Programação

Modelo Lógico

Page 20: Apresentação sobre Paradigmas de Programação

Modelo Físico

Descreve a estrutura física de armazenamento dos dados. É no modelo físico que são definidos tipos de dados, índices, exigência de conteúdo e etc. O modelo físico é representado por uma linguagem de script de criação de banco de dados(em geral SQL)

Page 21: Apresentação sobre Paradigmas de Programação

Modelo Físico

Page 22: Apresentação sobre Paradigmas de Programação

SQL

Structured Query Language (SQL) é uma linguagem usada a construção de banco de dado relacional. A SQL tem como principais funcionalidades a definição e manipulação dos dados, definição de visões e autorização de acesso, e definição de restrição de integridade.

Page 23: Apresentação sobre Paradigmas de Programação

Data Definition Language (DDL)

É através das instruções DDL que são criados os bancos de dados e tabelas, alteração em tabelas e exclusão do banco de dados ou das tabelas

Comandos DDL create database nome_do_BD create table nome_da_tabela drop table nome_da_tabela

Page 24: Apresentação sobre Paradigmas de Programação

Data Manipulation Language (DML)

É através das instruções DML que são realizadas inserções de dados, alterações ou consulta. Vale ressaltar que as instruções DML não modificam a estrutura do banco de dados.

Comandos DML insert into nome_tabela(col1, col2, ...)

values(1, 2, ...) select (col1, col2, ...) from

nome_da_tabela

Page 25: Apresentação sobre Paradigmas de Programação

Redes de Petri

Page 26: Apresentação sobre Paradigmas de Programação

Redes de Petri

Definição Representação Classificação das Redes de Petri

Redes OrdináriasRedes de Alto Nível

Aplicações

Page 27: Apresentação sobre Paradigmas de Programação

Definição

Rede de Petri é uma técnica de modelagem que permite a representação de sistemas, utilizando como alicerce uma forte base matemática . Essa técnica possui a particularidade de permitir modelar sistemas paralelos, concorrentes, assíncronos e não-determiníticos.

Page 28: Apresentação sobre Paradigmas de Programação

Definição

Podemos definir redes de Petri das

seguintes formas: Matrizes, bags,

relações. Nesta apresentação, será

utilizado bags para definir redes de Petri. Bag é uma generalização do conceito de

conjunto que admite a repetição de elementos. Na notação de bags, utiliza-se [ ], enquanto que para denotar conjuntos, utiliza-se { }.

Page 29: Apresentação sobre Paradigmas de Programação

Definição Uma rede de Petri é composta de uma quíntupla

(P, T, I, O, K )tal que P é um conjunto finito e não vazio de posições(lugares), T é o conjunto finito e não vazio de transições, I: TP é um conjunto de bags que representam o mapeamento de transições para as posições de entrada.

O : T → P é um conjunto de bags que representa o mapeamento de transições para lugares de saída K : P → N é o conjunto da capacidades associadas a cada lugar, podendo assumir um valor infinito.

Page 30: Apresentação sobre Paradigmas de Programação

Representação

Redes de Petri podem ser representados como grafos orientados, onde os vértices são chamados de posições(lugares), os arcos possuem pesos e ainda possuem um barra que corta o arco que é chamada de transição. As posições equivalem às variáveis de estado e as transições correspondem às ações realizadas pelo sistema.

Page 31: Apresentação sobre Paradigmas de Programação

Representação

Page 32: Apresentação sobre Paradigmas de Programação

Representação-Exemplo Ciclo repetitivo dos turnos de um dia

Page 33: Apresentação sobre Paradigmas de Programação

Representação-Exemplo Ciclo repetitivo dos turnos de um dia

P = {Manhã, Tarde, Noite} T = {Amanhecer, Entardecer, Anoitecer} I = {I (Amanhecer) = [Noite] I (Entardecer) = [Manhã],

I(Anoitecer) = [Tarde] } O = {O(Amanhecer) = [Manhã],

O(Entardecer) = [Tarde], O(Anoitecer) = [Noite] }

K = {k manhã=1, k tarde =1, k noite =1 }

Page 34: Apresentação sobre Paradigmas de Programação

Classificação das Redes de Petri

Redes Ordinárias: São caracterizadas pelas suas marcações(tokens. que são informações atribuídas aos lugares, para representar o estado da rede em um determinado momento), que são do tipo inteiro e não negativo. As redes ordinárias se subdividem em duas, Rede Binária e Rede Place-Transition

Page 35: Apresentação sobre Paradigmas de Programação

Classificação das Redes de Petri

Rede Binária: Permite apenas um token em cada lugar, e todos os arcos possuem valor unitário.

Rede Place-Transition: Permite o acumulo de marcas no mesmo lugar, assim como valores não unitários para os arcos.

Page 36: Apresentação sobre Paradigmas de Programação

Classificação das Redes de Petri

Redes de Alto Nível: São caracterizadas por suas marcas, que não se restringem apenas ao números, podendo ser agora cores ou objetos. Com isso permite-se a individualização de uma marca, que possibilita maior clareza e um maior (ou menor) nível de abstração ao modelo.

Page 37: Apresentação sobre Paradigmas de Programação

Aplicações das Redes de Petri

Automação de manufatura Circuitos integrados Sistemas de produção

Page 38: Apresentação sobre Paradigmas de Programação

Programação Orientada à Aspectos

Page 39: Apresentação sobre Paradigmas de Programação

Programação Orientada à Aspectos

Definição Conceitos Importantes Hello World Utilizando Programação

Orientada à Aspectos Vantagens

Page 40: Apresentação sobre Paradigmas de Programação

Definição

É um paradigma de programação que provê a separação dos crosscuting concerns introduzindo uma nova unidade de modularização, o aspecto.

Crosscuting concerns são as funcionalidades secundarias de um sistema, como por exemplo, Loggin.

Page 41: Apresentação sobre Paradigmas de Programação

Conceitos Importantes Aspectos: Onde são declarados e

implementados os códigos que expressam as regras de mesclagem das funcionalidades.

Weaving: Processo onde é feita a mesclagem dos modulos do sistema de acordo com os aspectos encontrados.

Join Point: É um ponto identificável do fluxo de um programa. Pode ser uma chamada de método ou a configuração do valor de uma variável. Variadas implementações da orientação a aspectos suportam variados tipos de join point.

Page 42: Apresentação sobre Paradigmas de Programação

Conceitos Importantes

Pointcut: É uma construção que seleciona join points. Depois de capturar um join point é possível especificar as regras de weaving nesses join points, como executar determinada ação antes ou depois da execução desse join point.

Advice: É o código a ser executado em um join point que foi selecionado por um pointcut.

Page 43: Apresentação sobre Paradigmas de Programação

Hello World Utilizando Programação Orientada à Aspectos

Primeiro, cria-se a classe Hello

Em seguida, cria-se o aspecto Hello

Page 44: Apresentação sobre Paradigmas de Programação

Vantagens

Maior Modularização Menor Acoplamento Maior Reusabilidade de Código Facilidade na adição de novas

funcionalidades

Page 46: Apresentação sobre Paradigmas de Programação

FIM

Duvidas?!