►METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: [email protected] 1 Aprimorar a compreensão dos diversos aspectos da orientação a objetos; Introduzir os conceitos de: • Encapsulamento; • Herança; • Polimorfismo. Exercitar os tópicos visto em aula via o exemplo Geometrix. 2 Os doze termos da OO; Revisão dos conceitos da aula passada; Encapsulamento; Herança; Polimorfismo; Exemplos. 3 Objeto Método Mensagem Classe Subclasse Instância Herança Encapsulamento Abstração Polimorfismo Atributo Agregação 4 Objetos vs Classes vs Instâncias • Objetos – abstração das entidades do mundo real. Levantamento de atributos e comportamentos; • Classes – template para criação de objetos funcionais(Instâncias) • Instâncias – realização funcional do objeto 5 métodos variáveis 6 CPF Registrar cartão nome RG cartão carrinho atributos Finalizar compra Atualizar endereço métodos Adiciona item Validar cartão 7 Objetos são uma forma de programar simples e poderosa: • Podem ser definidos e mantidos independentemente uns dos outros; • Definem um universo auto-contido; • Tudo que o objeto “sabe” e representa é definido por suas variáveis/atributos; • Tudo que o objeto “pode fazer” é expresso por seus métodos. 8 O sistema Geometrix é um programa que permite o desenho e cálculos relacionados a figuras geométricas tais como pontos, linha, retângulos, círculos, esferas, elipses, cubos, curvas, polígonos e polilinhas. Algumas figuras tais como retângulos e círculos podem ser capazes de informar suas áreas, perímetros dentre outras métricas geométricas. Todas as figuras podem ser redimensionadas (exceto os pontos), rotacionadas, escalonadas, ter suas coordenadas atualizadas ou movidas por meio de um offset definido pelo usuário. O conjunto de todas as figuras desenhadas em um sessão do programa compõem um diagrama que pode ser salvo ou carregado de um arquivo salvo em disco. 9 Em Java public class<nome_classe> { private<attr1>; private<método> (argumentos) {...} // interface public<método> (argumentos) {...} } Exercício, defina classes java para os objetos levantados a partir do exemplo Geometrix. 10 Encapsulamento é um conceito fundamental em programação OO. A idéia que permeia o conceito de encapsulamento é isolar o conteúdo (atributos e métodos) de um objeto do mundo exterior (outros objetos). Devido ao encapsulamento objetos atuam tal como “caixas pretas”. Sua mecânica e sua estrutura não importam, apenas a sua interface, ou seja, a porção do objeto publicada ou deixada visível para o mundo exterior. 11 Métodos públicos interface mensagens Métodos privados atributos 12 Idéia geral: Objetos podem ser parte integrante de outros objetos. • Instâncias de um dado objeto podem ser atributos de outro objeto! Agregar objetos é utilizar objetos como atributos de objetos mais complexos. 13 Objeto Linha Ponto p1; Ponto p2; 14 Poli – Várias , Morfos – Formas Métodos declarados em diferentes escopos ou até mesmo no mesmo escopo podem ter o mesmo nome. Três tipos: • Sobrecarga de Função: funções com mesmo nome; • Inclusão: Uma referência para classes mãe pode apontar para uma instância de uma classe filha. • Paramétrico: permite que uma função ou tipo de dados seja definido parametricamente de modo que ele lide com valores de maneira similar sem depender do tipo do dado em questão 15 Ponto () { x = 0; y = 0; } Ponto (intnx, intny) {x =nx; y = ny;} 16 public class Animal { string talk(); } public class Gato extends Animal { string talk() {return “Miau!”} } public class Cachorro extends Animal { string talk() {return “Auau!”} } static void write (Animal a) { System.out.println(a.talk()); } static void main () { write (new Gato()); write (new Cachorro()); } 17 class List <T> { class Node <T> { T elem; Node <T> next; } Node <T> head; int length() {…} } 18 Outra forma de definir objetos a partir de objetos pré-existentes; Herança é fundamentada visto que certos objetos podem ser vistos como especializações de objetos mais genéricos pré-existentes. Animal ave mamífero primata peixe inseto anfíbio verme fera 19 Objetos mais complexos podem ser definidos como extensões de objetos mais simples: Usuário Padrão Admin 20 Com relação a herança de classes, é possível definir uma classe como sendo abstrata. Este tipo especial de classe não pode ser instanciada e serve apenas para definir uma estrutura e interface uniforme a ser compartilhada por todas as subclasses. 21 Programação OO utiliza um vocabulário específico; Relação entre objetos, classes e instâncias; Encapsulamento define o escopo dos objetos „information hiding“; Agragação permite que objetos complexos sejam definidos como uma composição de objetos mais simples Herança permite que objetos mais complexos sejam definidos como uma extensão de um objeto mais simples 22 D. A. Taylor, Object-Oriented Technology: A Manager’s Guide. Adson-Wesley Publishing Company, Inc. 1990. R. S. Wazlawick, Análise e Projeto de Sistemas de Informação Orientados a Objetos. Ed. Campus, 2004. H. M. Deitel, P. J. Deitel. Java™ Como Programar. Bookman, 3rd Ed, 2000. 23