apresentação sobre paradigmas de programação
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 PresentationTRANSCRIPT
APRESENTAÇÃO SOBRE PARADIGMAS DE PROGRAMAÇÃO
Filipe Marques Ribeiro Drisostes
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 Exemplo Prático – Números Primos
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.
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.
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.
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.
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.
Exemplo Prático – Números Primos
Modelo de Dados Relacional
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
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.
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.
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.
Classificações
Modelo Conceitual Modelo Lógico Modelo Fisico
Modelo Conceitual
Descreve a realidade do ambiente do problema, formado das principais entidades e relacionamentos.
Modelo Conceitual
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.
Modelo Lógico
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)
Modelo Físico
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.
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
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
Redes de Petri
Redes de Petri
Definição Representação Classificação das Redes de Petri
Redes OrdináriasRedes de Alto Nível
Aplicações
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.
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 { }.
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.
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.
Representação
Representação-Exemplo Ciclo repetitivo dos turnos de um dia
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 }
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
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.
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.
Aplicações das Redes de Petri
Automação de manufatura Circuitos integrados Sistemas de produção
Programação Orientada à Aspectos
Programação Orientada à Aspectos
Definição Conceitos Importantes Hello World Utilizando Programação
Orientada à Aspectos Vantagens
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.
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.
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.
Hello World Utilizando Programação Orientada à Aspectos
Primeiro, cria-se a classe Hello
Em seguida, cria-se o aspecto Hello
Vantagens
Maior Modularização Menor Acoplamento Maior Reusabilidade de Código Facilidade na adição de novas
funcionalidades
Referências Bibliográficas
http://www.javaframework.org/portal/2010/04/14/o-que-programao-orientada-a-aspectos/
http://www.dca.ufrn.br/~affonso/FTP/DCA409/redes_de_petri.pdf http://
gersonc.anahy.org/ppdrep/04-ProgramacaoConcorrente-PPD.pdf http://www.dsc.ufcg.edu.br/~
jacques/cursos/map/html/threads/threads1.html
FIM
Duvidas?!