Olá
Pessoal Boa Tarde, nesse post vamos tentar dar um overview sobre os
principais paradigmas da programação.
O
que é um paradigma? Um paradigma segundo a definição do wikipedia,
é um “modelo digno de ser seguido”, no âmbito da programação
temos dois paradigmas, modelos, principais:
Paradigma
da Programação Estruturada.
Qualquer programa pode ser implementada,
utilizando três estruturas básicas:
Sequência:
Indica uma sequência de tarefas (segmentos
do código), à serem executados para a realização do programa.
Condicional:
Durante a execução do programa podemos
escolher qual fluxo seguir baseado em condições lógicas.
Laço de Repetição:
Permite a execução repetitiva de alguma
tarefa
A programação estruturada tem por
objetivo realizar uma estrutura lógica clara, assim como fazer um
código simples.
A unidade básica de modularização da
programação estruturada é a chamada “função”.
Uma função é um segmento de código,
independente do código principal que pode ser executado inúmeras
vezes durante à execução do programa.
Dessa forma, a programação estruturada
divide o programa em funções, de forma a ter um programa mais
organizado. E com a ajuda de laços de repetição, condicionais e
sequência executa uma determinada tarefa.
Exemplos
de linguagens estruturadas, Pascal, C, Fortran etc
Paradigma da Programação Orientada a Objetos.
Na
Programação Orientada a Objetos POO, a idéia é aproximar o mundo
real ao mundo virtual.
O
mundo real está cheio
de objetos por exemplo carros, pessoas, profissões,calculadoras
etc... tudo pode ser um
objeto. Na POO, esses objetos do mundo real tentam de alguma forma
ser modelados em entidades chamadas tambem de “objetos” no mundo
virtual.
Na
POO, o programa é visto como um conjunto de objetos capazes de
interagir entre si, com o objetivo de cumprir uma certa tarefa.
O
Objetivo da POO é criar um código que seja reutilizável, intuitivo
e de fácil manutenção.
As
estruturas básicas do POO são:
Classe:
Estrutura
de dados que contém variáveis,
e funções , que são chamadas de métodos. Seria como um template.
Objeto:
Um
objeto é uma instância da classe.
Exemplo de POO, imaginemos que nos
foi solicitado um programa que calcule o equivalente em anos humanos
à idade de um cachorro. Considerar a
equivalência
1ano cachorro = 7 anos humanos. No momento de escrever esse post meu cachorro de 11 anos estava aqui nos meus pés e me veio na cabeça essa equivalência.
A
primeira coisa que precisamos definir é a classe cachorro, um
cachorro pode ter certos atributos como nome, raça, cor, idade
altura peso etc.
Em
linguagem python a classe ficaria da seguinte forma, tomando em
consideração os atributos (variavéis), nome, raça, cor e idade.
class
cachorro(object):
#Construtor
do objeto
def
__init__(self,nome, raca,cor,idade):
self.nome
= nome
self.raca
= raca
self.idade
= idade
Agora
precisamos definir a função que vai nos retornar ê equivalencia em
anos humanos. Essa função é chamada de método em POO, e a mesma
irá ser definida dentro da classe cachorro.
def
idadeeqhumanos(self):
#Faz
o calculo da idade equivalente
idadeeq=self.idade*7
#Retorna
a idade equivalente
return
idadeeq
Além
disso vamos criar uma outra função que nos de um print na tela à
idade do cachorro:
def
getidade(self):
return
self.idade
Colocando
tudo junto vamos ter:
#!/usr/bin/python
class
cachorro(object):
#Construtor
do objeto
def
__init__(self,nome, raca,cor,idade):
self.nome
= nome
self.raca
= raca
self.idade
= idade
def
idadeeqhumanos(self):
#Faz
o calculo da idade equivalente
idadeeq=self.idade*7
#Retorna
a idade equivalente
return
idadeeq
def
getidade(self):
#Print
em tela da idade atual do cachorro
return
self.idade
#Meu
primeiro objeto cachorro de nome whisky
whisky=cachorro("whisky","viralata","marrom",11)
#Meu
segundo objeto cachorro de nome bruno
bruno=cachorro("bruno","viralata","branco",2)
#Print
do calculo da idade equivalente
print
("Idade do cachorro %s em idade Humana %s" %
(whisky.getidade(),whisky.idadeeqhumanos()))
print
("Idade do cachorro %s em idade Humana %s" %
(bruno.getidade(),bruno.idadeeqhumanos()))
Não
se preocupem se não entendem o código linha por linha, o importante
é ter a noção
de como é a programação orientada à objetos.
Como
podem ter percebido a POO é um pouco mais complexa que a programação
estrutura, ela tem um nível de abstração mais elevado. Porém
podem ficar tranquilos, como já tinha comentado em posts anteriores
o objetivo de curso é criar programas que agilizem as nossas tarefas
no dia a dia, e não virar, (pelo menos não agora :) ) desenvolvedores de software, e para isso a
programação estrutura se encaixa perfeitamente.
Exemplos
de linguagem orientada a objetos são java, C++, Python, sim python é
uma liguagem orientada à objetos porém nada impede de utilizar a
mesma utilizando o paradigma de programação estruturada.
Agora
vou lhes mostrar um exemplo e vamos passar ele para código tanto da
forma estruturada como orientada a objetos.
Nos
foi solicitado um programa que receba como entrada dois números
inteiros positivos e mostre como resultado a soma dos mesmos.
Utilizando
Programação Estruturada:
#!/usr/bin/python
#Funcao
soma, recebe como parametros duas variaveis
def
soma(A,B):
#Executa
a soma, porem primeiro faz um cast das variaveis passando elas para numero inteiro
soma=int(A)
+ int(B)
#retorna
o resultado da soma
return
soma
#MAIN
i=0
#Solicitando
as variaveis a serem somadas
A=raw_input("Insera
um numero: ")
i+=1
B=raw_input("Insera
um numero: ")
i+=1
#Executando
a soma e fazendo o print do resultado
print
("A soma eh: %s" % soma(A,B))
Utilizando
Programação Orientada Objetos:
#!/usr/bin/python
#Definindo
Clase Variaveis
class
Variaveis:
numberVariaveis=0
#Construtor,
as variaveis vao ter sempre o valor inicial de cero
def
__init__(self, valor=0):
self.valor=valor
Variaveis.numberVariaveis+=1
#Metodo
que solicita a entrada de um numero inteiro
def
inPutValor(self):
self.valor=raw_input("Insera
um numero inteiro: ")
#Metodo
que imprime o valor atual do objeto
def
displayValor(self):
print
("Valor Atual da Variavel %s: %s" %
(Variaveis.numberVariaveis,self.valor))
#Definindo
a Clase calculadora
class
Calculadora:
#Construtor,
o objeto vai ter dois argumentos de entrada
def
__init__(self, valor1, valor2):
self.valor1=valor1
self.valor2=valor2
#Metodo
soma, vai somar os valores das variaveis
def
soma(self):
self.soma=int(self.valor1)
+ int(self.valor2)
print
("A soma eh: %s" % self.soma)
#MAIN
print
"Criando Primeira Variavel"
#Crio
o primeiro objeto da classe Variaveis
A=
Variaveis()
#Verifico
o valor inicial das variaveis
A.displayValor()
#Chamo
o metodo inPutValor, para armazenar os valores das variaveis a serem
somadas
A.inPutValor()
#Faco
um print dos valores inseridos
A.displayValor()
print
"-----------------------------"
print
"Criando Segunda Variavel"
#O
mesmo para uma segunda variavel
B
= Variaveis()
B.displayValor()
B.inPutValor()
B.displayValor()
#Crio
um objeto da classe calculadora, tendo como argumentos os atributos
dos objetos variaveis
myCalculadora=Calculadora(A.valor,B.valor)
#Chamo
o metodo soma
myCalculadora.soma()
#END
Como
podem ver o programa estruturado é muito mais simples,
porém a versão orientada à objetos é mais escalável,
por exemplo e se
eu quiser saber a
quantidade
de números que foram somados?. No programa estruturado toda vez que
criar um novo número preciso acrescentar manualmente a
variável
“i”
em uma unidade “i+=1”.
No programa POO isso já esta definido no atributo numberVariaveis=0
o
qual é incrementado toda vez que um objeto é criado.
Uma
outra vantagem da POO é a reutilização de código, por exemplo se
eu quiser além da soma, uma soma binária posso criar uma classe
chamada “CalculadoraBinaria” a qual vai ser filha da classe
“Calculadora” e vai herdar seus métodos.
O
resumo desse post, seria que basicamente temos dois paradigmas
principais de programação sendo o primeiro chamado de “Programação
Estruturada” onde, com a ajuda de blocos de sequência, decisão e
repetição conseguimos executar uma determinada tarefa, e em segundo
lugar temos “Programação Orientada a Objetos”, onde com a ajuda
de Classes e Objetos, interatuando entre si conseguimos executar uma
tarefa.
Por
hoje é isso ai, novamente fiquem tranquilos se não entenderem ao
100% os códigos exemplos mostrados nesse post, na medida que irem
aprendendo mais sobre python as coisas começam
a ficar mais claras. Semana que vem vamos programar o nosso primeiro programa em python o famoso "Olá Mundo".
Aqui lhes deixo os link dos três programas utilizados hoje, se puderem rodar os mesmos nas VMs que já instalaram. Caso tenham alguma dificuldade em executar os mesmos favor me avisar.
Abcs e Muito Obrigado
Um comentário:
Interessante!!! Obrigado por compartilhar e continue escrevendo!
Postar um comentário