UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis 2015.2 Delegação ou composição Objetivo – Delegar ações a quem as sabe fazer. Várias classes podem ser agrupadas em uma só, sendo esta nova classe invocada na classe Principal. Classes precisam ser relacionadas entre si. Exemplos? Delegação ou composição Agregação Conjunto de classes não relacionadas em uma nova classe. Classes de pacotes diferentes podem ser agregadas em uma única classe por necessidade da lógica do negócio. Classe agregadora é instanciada na classe Principal. Exemplo? Agregação Polimorfismo Um mesmo objeto pode assumir diferentes formas, bastando que as formas “sejam um” ou “um tipo do” objeto pai. Facilita o desacoplamento quanto maior for a abstração. Exemplo? Polimorfismo É UM Classes Abstratas Modelo comportamental a ser seguido por objetos que “sejam uma” implementação do modelo com alguma(s) característica(s) particulares (valor dos atributos e/ou implementação de ações/comportamentos diferentes). Não pode ser instanciada. Possui métodos abstratos e não abstratos. Pode herdar de apenas uma classe, Interfaces Modelo estrutural a ser seguido para garantir que todos os objetos sejam o que dizem ser, ou seja, um contrato a ser assinado por todas as classes que se comprometem em ter a mesma característica/funcionalidade. Não pode ser instanciada. Nível máximo de abstração. Nível máximo de desacoplamento. Garante a mesma visão do sistema por todas as equipes de desenvolvedores (espalhadas geograficamente). Fundamental para garantir boas práticas de programação. Fundamental para utilização de Design Patterns (Padrões de Projeto). Abordagem de métodos diferente das classes abstratas: enquanto na interface se definem métodos estruturais, nas classes abstratas se definem métodos comportamentais (ações). Serve como estrutura para classes Abstratas. Classes podem implementar diversas interfaces. Interfaces Por que utilizar interfaces ao invés de apenas Classes Abstratas? O pai do Java responde! Interfaces É preciso conhecer o comportamento da classe Pai para saber como a filha irá se comportar (quebra o encapsulamento); Mudanças na classe Pai irão interferir no comportamento das classes filhas, podendo “quebrá-las”; Uso de interfaces é uma melhor forma de herança múltipla (que não é contemplada em Java). Exemplos - Interfaces No Core do Java: Readable – utilizada por classes que tenham capacidade de ler alguma informação de entrada. É implementada por objetos de um mesmo tipo (buffer de leitura) que possuem a estrutura necessária para ler uma informação. Comparable – utilizada por objetos que tenham a capacidade de serem comparados entre si. É implementada por diversos objetos distintos que podem ser Interface Readable Interface Comparable Classes cumprem contrato, seguem a estrutura ditada pela interface. Dita estrutur a Segue estrutura e dita comportamen to