Procedural
Um exemplo de programação de paradigma procedural poderia ser uma receita de bolo :
1. Pegue uma tigela
2. Separe trigo, ovos, açúcar, fermento, etc.
3. Jogue tudo dentro da tigela
4. Os ovos estão com casca ?
5. Não: vá para o passo 7
6. Sim: tire as cascas e volte ao passo 3
7. Misture tudo
8. Ponha no forno
9. Divirta-se
Funcional
Um exemplo de programação de paradigma funcional da mesma receita de bolo seria:
funcao prepararBolo(a,b,c,d)
Pegue a
Separe b, c, d, e
Jogue tudo dentro de a
Os b estão com casca ?
Não: vá para o passo 7
Sim: tire as cascas e volte ao passo 3
Misture tudo
retornar bolomisturado
funcao assar(bolo)
Ponha bolo no forno
retorna bolo
Vazilhame=tigela
ingrediente1=trigo
ingrediente2=ovos
ingrediente3=acucar
prepararBolo(Vazilhame,ingrediente1,ingrediente2,ingrediente3)
assar (bolomisturado)
Orientado a Objeto
Um exemplo de OO, veja diagrama e codigo abaixo:
Classe Tigela é Vasilhame
Propriedade Cor = Azul
Propriedade Capacidade = 2 Kg
Propriedade Quebra = Verdadeiro
FimDaClasse
Classe Ingrediente é Alimento
Propriedade ÉTrigo = Falso
Propriedade ÉOvo = Falso
Propriedade ÉAçúcar = Falso
Propriedade ÉFermento = Falso
Propriedade Perecível = Verdadeiro
Evento EstáEstragado
Execute JoguarNoLixo
FimDoEvento
Procedimento JogarNoLixo
Se existe Lixeira então
Coloque nela
Senão
Jogue pela janela
FimDoProcedimento
FimDaClasse
Classe AlimentosQueEngordam é Alimento
Propriedade AumentaColesterol = Verdadeiro
Propriedade CausaInfarto = Verdadeiro
FimDaClasse
Classe ComedorCompulsivo é Humano
Função EstáGordo recebe Peso retorna Resposta
Se Peso é maior que 100 kg
Resposta = Verdadeiro
Senão
Resposta = Falso
FimDaFunção
Evento AoSentirFome
Execute ComerUmBolo
FimDoEvento
Procedimento ComerUmBolo
Se EstáGordo(150 Kg) = Verdadeiro
Saia deste Procedimento
Senão
Execute FazerUmBolo
Execute Comer
FimDoProcedimento
FimDaClasse
Objeto JoãozinhoPesoPesado é ComedorCompulsivo
Evento AoFicar15MinutosSemComer
Dispare o Evento AoSentirFome
FimDoEvento
FimDoObjeto
Objeto Bolo é AlimentosQueEngordam
Propriedade Sabor = Jiló
Propriedade TemGlacê = Verdadeira
Use Tigela
Use Ingrediente
Objeto MinhaTigela é uma Tigela
Cor = Verde
FimDoObjeto
Objeto Trigo é Ingrediente
ÉTrigo = Verdadeiro
FimDoObjeto
Objeto Ovo é Ingrediente
ÉOvo = Verdadeiro
FimDoObjeto
Objeto Açúcar é Ingrediente
Éaçúcar = Verdadeiro
FimDoObjeto
Objeto Fermento é Ingrediente
ÉFermento = Verdadeiro
FimDoObjeto
Procedimento FazerUmBolo
Mova Trigo para Tigela
Mova Ovo para Tigela
Se CheirouMal dispare EstáEstragado
Mova Açúcar para Tigela
Mmova Fermento para Tigela
Mmisture tudo
Leve ao forno
FimDoProcedimento
FimDoObjeto {Bolo}
FimDoPrograma.
Conceitos OO
- Classe é uma construção
genérica que define propriedades, métodos e funções que serão usados
por objetos ou outras classes. Toda classe é “filha” de alguma outra
classe “mãe”, que por sua vez é filha de alguma outra, e assim
hierarquicamente até chegar a classe mais alta, que seria a “matriarca”
de todas. Em nosso exemplo, definimos várias classes derivadas de
outras, cada uma com seus métodos e propriedades:Tigela, derivada de Vasilhame; Ingrediente, derivada de Alimento;AlimentosQueEngordam, derivada de Alimentos.
- Objeto, na teoria OOP, é
uma instância de alguma classe e, efetivamente, a forma que temos de
interagir com o programa. Um objeto sempre pertence a alguma classe e
herda dela todas as suas propriedades e métodos, além de poder definir
os seus próprios ou redefinir os que foram herdados. No exemplo foram
criados vários objetos : JoãozinhoPesoPesado, da classe Humanos; Bolo,
da classe Alimentos; Tigela, da classe Vasilhame. Note que o objeto
Tigela foi criado dentro do objeto Bolo. Isto é uma característica da
OOP: um objeto pode conter outros objetos, que por sua vez podem conter
outros e assim sucessivamente. Um objeto contido em outro objeto é
chamado objeto-filho e, conseqüentemente, um objeto que contém outro é
chamado objeto-pai. Observe que isto não acontece com as classes :uma
classe nunca contém ou está contida em outra classe. Ela é derivada de
alguma classe ancestral e poderá ser a origem de alguma classe
descendente.
- Propriedade (ou atributo)
é uma característica de um objeto ou de uma classe. No exemplo, o
objeto Bolo tem duas propriedades, Sabor e TemGlace; a classe Tigela
tem as propriedades Cor, Capacidade e Quebra.
- Encapsulação é uma
característica da OOP na qual os objetos têm mecanismos internos que
ficam totalmente ocultos do usuário. Por isto um objeto muitas vezes é
considerado uma “caixa-preta”. Você utiliza um objeto que faz
determinadas coisas dependendo de algum evento ou valor de alguma
propriedade, mas não precisa necessariamente saber como ele faz isto.
No exemplo, você pode utilizar o objeto Bolo sem precisar saber em
detalhes o que acontece dentro do método FazerOBolo.
- Método (ou ação) é alguma
operação realizada pelo objeto ou pela classe. No exemplo, a classe
ComedorCompulsivo tem os métodos AoSentirFome e ComerUmBolo.
- Herança é a capacidade
que uma classe ou objeto têm de herdar características e métodos de sua
classe ancestral e, se for o caso, modificá-los. No nosso exemplo, o
objeto MinhaTigela, definido dentro do objeto Bolo, herdou todas as
propriedades de sua classe Tigela (Cor, Capacidade e Quebra) e alterou
uma delas (Cor = Verde).
- Poliformismo é a
capacidade que objetos diferentes têm de reagir da sua maneira a um
mesmo evento. Por exemplo, para o objeto JoãozinhoPesoPesado, o evento
AoSentirFome dispara o método ComerUmBolo ; já para um objeto Cavalo,
que seria de outra classe, o mesmo evento dispararia o método
ComerCapim.
- Ligação é o ato de um
objeto ou classe conectar uma ação sua a outro objeto ou classe. No
exemplo, o evento ComerUmBolo, da classe ComedorCompulsivo, dispara o
evento FazerUmBolo do objeto Bolo.