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

Apresentação sobre Paradigmas de Programação

  • Upload
    callum

  • View
    34

  • Download
    0

Embed Size (px)

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

Citation preview

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

FIM

Duvidas?!