Escolar Documentos
Profissional Documentos
Cultura Documentos
Novas caracter�sticas
Heran�a m�ltipla ocorre quando uma classe � filha de mais de uma classe. Mixin pode
ser considerado um tipo especifico de heran�a, embora haja uma diferen�a crucial: a
classe da qual s�o herdadas as caracter�sticas n�o � considerada pai/m�e.
Polimorfismo � quando alguma rotina pode ser chamada para objetos diferentes. Por
exemplo, assuma que a fun��o retornaCorPrincipal() possa ser chamada tanto em um
objeto da classe Imagem quanto da classe Video. O polimorfismo � um tipo de
abstra��o que simplifica c�digos externos � hierarquia de classes e uma separa��o
forte das responsabilidades (separation of concerns).
N�o h� consenso de que a POO realmente seja �til para modelar a realidade, tampouco
se modelar a realidade � um objetivo pertinente. A premissa de que 'a POO �
apropriada para modelar sistemas complexos com comportamentos complexos', contrasta
com o renomado princ�pio KISS. Linguagens naturais n�o compartilham da estrat�gia
usual na POO: 'priorizar coisas ao inv�s de a��es', o que leva muitas vezes a
representa��es contorcidas.[4] A POO muitas vezes � realizada sem uma representa��o
transparente do fluxo de controle (ordem das instru��es), o que tem se tornado uma
desvantagem com a relev�ncia, acentuada nos �ltimos anos, do processamento
paralelo. Outras cr�ticas usuais incluem: a POO � 'intrinsecamente menos eficiente'
que o c�digo procedural, em geral demora mais para compilar, e tende a ser
extremamente complexa.
Joe Armstrong: "O problema com linguagens orientadas a objetos � que voc� tem todo
esse ambiente impl�cito que elas levam consigo. Voc� queria uma banana mas o que
voc� conseguiu foi um gorila segurando a banana e uma selva inteira."[5]
Steve Yegge: "Por que voc� percorreria tamanhas dist�ncias para coloca uma parte da
fala [substantivos] em um pedestal?"[6]
Eric Steven Raymond: "A POO encoraja programas com muitas camadas e destr�i a
transpar�ncia."[7]
Da passagem de mensagens entre objetos: o cliente (um objeto) emite uma mensagem
para o servidor (outro objeto) em que solicita um servi�o (i.e. que uma rotina
qualquer seja executada) que pode implicar a emiss�o/retorno de uma resposta ao
cliente. Um servidor pode ser cliente de outros (sub-)servidores. Esta resposta
pode ser s�ncrona (quando o cliente aguarda a resposta do servidor para executar
qualquer outra instru��o) ou ass�ncrona (envolvendo paralelismo de atividades).
A modularidade de um programa � uma medida que reflete o quanto ele � composto por
partes separadas (chamadas de m�dulos). Na POO, a modularidade � preferencialmente
(ou basicamente) centrada das TADs, o que pode ser chamado de modularidade centrada
nos dados e possui as seguintes caracter�sticas:
Reuso
Nota: a modifica��o deve ser usada com cuidado. A modifica��o direta da rotina ou
objeto implica dificuldades quando alguma vers�o nova da biblioteca � utilizada.
Preferencialmente, as modifica��es devem ser feitas de forma modular, i.e.
separando as contribui��es locais das originais. Na POO, a heran�a ameniza este
problema. Veja tamb�m o aberto/fechado.
A��o nos objetos
'N�o pergunte o que um sistema faz, pergunte o que ele faz a que' (Meyer[2])
A��es em geral:
implementadas por chamadas de procedimentos.
com frequ�ncia, mas n�o sempre, parametrizadas (com par�metros de entrada).
A��es em objetos:
ativadas via mensagens.
uma mensagem sempre possui um objeto receptor
uma mensagem � similar a uma chamada de procedimento com ao menos um
par�metro
uma mensagem ativa uma opera��o (um m�todo).
o objeto receptor identifica a opera��o apropriada (busca/lookup de
m�todo)