• Nenhum resultado encontrado

Paradigmas de análise e desenvolvimento de sistemas. Principais Paradigmas

N/A
N/A
Protected

Academic year: 2021

Share "Paradigmas de análise e desenvolvimento de sistemas. Principais Paradigmas"

Copied!
63
0
0

Texto

(1)

Julho, 2012

Paradigmas de análise e

desenvolvimento de sistemas

Principais Paradigmas

Rosemary Silveira Filgueiras Melo

rosesfmelo@hotmail.com

(2)

Julho, 2012

Tópicos abordados

Conceito de Paradigma

Tipos de Paradigmas

Paradigma Imperativo

Paradigma Declarativo

(3)

Julho, 2012

Conceito de Paradigma

Paradigma

- modelo, padrão ou estilo de programação suportado

por linguaguens que agrupam certas características

comuns.

- fornece e dertermina a visão que o programador

tem sobre a estrutura e execução de um programa

- algumas linguagens foram construídas para

suportar um paradigma específico, outras podem

suportar múltiplos paradigmas

Exemplos.:

-Java e Smalltalk suportam o paradigma orientado a objetos -C++, LISP, Perl, Python suportam múltiplos paradigmas

(4)

Julho, 2012

Tipos de Paradigma

Imperativo

Declarativo

Funcional

Lógico

Orientado a Objetos

(5)

Julho, 2012

Paradigma Imperativo

Programas centrados no conceito de estado

(modelado por variáveis) e ações (comandos) que

modificam o estado.

Expressam uma sequência de comandos para o

computador executar.

Também denominado de paradigma procedural por

incluir mecanismos de subrotinas como forma de

estruturação.

(6)

Julho, 2012

Modelo Computacional do Paradigma Imperativo

(7)

Julho, 2012

Paradigma Imperativo

Exemplo de linguagens Imperativas:

Fortran

Cobol

Algol

Pascal

C

etc

(8)

Julho, 2012

Paradigma Imperativo

Técnicas de programação das linguagens imperativas:

-

Programação estruturada

-

Modularização

(9)

Julho, 2012

Paradigma Imperativo

Programação estruturada:

-

forma de programação que considera que todo

programa se resume a três estruturas:

sequencial

de decisão

(10)

Julho, 2012

Paradigma Imperativo

Modularização:

-

Mecanismo que permite o usuário subdividir seus programas em blocos ou módulos (subrotinas)

-

Estes blocos ou módulos referem-se a um pedaço de código computacional que executa uma função bem definida, que pode ser utilizado várias vezes no programa.

-

Estas funções devem ser criadas para serem genéricas o bastante visando a possibilidade de reutilização de código

.

-

Certas linguagens define dois tipos de subrotinas: as que retornam valores (função) e as que não retornam valores (procedimento). Ex.: linguagem Pascal.

(11)

Julho, 2012

Paradigma Imperativo

Exemplo:

#include <iostream> using namespace std; int fatorial(int x) { int i, aux; aux = 1;

for (i=x; i>=1;i--) aux = aux * i ; return aux; } main () { int n; cout << "Digite um numero inteiro : "; cin >> n; cout << "Fatorial: " <<fatorial(n) <<"\n"; system("PAUSE"); }

(12)

Julho, 2012

Paradigma Imperativo

Recursividade:

-

definição de subrotina que podem invocar a si mesma

Ex.:

#include <iostream> using namespace std; int fatorial (int x) { int aux; if (x==0) return 1; else { aux = x*fatorial(x-1); return aux; } } main () { int n;

cout << "Digite um numero inteiro : "; cin >> n; cout << "Fatorial: " <<fatorial(n) <<"\n"; system("PAUSE"); }

(13)

Julho, 2012

Paradigma Imperativo

Principais elementos das linguagens imperativas

-

Variáveis: simples e compostas (vetores, matrizes e

registros)

-

Definição de tipo (permite definir novos tipos)

-

Comandos de atribuição

-

Expressões aritméticas e lógicas

-

Estrutura sequencial e condicional

-

Estrutura de repetição

-

Subrotinas

(14)

Julho, 2012

Paradigma Imperativo

Exemplo de Vetores

(Variáveis compostas homogêneas Unidimensionais): #include <iostream>

char nome[10];

using namespace std; main ()

