Prévia do material em texto
23/05/2022
1
PARADIGMAS DE LINGUAGENS
DE PROGRAMAÇÃO EM PYTHON
Aula 11 – Paradigmas Orientado a
Objetos, Funcional e Lógico.
Prof. Ronaldo Candido
ronaldo.candido@estacio.br 2022.1
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Conteúdo Programático
1. Paradigma orientado a objeto.
2. Objetos e Classes.
3. Abstração de Classes.
4. Paradigma Funcional.
5. Paradigma Lógico.
6. Atividade verificadora de aprendizagem.
7. Aprenda+.
Objetivos da aula
• Apresentar o paradigma orientado a objetos e sua importância para a modelagem de
sistemas.
1
2
23/05/2022
2
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Situação-problema
• Os paradigmas de programação são um modelo, uma metodologia de programação.
Você já conhece o paradigma conhecido como programação estruturada que utiliza
subprogramas e três estruturas básicas: sequência, seleção e repetição. Seus códigos
ficam em um mesmo bloco, sendo mais difícil e demorado realizar alterações pois é
necessário verificar se outro trecho de código depende dele. Vamos supor que um
determinado software possui uma função de conexão com um banco de dados, a qual
é utilizada em diversos pontos dele e que é utilizada de forma corriqueira em outros
softwares.
• Como você poderia reutilizar esse código ? De que forma poderia ser disponibilizado ?
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Paradigmas de Linguagens de Programação
• Os paradigmas orientado a objetos, estruturado e concorrente estão contidos
numa classificação maior, a das LPs imperativas, que é caracterizada pelos
conceitos de variáveis, atribuição e valor. Isso se deve à troca de estados pelas
mudanças nos conteúdos das variáveis (estado da memória do computador), ou
seja, às propriedades e ao funcionamento da máquina de Von Neumman.
3
4
23/05/2022
3
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Paradigma Orientado a Objetos
• Os paradigmas de programação são metodologias de programação. Já conhecemos
o paradigma imperativo conhecido como programação estruturada que utiliza
subprogramas e três estruturas básicas: sequência, seleção e repetição. Seus
códigos ficam em um mesmo bloco, sendo mais difícil e demorado realizar
alterações pois é necessário verificar se outro trecho de código depende dele.
• Algumas linguagens, como o Python, oferecem tipos abstratos de dados a partir da
técnica de Encapsulamento, onde ocorre o agrupamento de sub-rotinas e seus
dados, usando o conceito de Classes. Linguagens originárias :
SIMULA 67 : Primeira Linguagem OO, projetada para realizar
simulações.
SMALLTALK (1983) : O termo POO é introduzido e torna o processo de
construção de aplicações acessível a qualquer usuário.
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Principais Linguagens OO
• Maior índice de reaproveitamento de código.
• Maior facilidade de manutenção.
• Maior confiabilidade no código.
• Maior facilidade de gerenciamento do código.
• Maior robustez.
• Extensão da biblioteca de classes.
• Definição de subclasses (herança).
• Implementação de novos métodos.
• Redefinição de métodos (polimorfismo).
5
6
23/05/2022
4
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Objetos e Classes
• Alguns autores abordam objeto como:
Uma coisa material ou abstrata que pode ser percebida pelos sentidos e descrita por meio
das suas características, comportamentos e estado atual.
• Objetos são substantivos do domínio do problema.
• Todo objeto é a instância de apenas uma classe.
• A comunicação entre objetos é realizada por troca de mensagens. Já uma classe é
um modelo de objetos.
carro esportivo carro de passeio carro rural
Classe: Veículo
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Objetos e Classes (continuação)
• Modelo de Classe :
aluno1
aluno2
aluno3
7
8
23/05/2022
5
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Objetos e Classes (continuação)
• As classes definem a estrutura e o comportamento de um tipo de objeto. Cada
classe é um modelo estático que permite extrair um conjunto de características
do conceito que representa. Os dados chamamos de ATRIBUTOS ou PROPRIEDADES
e as funções são os MÉTODOS :
Diagrama de classe no padrão UML
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Abstração de Classes
• São abstrações de objetos do mundo real.
• Cada classe deve representar um conceito :
Exemplos: Pessoa, Veiculo, Tabela, Janela.
• Um conceito pode ser descrito por atributos. Exemplos :
Pessoa: nome, data de nascimento, nacionalidade, sexo, idade.
Veículo: marca, modelo, tipo, ano.
Data: dia, mês, ano.
• Os atributos podem sofrer operações :
Leitura, escrita, atribuição, cópia, comparação, adição.
9
10
23/05/2022
6
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Usando o paradigma orientado a objetos
• Os dados e as funções são definidos em uma classe para modelar os objetos. Toda
classe tem três compartimentos:
Seu nome (Conta);
Seus atributos (Número, Nome, Saldo, Limite);
Seus métodos (as assinaturas dos métodos das classes: criarConta(): void; e
mostrarSaldoLimite(saldolimite : double): double).
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Exemplo de OO em Python
#Carro.py - definindo a classe
class Carro:
#atributos
chassi = '000000000000'
cor = 1
motor = '2.0'
litros = 0
#construtor
def __init__(self,chassi,cor,motor,litros):
self.chassi = chassi
self.cor = cor
self.motor = motor
self.litros = litros
#métodos
def ligar(self):
print('Carro ligado...')
def tem_Gasolina(self):
if (self.litros > 0):
return True
else:
return False
self indica algo da própria classe !!!
11
12
23/05/2022
7
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Exemplo de OO em Python (continuação)
#programa_Carro.py
from Carro import Carro
#criando o objeto
carro1 = Carro('9ASWX000001',2,1.8,0)
#exibindo os dados
print('Novo carro :\nChassi - %s' %carro1.chassi)
print('Cor: ', ('Azul' if carro1.cor==1 else 'Branco'))
print ("Motor: ", carro1.motor)
#executando os métodos
if (carro1.tem_Gasolina()==False):
print('Precisa abastecer')
else:
carro1.ligar()
Este programa utiliza
a classe Carro !!!
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Paradigma Funcional
• O paradigma funcional nasceu na década de 1960 motivado pela necessidade de
implementação de aplicações no campo da Inteligência Artificial (IA): computação
simbólica, prova de teoremas, sistema baseado em regras e processamento de
linguagem natural (falada e escrita).
• As linguagens funcionais mais populares são LISP e Prolog, mas existem ainda
Scheme, ASpecT, Calm, Haskell, etc.
• Normalmente, as linguagens funcionais são interpretadas; contudo, também
podem ser compiladas.
• Uma linguagem funcional possui:
Conjunto de funções primitivas.
Conjunto de formas funcionais para construir funções complexas a partir das primitivas.
Estruturas (listas) para representar dados.
13
14
23/05/2022
8
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Exemplo01 em linguagem Haskell
module Main where
-- função fatorial
factorial n = if n == 0 then 1 else n * factorial (n - 1)
-- função principal
main = do putStrLn "Quanto é 5! ?"
xchamado de declarativo, ele surgiu nos anos 1970. Sua vinda oferecia uma
perspectiva diferente de tudo que se fazia naquela época, cujo predomínio das LPs
estruturadas expressava a lógica do programa sob a forma de algoritmos escritos na
linguagem.
• O paradigma lógico declara os objetivos do programa - e não sua solução. Na
programação lógica, os objetivos são estabelecidos por intermédio de um conjunto de
regras; por isso, às vezes, ela e ́ chamada de programação baseada em regras. Ele tem
duas grandes vertentes de aplicação: campo da IA e acesso de informações em bancos
de dados.
• No segmento da IA, a LP Prolog tem sido a preferida. Em outros campos dela, temos a
linguagem Mycin, também declarativa, para modelar sistemas especializados. No
campo de banco de dados, o predomínio absoluto é da LP SQL (Structured Query
Language).
15
16
23/05/2022
9
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Exemplo02 em SQL
/* Criando uma tabela em SQL com os campos Id, Nome e Idade*/
CREATE TABLE tbTeste(id int NOT NULL,
nome varchar(80), idade int, PRIMARY KEY(id));
/* Inserindo três registros na tabela */
INSERT INTO tbTeste VALUES(1, 'Joao',25);
INSERT INTO tbTeste VALUES(2, 'Maria',19);
INSERT INTO tbTeste VALUES(3, 'Ana',56);
/* Mostrando todos os registros da tabela ordenado pelo Nome */
SELECT * FROM tbTeste order by nome;
/* Mostrando o total de registros e a soma das idades */
SELECT count(*), sum(idade) FROM tbTeste ;
Execute no
onlinegdb.com
em SQLite !!!
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Prática de exemplos em Python
#Classe Conta.py - definindo a classe
class Conta:
#atributos da classe
numero = 0
nome = ''
saldo = 0.00
limite = 0.00
#construtor
def __init__(self,numero,nome,saldo,limite):
self.numero = numero
self.nome = nome
self.saldo = saldo
self.limite = limite
#métodos (funções)
def criarConta(self):
print('Conta criada para ',self.nome)
def mostrarSaldoLimite(self):
print('Saldo: R$ ',self.saldo)
print('limite:R$ ',self.limite)
self indica algo da própria classe !!!
Outras linguagens usam a palavra this.
17
18
23/05/2022
10
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Prática de exemplos em Python (continuação)
#programa_Conta.py
from Conta import Conta
#entrada de dados
num = int(input(‘Número da conta: ’))
nome = input(‘Nome: ‘)
limite = input(‘Limite: ‘)
#criando o objeto
c1 = Conta(num,nome,0,limite)
c1.criarConta()
c1.saldo = 100
#exibindo os dados
c1.mostrarSaldoLimite()
Este programa utiliza
a classe Conta !!!
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
• Codificar os exemplos mostrados.
• Acessar o site e resolver os exercícios 4 e 5.
Atividade verificadora de aprendizagem
19
20
23/05/2022
11
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Aprenda +
• COSTA, S. "Uma visão muito breve sobre o paradigma funcional". Disponível em
. Acesso em: 23 mai.
2022.
• Python Brasil. "Python e Programação Orientada a Objeto". Disponível em
. Acesso em: 23 mai. 2022.
• Python Brasil. "Principios da Programação Funcional em Python". Disponível em:
. Acesso em: 23 mai. 2022.
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Aprenda + (continuação)
• Atividade autônoma Aura :
Questão 1) (FUNCERN – IF-RN, 2017) (Adaptada). Analise o seguinte código escrito em Python, que
define a estrutura da classe ContaBancaria:
class ContaBancaria:
num_contas = 0
def __init__(self, agencia, numero, saldo):
self.agencia=agencia
self.numero=numero
self.saldo=saldo
ContaBancaria.num_contas +=1
def __del__(self):
ContaBancaria.num_contas -=1
def depositar (self,valor):
self.saldo = self.saldo + valor
def sacar (self,valor): self.saldo = self.saldo – valor
def consultarSaldo(self): return self.saldo
Sobre a classe descrita e as regras de
programação orientada a objetos em Python,
indique a alternativa correta :
a) criação de objetos chama primeiro o método
__init__() e, em seguida, o __new__().
b) palavra self deve ser fornecida como
argumento em todos os métodos de instâncias.
c) variável num_contas é encapsulada e
individual para cada instância da classe.
d) palavra @static escrita antes da definição do
método sacar() torna o método estático.
e) estamos diante de situação onde há herança.
21
22
23/05/2022
12
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
Aprenda + (continuação)
Questão 2) (SUGEP-UFRPE, 2016) Considere as afirmações abaixo, sobre os paradigmas de
linguagens de programação.
1) As linguagens de programação Python, Ruby, C#, Cython e Lua são multiparadigmáticas e
podem ser classificadas, pelo menos, nos paradigmas Orientado a Objetos, Funcional e
Imperativo.
2) As linguagens de programação Object-Pascal (Delphi), Python, C++ e Java, embora deem
suporte à Orientação a Objetos (OO), não são completamente orientadas a objetos.
3) As linguagens de programação Smalltalk e Ruby são completamente orientadas a objetos,
uma vez que todo valor de dados é um objeto e todas as operações são vias chamadas de
métodos. Está(ão) correta(s):
a) 1, 2 e 3.
b) 2 e 3, apenas.
c) 1 e 2, apenas.
d) 1 e 3, apenas.
e) 3, apenas.
AULA 11
PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO EM PYTHON
Prof. Ronaldo Candido
BORGES, L. E. Python para Desenvolvedores. Parte IV: Orientação a objetos. 2a. ed. Rio
de Janeiro: Novatec, 2014.
PERKOVIC, L. Introdução à Computação Usando Python - Um Foco no Desenvolvimento de
Aplicações. 1a. ed. Rio de Janeiro: LTC, 2016. Disponível em:
. Acesso em:
14 fev. 2022.
SEBESTA, R. W. Conceitos de Linguagens de Programação. 11a. ed. Porto Alegre:
Bookman, 2018. Disponível em:
. Acesso em: 14
fev. 2022.
Referências
23
24
23/05/2022
13
Prof. Ronaldo Candido
ronaldo.candido@estacio.br
Dúvidas, sugestões ou análises ???
PARADIGMAS DE LINGUAGENS
DE PROGRAMAÇÃO EM PYTHON
25