Orientação a Objetos (OO) LPG II - Java Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios da Orientação a Objetos Conceitos e Terminologia Classes e Objetos Encapsulamento Métodos e Mensagens Herança Polimorfismo Ligação Dinâmica Orientação a Objetos (OO) 2 Programação Procedimental Programação Orientada a Objetos Proc1 Proc2 Proc3 processos e separados processos e encapsulados Foco nos procedimentos (algoritmos) que alteram os Estado e comportamento separados fazendo com que estruturas de sejam enviadas a funções ou procedimentos Foco em conceitos, representados por, sobre os quais são definidas as operações Melhor modelagem do mundo real, pois objetos possuem atributos e atividades associadas à eles Agrupa estado e comportamento num mesmo módulo e controla o acesso a essas propriedades (encapsulamento) Orientação a Objetos (OO) 3 Orientação a Objetos (OO) 4
Objetivos da Orientação a Objetos Reduzir a complexidade, aumentar a confiabilidade Produzir software mais confiável Proteção aos : encapsulamento Aumentar a produtividade de software Reutilização de código: classes Extensão da biblioteca de classes: Definição de subclasses (herança) Implementação de novos métodos Redefinição de métodos (polimorfismo) Conceitos Fundamentais e Terminologia OO Objetos entidades básicas do software OO, são instâncias de classes Classes conjunto de objetos com as mesmas características, organizadas em hierarquia Atributos estruturas de dos objetos Métodos operações que atuam sobre os Mensagens chamadas a operações (métodos) Orientação a Objetos (OO) 5 Orientação a Objetos (OO) 6 Conceitos Fundamentais e Terminologia OO Encapsulamento proteção: e comportamento especificados num mesmo módulo Comunicação entre objetos objetos comunicam-se através de troca de mensagens enviadas para seus métodos Herança subclasse herda propriedades da superclasse Polimorfismo mesma mensagem implementada de diferentes formas Ligação dinâmica ligação mensagem-método em tempo de execução Classes Classe é um modelo estático que representa um conceito ou artefato de implementação Exemplos: Pessoa, Veiculo, Tabela, Janela, Data Um conceito pode ser descrito por atributos Pessoa: nome, data nascimento, nacionalidade, sexo... Data: dia, mês, ano Os atributos podem sofrer operações Leitura, escrita, atribuição, cópia, comparação... Orientação a Objetos (OO) 7 Orientação a Objetos (OO) 8
Classes Objetos (instância de classe) É um tipo definido que contém uma estrutura de e um conjunto de operações que atuam sobre estes, servindo de modelo para a criação de objetos (instâncias) Encapsula os e as operações e controla o acesso a estas propriedades Organizadas em hierarquia especialização ou generalização definição de subclasses. Ex: Carro, moto, ônibus... subclasse herda propriedades da superclasse. adição de novas estruturas e/ou métodos redefinição de métodos Entidade dinâmica criada a partir de uma classe e possui os sobre os quais são realizadas as operações disponíveis em sua classe Encapsulam (estado + comportamento) estado = do objeto (variáveis de instância) comportamento = métodos Objetos reagem a mensagens mensagens são chamadas a métodos Cada objeto é responsável por seu conjunto de Exemplo: Objeto da classe Carro: Fiat Palio, Chassi n 7879713 Orientação a Objetos (OO) 9 Orientação a Objetos (OO) 10 Classe e Objeto Métodos Classe: estática, modelo de objetos Classe: Empregado nome depto salario atualizasalario calculaextras var de instância () comportamento (métodos) Objeto: dinâmico, instância de classe atualizasalario Maria Compras R$ 1000 Métodos são operações que atuam sobre os O efeito da chamada de um método depende Do que o método faz De seus argumentos e Do estado em que o objeto se encontra Exemplo sacar um determinando valor de uma conta, tem efeito diferente se a conta tem saldo ou não Podem ser classificados de acordo com o serviço que prestam Acessadores: consultam e retornam o estado do objeto (gettters) Alteradores: alteram o estado do objeto (setters) Iteradores: agem sobre diferentes componentes do objeto (busca,...) Construtores: criam um objeto e/ou iniciam seu estado Destrutores: liberam ou destroem o objeto Há linguagens em que é possível definir métodos de classe além de métodos de objeto (instância) Orientação a Objetos (OO) 11 Orientação a Objetos (OO) 12
Encapsulamento Proteção aos e operações: agrupa estado e comportamento num mesmo módulo e controla o acesso a essas propriedades Esconde a implementação deste agrupamento, não é necessário se preocupar com o como para se usar É implementado definindo se um método ou atributo é Público: visto pelos métodos de outras classes Privado: visto apenas pelos métodos da própria classe Protegido: visto pelos métodos da própria classe ou de classes herdeiras da classe Restringe o acesso aos objetos da classe, fornecendo um conjunto público de operações sobre estes (protocolo ou interface) Herança Filosofia básica para a solução de problemas OO Relação estática entre classes (generalização e especialização) Classes são organizadas dentro de uma hierarquia Na definição de subclasses subclasse herda propriedades da superclasse. pode haver adição de novas estruturas e/ou métodos pode haver redefinição de métodos Criação/destruição de um objeto na classe especialização implica na criação/destruição de um objeto na classe genérica Orientação a Objetos (OO) 13 Orientação a Objetos (OO) 14 Herança Herança Simples e Múltipla ESTUDANTE Simples Objeto herda propriedades diretamente de apenas uma classe Múltipla Objeto herda propriedades de duas ou mais superclasses GENERALIZAÇÃO A X ESTUDANTE DE DE GRADUAÇÃO ESTUDANTE DE DE PÓS- PÓS- GRADUAÇÃO ESPECIALIZAÇÃO B C Y Z Hierarquia de Classes D E W Orientação a Objetos (OO) 15 Orientação a Objetos (OO) 16
Herança Simples e Múltipla - Exemplos Herança (relacionamento é um ) Simples Múltipla Pessoa Pessoa Conta Docente Funcionário Docente Funcionário graduação pós-grad. graduação pós-grad. Poupança Especial Assistente Herança não é seletiva, todas propriedades do objeto genérico são herdadas Orientação a Objetos (OO) 17 Orientação a Objetos (OO) 18 Agregação (relacionamento é parte de ) Polimorfismo Dar formas distintas a uma mesma função ou dado Reutilização Conta saque A saque Poupança Especial saque B O2 O1 Agregação não implica em herança de propriedades Indica que um objeto contém como atributo outro objeto mesma mensagem sendo enviada a objetos de classes distintas (implementadas de diferentes formas) Orientação a Objetos (OO) 19 Orientação a Objetos (OO) 20
Ligação Dinâmica (dynamic binding) Correspondência de Termos binding ligação de chamada de subrotina ao código a ser executado early binding - em tempo de compilação late binding - em tempo de execução OO Objeto Classe Mensagem Procedimental Variável dinâmica (ponteiro) Tipo Chamada de subrotina em POO Método Subrotina (função/procedimento) ligação mensagem a método herança + polimorfismo dynamic binding Herança Polimorfismo Orientação a Objetos (OO) 21 Orientação a Objetos (OO) 22 Desenvolvimento de Programas OO Referências Foco em conceitos Informação encapsulada Funções não estão mais ligadas ao programa, mas, ao objeto Grande reutilização de código Todo objeto tem sua responsabilidade Objetos se comunicam através de mensagens Sistema é visto como um conjunto de objetos que cooperam entre si para atingir um objetivo DEITEL, H. M. & DEITEL, P. J. Java: como Programar. 4ª ed. Porto Alegre: Bookman, 2003 PRICE, A. Material de apoio da disciplina. Mestrado em Ciência da Computação, UFRGS, 2001. Orientação a Objetos (OO) 23 Orientação a Objetos (OO) 24