Programação Estruturada e OO Aula 1.2 – Introdução a Paradigmas

Propaganda
Programação Estruturada e OO
Aula 1.2 – Introdução a Paradigmas de
Programação
Prof. Bruno Moreno
[email protected]
Motivação
●
Por que existe mais de uma LP?
–
Propósitos diferentes;
–
Avanços tecnológicos;
–
Interesses comerciais (linguagens comerciais);
–
Cultura;
–
Background científico;
2
Motivação
●
Linguagens de programação e linguagens
naturais são análogas?
Léxico
–
Conjunto de
palavras do
idioma;
Sintaxe
Semântica
–
Regras que
constroem as
frases;
–
Refere-se ao
significado
das frases;
–
Estuda a
disposição
das palavras
na frase;
–
Relação
lógica das
palavras;
3
Introdução
●
Uma linguagem de programação possui a parte
léxica, sintática e semântica
–
Léxica: o conjunto de “palavras-chaves” que
formam a linguagem, i.e. a gramática da LP;
–
Sintática: o conjunto de regras que determinam
quais palavras-chaves podem ser combinadas;
–
Semântica: a lógica representada pelo conjunto de
palavras chaves combinadas;
4
Introdução
●
Características de um LP
–
Léxico, sintático e semântico bem definidos;
–
Implementável (executável) com eficiência;
–
Universal
●
Expressa todo e qualquer problema computável;
5
Introdução
●
O que é um paradigma de programação?
–
●
Modelo, padrão ou estilo de programação que
agrupam características comuns;
Diferentes paradigmas de programação:
–
Paradigma Imperativo;
–
Paradigma Funcional;
–
Paradigma Lógico;
–
Paradigma Orientado a Objetos;
6
Tipos de Paradigmas
●
Paradigma Imperativo;
●
Paradigma Funcional;
●
Paradigma Lógico;
●
Paradigma Orientado a Objetos;
7
Tipos de Paradigmas
●
Paradigma Imperativo;
●
Paradigma Funcional;
●
Paradigma Lógico;
●
Paradigma Orientado a Objetos;
8
Paradigma Imperativo
●
Os programas são desenvolvidos de acordo
com o conceito de estado (modelado por
variáveis) e ações que manipulam-no:
Entrada
Programa
Saída
ESTADO
9
Paradigma Imperativo
●
●
Também denominado de procedural, por incluir
subrotinas ou procedimentos como mecanismo
de estruturação;
Primeiro paradigma a surgir e ainda utilizado;
Procedural
=
Imperativo
=
Procedimental
10
Paradigma Imperativo
●
Exemplo: somar os naturais de 1 a 10 (em C):
int total = 0;
for (int i = 1; i<= 10; ++i)
total = total + i;
–
O programa é uma sequência de instruções;
–
O resultado é obtido por diferentes estados das
variáveis i e total;
11
Paradigma Imperativo
●
Exemplo: somar os naturais de 1 a 10 (em C):
int total = 0;
for (int i = 1; i<= 10; ++i)
total = total + i;
–
Simulação:
passo
instrução
i
total
1
total = 0
?
0
2
i = 1
1
0
3
total = total + i
1
1
4
++i
2
1
5
total = total + i
2
3
...
...
...
...
21
total = total + i
10
55
22
++i
11
55
12
Tipos de Paradigmas
●
Paradigma Imperativo;
●
Paradigma Funcional;
●
Paradigma Lógico;
●
Paradigma Orientado a Objetos;
13
Paradigma Funcional
●
●
Os programas desenvolvidos são vistos como
funções que descrevem uma relação explícita e
precisa entre entrada e saída (E/S);
Esse estilo de programação evita estados ou
dados mutáveis;
14
Paradigma Funcional
●
Exemplo: somar os naturais de 1 a 10 (em
Haskell):
sum[..10]
●
Exemplo: somar os naturais de 1 a 10 (em R):
sum(1:10)
●
Basicamente, o programa consiste na
aplicação da função sum à lista de inteiros;
15
Tipos de Paradigmas
●
Paradigma Imperativo;
●
Paradigma Funcional;
●
Paradigma Lógico;
●
Paradigma Orientado a Objetos;
16
Paradigma Lógico
●
●
●
Os programas são desenvolvidos de acordo
com relações entre E/S;
Faz uso da lógica matemática;
Na prática inclui características imperativas por
questões de eficiência;
17
Paradigma Lógico
●
A programação é feita usando inferência
lógical:
–
Se declara fatos a respeito de objetos e seus
relacionamentos;
–
Define-se regras sobre os objetos e seus
relacionamentos;
–
Se faz perguntas sobre os objetos e seus
relacionamentos;
18
Tipos de Paradigmas
●
Paradigma Imperativo;
●
Paradigma Funcional;
●
Paradigma Lógico;
●
Paradigma Orientado a Objetos;
19
Paradigma OO
●
●
●
●
Não é um paradigma no sentido estrito: é uma
subclassificacão do imperativo;
A diferença é mais de metodologia quanto à
concepção e modelagem do sistema;
A grosso modo, uma aplicação é estruturada
em módulos (classes) que agrupam um estado
e operações (métodos) sobre este;
Classes podem ser estendidas e/ou usadas
como tipos (cujos elementos são objetos).
20
Paradigma OO
●
Imperativo:
Entrada
Saída
Programa
ESTADO
●
OO:
Entrada
Programa
Saída
ESTADO
Entrada
Programa
ESTADO
Saída
...
Entrada
Programa
ESTADO
Saída
...
Entrada
Programa
Saída
ESTADO
21
Histórico das LPs
22
Java
●
Popularidade (RedMonk ranking)
23
Java
●
Popularidade (TIOBE ranking)
24
JAVA: Introdução,
Histórico, Conceitos
Básicos
25
Introdução
●
O que é Java?
–
Linguagem de programação OO
●
Década de 90
●
Sun Microsystems
●
Multiplataforma: bytecodes
●
Máquina Virtual Java
26
Bibliografia
27
Histórico
Green
Project
1991
A Sun decidiu lançar uma
nova versão do Oak para
a Internet: applets
Oak→Java JDK 1.0
1995
1996
JDK 1.1
JDK 1.2
1997
1998
Java Swing e
segurança
J2SE,
J2EE e
J2ME
1999
JDK para linux
O *7 foi desenvolvido
usando uma linguagem
específica: Oak.
28
Histórico
Robo enviado a
Marte com JAVA
Abertura do
código de Java
2000
2001
2002
2003
2007
Mais de 50 milhões de
celulares com J2ME
IDE Eclipse; J2ME para
Linux; J2EE patterns
400 grupos de usuários no
mundo; JavaOne com mais de
25 mil desenvolvedores;
Netbeans open-source
29
Histórico
●
Em 2010, a Oracle comprou a Sun
MicroSystems
30
Princípios para criação de Java
1. Simples, OO e familiar
2. Robusta e segura
3. Portável e independente de arquitetura
4. Deve ser executável com alta performance
5. Interpretada, multi-tarefa e dinâmica
31
Bytecodes
32
Bytecodes
●
●
●
●
O código é compilado, gerando um conjunto de
instruções chamado de byte-code;
O byte-code é aplicado à Máquina Virtual Java
(JVM) que se encarrega de interpretar os comandos
para o SO onde o programa está rodando;
Ou seja, a máquina virtual traduz as instruções do
código Java para instruções válidas no SO em que
está rodando;
Esse byte-code poderá então ser interpretado por
qualquer máquina virtual Java (Linux, Windows,
Palm OS, Solari, etc)
33
Compilação e Execução
●
Você pode usar um arquivo texto normal para
programar:
34
Compilação e Execução
●
Após isso, erros podem ser detectados por
meio do processo de compilação usando o
terminal:
–
javac NomeDoSeuArquivoJava.java
●
●
–
Esse comando executa o compilador Java;
Caso o processo de compilação for OK, o compilador
gera os bytecodes (arquivo .class) que pode ser
executado em qualquer local que tenha uma JVM;
java NomeDoSeuArquivoJava
●
Esse comando chama a JVM para executaro seu
programa que foi compilado no passo anterior;
35
Compilação e Execução
●
●
Esse processo pode ser demorado e
trabalhoso dependendo da complexidade do
sistema sendo desenvolvido;
Por isso, existem os IDEs (Integrated
Development Environment)
–
É um ambiente integrado de programação;
–
Apresenta erros de compilação em “tempo real”;
–
Otimiza o trabalho do compilador;
36
IDEs
●
Ambiente de programação
–
Netbeans
37
IDEs
●
Ambiente de programação
–
Eclipse
38
IDEs
●
Ambiente de programação
–
BlueJ
●
●
Focado no nível
introdutório
Ambiente fácil de usar
e propício para o
aprendizado em Java
39
Componentes principais
●
API Java
–
Java tem código aberto e livre
–
API é o conjunto de documentação a respeito do
código de Java.
–
No mundo do desenvolvimento, é comum se
disponbilizar uma API de determinada linguagem.
40
Componentes principais
●
API Java
41
Componentes principais
●
JVM: Java Virtual Machine
–
É uma máquina virtual que executa os bytecodes
de um sistema em Java
–
Cada SO possui uma máquina virtual
–
Um sistema desenvolvido em Java roda em
qualquer máquina virtual
–
É essa arquitetura que proporciona a portabilidade
de Java
42
Componentes principais
●
JVM: Java Virtual Machine
43
Comunidades
●
Grupos de Java
–
guj.com.br
–
soujava.org.br
●
Listas de discussões
●
Grupos no facebook
●
Stackoverflow (em pt e em)
●
–
stackoverflow.com
–
pt.stackoverflow.com
GOOGLE!!!
44
Download