Indo além oo usando programação orientada a aspectos
técnicas orientadas a objetos (OO) são construídas sobre o princípio de que como responsabilidades e preocupações podem ser coesa agrupados e encapsulado em uma entidade - como uma classe. No entanto, algumas responsabilidades não podem ser encapsulados usando as técnicas padrão disponíveis em linguagens OO. Essas responsabilidades são chamados interesses transversais porque “atravessam” múltiplas partes de um programa. Logging é uma preocupação, tais transversal porque você deve implementar o registro em cada parte do sistema. No entanto, a única maneira de certificar-se de todos os componentes do sistema logs de si mesmo, e de uma forma padrão, é inserir o código manualmente sempre que necessário.
orientada a aspectos de programação (AOP) ferramentas permitem que você especificar em um lugar em seu programa como você pretende abordar uma preocupação transversal. As ferramentas em seguida, gerar a implementação e inseri-lo em todos os lugares necessários em seu código.
O exemplo seguinte mostra o uso de AOP na implementação de uma pilha.
AddLogging aspecto {- push (ItemType * item) {AddLogging.info (@"item de empurrar", Item)} - (ItemType *) pop {AddLogging.Info (@"item de popping", ReturnedItem) -} // Outro código transversal}.