Orientada a Objetos
(Object Oriented
Programming - OOP)
Trata campos de dados
(propriedades) como objetos
manipulados por métodos
pré-definidos
Objetos, métodos, passagem de
mensagens, abstração de dados,
intefaces (código), controladores de
acesso a propriedades,
encapsulamento, polimorfismo,
herança (inheritance), sobrecarga
Common Lisp, C++,
C#, Eiffel, Java, PHP,
Python, Ruby, Scala
Orientada a Aspecto
(Aspect-Oriented
Programming - AOP)
Usado para um conjunto
específico de problemas:
Cross-cutting concerns. UM
concern é algo que aparece
em diferentes lugares em
uma aplicação (autorização
e controle de acesso via
login, por exemplo).
Possui pelo menos 2
componentes: uma forma de
centralizar a funcionalidade
para lidar com um concern e
uma forma especificar onde
na aplicação esta
funcionalidade será
acrescentada sem alterar o
código.
Classes e os relacionamentos
entre elas: herança (um
relacionamento que é
configurado em tempo de
compilação e composição
(quando objetos são agrupados
em tempo de execução)
Um estilo de
programação
imperativa, com
mais estruturas
lógicas
Structogramas,
indentação, pode
ter uso limitado
de instruções
GOTO
C, C++,
Java,
Python
Estruturas de controles
executadas em sequência,
seleção de fluxo (instruções if
e else), iteração (while, for, do
while, foreach), recursão
(chamando a mesma
subrotina repetidamente até
uma determinada condição),
blocos e subrotinas