movimento de OOP – Separar o que é fundamental em OO do que é acidental. – Identificar os princípios básicos que devem guiar o design de software OO, com ou sem o apoio da sua linguagem de programação – Entender que OO não diz respeito a classes e métodos.
only messaging, local retention and protection, hiding of state- process, and extreme late-binding of all things. It can be done in Smalltalk and Lisp.
I thought of objects being like biological cells and/or individual computers on a network only able to communicate with messages … – It was really important for me to finally understand LISP and then using this understanding make much nicer and smaller and more powerful late bound under-structures.
funciona outro objeto. • Um objeto não consegue fazer nada além de reter o próprio estado e enviar mensagens a outros objetos. • Portanto, é impossível um objeto alterar seu estado sem antes ter recebido uma mensagem
recebe uma mensagem ? • A função de despacho (dispatch function) é quem decide qual função/procedimento deverá ser invocada de acordo com a mensagem recebida.
de despacho é algo escondido, interno ao runtime. • A função de despacho fica cada vez mais complicada quando começamos a embutir suporte a polimorfismo, herança e tipos na linguagem.
a semantica do funcionamento do sistema • Métodos definem o controle de fluxo e as instruções que a máquina deve executar para responder uma mensagem. Vários métodos podem responder uma mesma mensagem, e (deveriam) obedecem a semantica da mesma
completamente todos os contextos em que ele pode ser usado. • Se dois objetos respondem ao mesmo conjunto de mensagens, nenhum terceiro objeto seria capaz de distringuir esses dois objetos. Isso tem um nome: encapsulamento
uma *interface* que deve ser respeitada por objetos inter-substituíveis • A derivação de *classificações* e *hierarquias* de objetos fica então a cargo do ouvinte ;)
bem quando as mensagens podem ser respondidas por um único objeto (lembre-se da analogia célula/máquina) • Esse exemplo mostra um caso impossível de manter o open-closed principle.
usa pode te dar um jeito bacana de configurar a função de despacho. – Quem manifesta OO é o programador, e não a linguagem. Nada te impede de escrever COBOL em Javascript ou Ruby.
propósito de dar forma a essa visão de OO que foi descrita. • Basicamente, design patterns são técnicas para obedecer os princípios de OO diante de certas famílias de problemas