{

cout <<"Digite um nome:"; gets(nome);

cout << << "\n“; system("PAUSE"); }

(15)

Julho, 2012

Paradigma Imperativo

Exemplo de Matriz

(Variáveis compostas homogêneas Bidimensionais):

#include <iostream> float M[10][10];

int i,j;

using namespace std; main () {

for(i=0;i<=3;i++) //Leitura dos elementos

for(j=0;j<=3;j++) M[i][j]=i+j;

for(i=0;i<=3;i++) //Impressão da matriz

for(j=0;j<=3;j++)

cout << M[i][j] <<" "; system("PAUSE");

(16)

Julho, 2012

Paradigma Imperativo

Exemplo de registros

(Variáveis compostas heterogêneas):

struct

aluno {

char nome[40];

int matric;

float nota1, nota2;

} aluno1, aluno2;

(17)

Julho, 2012

Paradigma Imperativo

Exemplo de definição de novos tipos de dados: typedef struct tipo_endereco

{ char rua [50]; char bairro [20]; char cidade [30]; long int CEP;

} TEndereco;

typedef struct ficha_pessoal { char nome [50];

long int telefone;

TEndereco endereco; }TFicha; void main(void) { TFicha *ex; .... }

(18)

Julho, 2012

Paradigma Imperativo

Exemplo usando subrotina: (Ling. C)

:

int soma (int x, int y) { int z; z = x + y; return z; } int main () { int a, b; cin >> a; cin >> b;

cout << “soma = “<< soma(a,b); system(“Pause”);

(19)

Julho, 2012

Paradigma Imperativo

Exemplo usando alocação dinâmica:

(usa variáveis chamada de ponteiro para guardar

endereço de memória)

int count = 10;

int *pt;

pt= &count; //atribui o endereço de count a pt

*pt=12; //atribui um novo valor a variável

(20)

Julho, 2012

Paradigma Imperativo

Vantagens

-

eficiência

-

modelagem “natural” de aplicações do mundo real

-

paradigma dominante e bem estabelecido

-

flexível

-

boa legibilidade ao utilizar o modelo estruturado Desvantagens

-

as instruções são baseadas no como e não no o que.

-

mudanças na estrutura dos dados pode acarretar alteração em todas as funções relacionadas (dados separados das funções)

(21)

Julho, 2012

Paradigma Declarativo

Caracteriza-se pelo método preciso de descrever um problema sem se preocupar como este problema será resolvido.

Um programa é dito declarativo quando ele descreve o que ele faz e não como ele funciona.

No paradigma declarativo o programa especifica uma relação ou uma função.

A maioria das linguagens declarativas não constituem uma

linguagem declarativa pura por definição, pois permitem que os algoritmos sejam implementados com detalhes.

(22)

Julho, 2012

Paradigma Declarativo

Outra forma de programação declarativa é o uso de linguagens específicas por domínio.

Ex.: XSLT (transformar documentos XML), SQL (para realizar requisições a banco de dados), ATL (Linguagem de

transformação de Modelos – Atlas), etc.

(23)

Julho, 2012

Paradigma Declarativo

Exemplos na Linguagem SQL (Structured Query Language): Ex1.:

SELECT * FROM cliente

WHERE nome = “Joao” Ex2.:

SELECT Name, ProductNumber, ListPrice AS Price FROM Product

WHERE ProductLine = 'R' AND DaysToManufacture < 4

(24)

Julho, 2012

Paradigma Declarativo

Exemplo na Linguagem ATL:

--testa no contexto UML se a classe que esta sendo transformada esta estereotipada com sensor

helper context UML!Class def:isSensor():Boolean =

self.getAppliedStereotypes()->exists(c|c.name='Sensor'); rule Sensor2EquipMedicao{

from s:UML!Class (s.isSensor()) to tSensor:UML!Class( name <-s.name, generalization <- s.generalization } do{ tSensor.applyStereotype(thisModule.findStereotype('EquipamentoM edicao', 'PerfilPIM'));}

(25)

Julho, 2012

Paradigma Declarativo

Podem ser classificadas em:

Paradigma Lógico

(26)

Julho, 2012

Paradigma Declarativo

Paradigma Lógico

Paradigma que adota o estilo da lógica matemática à programação de computadores.

Se baseia em axiomas (verdades universais) e regras de inferência (regra de transformação sintática) para inferir (deduzir) uma conclusão a partir de um argumento.

O programa formará conclusões imediatas a partir de uma lista de premissas.

A inteligência artificial teve uma influência importante no desenvolvimento da programação lógica.

(27)

Julho, 2012

Paradigma Declarativo

Modelo Computacional do Paradigma Lógico:

Mudança substancial do modelo computacional, pois a execução é baseada em relação entre entrada e saída.

Ex.: um compilador modelado como um programa lógico, relaciona código fonte e destino, portanto pode ser utilizado tanto como um compilador quanto como um decompilador.

(28)

Julho, 2012

Paradigma Declarativo

Exemplo de linguagens que adotam o paradigma lógico:

PLANER

PROLOG

GODEL

(29)

Julho, 2012

Paradigma Declarativo

Exemplo de um programa em Prolog:

(30)

Julho, 2012

Paradigma Declarativo

Paradigma Funcional

Trata a computação como uma avaliação de funções matemáticas, que evita estado ou dados mutáveis.

Um programa é visto como uma função (ou grupo de funções) constituída de outras funções mais simples.

Entende-se como um mapeamento dos valores de entrada nos valores de saída, através de funções.

Enfatiza a aplicação de funções, em contraste com o paradigma imperativo, que enfatiza mudanças no estado do programa.

(31)

Julho, 2012

Paradigma Declarativo

Paradigma Funcional

Não incluem qualquer provisão para atribuição ou dados mutáveis.

O mapeamento entre os dados de entrada e saída são alcançados mais diretamente.

Mais usada academicamente do que no desenvolvimento comercial de software.

(32)

Julho, 2012

Paradigma Declarativo

Modelo Computacional do Paradigma Funcional:

Adota o modelo computacional de função que mapeia entradas em saídas de forma determinística ou direta, através de

funções definidas como na matemática.

(33)

Julho, 2012

Paradigma Declarativo

Exemplo de linguagens que adotam o paradigma

funcional:

APL

LISP

ML

Haskell

Etc.

(34)

Julho, 2012

Paradigma Declarativo

Exemplo de um programa em LISP:

(35)

Julho, 2012

Paradigma Orientado a Objetos

Paradigma de análise, projeto e programação de software baseado na composição e interação de diversas unidades de software denominadas de objetos.

Um programa OO (Orientado a Objetos) consiste de objetos que recebe e envia mensagens, executa processamento e possui estado que ele pode modificar.

Funcionamento de um programa OO se dá através da troca de mensagens entre objetos.

Todo objeto possui método(s) e atributo(s) relacionados que correspondem respectivamente ao comportamento e o estado de cada objeto.

(36)

Julho, 2012

Paradigma Orientado a Objetos

Modelo Computacional do Paradigma Orientado a Objetos:

Num programa OO, as ações (comandos) do programa podem envolver a invocação de métodos que alteram o estado de um objeto específico, ao invés de um estado único de aplicação.

(37)

Julho, 2012

Paradigma Orientado a Objetos

Comparação entre o paradigma procedural e orientado a objetos

Paradigma procedural enxerga um programa como um conjunto de funções que alteram dados.

Paradigma OO enxerga um programa como uma coletânea de objetos que interagem entre si, possui características própria representadas pelos seus atributos e operações.

(38)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de linguagens de programação OO:

Simula 67

Smalltalk

Eiffel

Object Pascal

C++

Java

etc

(39)

Julho, 2012

Paradigma Orientado a Objetos

Principais conceitos utilizados no paradigma OO:

Classe

Objeto / instância de uma classe

Atributo

Método

(40)

Julho, 2012

Paradigma Orientado a Objetos

Principais conceitos utilizados neste paradigma:

Herança (generalização)

Encapsulamento

(41)

Julho, 2012

Paradigma Orientado a Objetos

Classe

Representa uma idéia ou conceito simples, que define as características de uma coleção de objetos.

Consiste na descrição de métodos e atributos pertencentes a todos os objetos desta classe.

Similar a um tipo abstrato de dados, define a estrutura interna e um conjunto de operações que todos os objetos instâncias da classe irão possuir.

Exemplo de classes: pessoa, aluno, professor, livro, faculdade, etc.

(42)

Julho, 2012

Paradigma Orientado a Objetos

Classe

Representação de uma classe usando notação simbólica:

Atributos

Métodos

(43)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de declaração de uma Classe em Java:

(44)

Julho, 2012

Paradigma Orientado a Objetos

Objeto

Representa uma instância de uma classe, analogamente há uma variável que corresponde a um tipo de dado específico.

Um objeto é capaz de armazenar estados através de seus atributos, reagir a mensagens enviadas, assim como se relacionar e enviar mensagens a outros objetos.

Exemplo de objetos da classe Pessoa: João, José, Maria, etc.

Exemplo de objetos da classe Faculdade: ESTÁCIO, UNIFACS, AREA1, etc

(45)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de Objeto:

(46)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de criação de um objeto em Java:

(47)

Julho, 2012

Paradigma Orientado a Objetos

Atributo

Consiste em um dado ou informação de estado, para o qual cada objeto de uma classe tem seu próprio valor.

Ex.: Classe funcionário

atributos: nome, endereço, telefone, CPF, ...

Os atributos possuem valores . Ex.: Nome: João;

Endereço: Rua E, Casa 9

O conjunto de valores dos atributos de um determinado objeto é chamado de estado.

(48)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de declaração de atributo de uma classe em

Java:

(49)

Julho, 2012

Paradigma Orientado a Objetos

Método

Consiste na descrição de uma operação que um objeto deve executar quando receber uma mensagem (semelhante a

subrotina).

Um método em uma classe é apenas uma definição.

Normalmente uma classe possui diversos métodos.

Dentro de um programa a utilização de um método deve afetar apenas um objeto em particular.

(50)

Julho, 2012

Paradigma Orientado a Objetos

Método

Exemplo: Classe Cachorro Métodos Latir Sentar Comer Morder

(51)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de definição de um método em Java:

(52)

Julho, 2012

Paradigma Orientado a Objetos

Mensagem

Chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe.

Funciona como uma fábrica que recebe uma ordem de produção

(mensagem de solicitação), processa esta ordem (operações), utilizando matéria-prima (atributos) e gera um produto final (mensagem de resposta).

(53)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de invocação de um método em Java:

(54)

Julho, 2012

Paradigma Orientado a Objetos

Herança

Mecanismo pelo qual uma classe (subclasse) pode estender uma outra classe (super-classe).

A subclasse herda todos os componentes da classe pai, como atributos e métodos.

Qualquer propriedade herdada pode ser redefinida na definição da subclasse, substituindo a definição herdada.

(55)

Julho, 2012

Paradigma Orientado a Objetos

Herança

(56)

Julho, 2012

Paradigma Orientado a Objetos

Herança

Pode haver vários níveis de hierarquia.

(57)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo utilizando herança em Java:

(58)

Julho, 2012

Paradigma Orientado a Objetos

Encapsulamento

Consiste na separação de aspectos internos e

externos de um objeto.

É utilizado para impedir o acesso direto ao estado de

um objeto (seus atributos), disponibilizando apenas

os métodos que alteram este estado.

(59)

Julho, 2012

Paradigma Orientado a Objetos

Exemplo de encapsulamento da classe funcionário:

(60)

Julho, 2012

Paradigma Orientado a Objetos

Polimorfismo

Propriedade que permite que a mesma mensagem

seja enviada a diferentes objetos e que cada objeto

execute a operação que é apropriada à sua classe.

Funções/métodos com o mesmo nome mas

assinaturas diferentes (sobrecarga).

(61)

Julho, 2012

Paradigma Orientado a Objetos

Polimorfismo

(62)

Julho, 2012

Paradigma Orientado a Objetos

(63)

Julho, 2012

Cronograma histórico de linguagens de programação e

paradigmas

Referências

Documentos relacionados

3.5.2 Quanto aos compostos estudados para os quais foram feitos cálculos de estrutura eletrônica utilizando o programa ZINDO98, onde foram obtidos orbitais moleculares para o

A partir da análise comparativa entre dois bairros de Aracaju que participam do programa de gerenciamento de resíduos sólidos, Siqueira Campos e Inácio Barbosa, foi possível

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

Os funcionários do Centro de Memória do Vasco da Gama trabalharam em conjunto e reforçaram o discurso que o projeto deveria ser definitivo dentro do clube,

O segundo capítulo aborda de forma mais pormenorizada todas as atividades desenvolvidas ao longo do estágio e conforme o definido no plano de estágio, no qual

Amador-Patarroyo e colaboradores 24 avaliaram uma coorte de 410 pacientes com SS e observaram uma prevalência de outras doenças autoimunes, como

Após ter cursado a disciplina, o aluno deverá ser capaz de conhecer os elementos do clima, do solo, da paisagem bem como as práticas de uso e manejo que levam o solo ao melhoramento

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por