UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis 2015.2 Reutilização de classes Característica das linguagens orientadas a objetos que permite reutilizar classes já prontas e testadas em diferentes aplicações. É possível criar novas classes com base em classes já existentes e adicionando novos métodos / atributos (herança). Dois mecanismos básicos para reutilização é Delegação (ou composição) e herança. Delegação ou Composição Neste método se cria um atributo do tipo da classe base na nova classe. Após isso, cria-se um método para ter acesso aos métodos e atributos do novo atributo criado. O objetivo é delegar o trabalho para as classes base. Os objetos não fazem sentido fora do contexto que os contém. Ex: Pedido -> Item. Caso não exista um pedido, não tem sentido existir item. Delegação ou Composição • Exemplo de delegação: Agregação Mesma coisa da Delegação ou Composição com uma diferença básica: os objetos na Agregação fazem sentido fora do contexto que os contém. Ex: Animais -> Pantera. Caso a classe Animal deixe de Existir, a classe Pantera fará sentido, podendo ser utilizada em outra classe. Polimorfismo É a criação de classe que tem o relacionamento é-um-tipo-de em relação à outra classe. Ou seja, Pantera é um tipo de Felino. Polimorfismo permite que um método que receba a classe pai (Felino) também possa receber qualquer classe que seja um tipo de Felino. Polimorfismo • Exemplo de polimorfismo: Polimorfismo • Classe Pantera que herda de Felino: • Classe implementando método que aceita Polimorfismo: Exercícios Exercício! Criar as classes Camisa , Calça, Sapato e Homem. A classe Homem será uma agregação das classes Camisa, Calça e Sapato. Criar um método homemVeste que irá montar a vestimenta do homem chamando o método getNome de cada uma das classes da agregação. Exercícios Criar uma classe Pedido com os atributos: Criar a classe Item com os atributos: Código Data Itens (Array) do tipo Item. Código Nome Quantidade Como será a agregação neste caso? Exercícios Criar a classe Fruto com o atributo nome (métodos get e set) e as classes filhas Jambo, Pêra, Maçã sobrescrevendo o método getNome e setNome. Criar uma classe Árvore com o método defineFruto podendo receber, via polimorfismo, vários tipos de Fruto. Como fazer? Dúvidas?