Objetos







Conceitos



  • 1. Abstração:
    • Ressaltar os aspectos essenciais de um dado objeto, descartando aspectos desnecessários



  • 2. Atributos:
    • Uma propriedade de um objeto identificada por um nome. Atributos são valores dos dados que caracterizam os objetos.Um atributo tem um valor único para um objeto



  • 3. Operação:
    • Um serviço que é requisitado a um objeto, que é parte de seu comportamento em resposta à solicitações externas. Uma operação pode ter parâmetros. De forma simples, operação é uma ação ou transformação realizada por um objeto ou sofrido por ele.



  • 4. Encapsulamento de informações:
    • Um objeto contem informações que não são acessíveis a outros objetos



  • 5. Mensagens:
    • Objetos se comunicam através de mensagens, isto é,sinais enviados de um objeto a outro, requisitante de um serviço,através da execução de uma operação pelo objeto requisitado



  • 6. Polimorfismo:
    • Várias formas, ou seja, refere-se a vários comportamentos que uma mesma operação pode assumir, assim como a capacidade de uma variável referir-se a diferentes objetos,que preenchem certas responsabilidades em função da mensagem que lhes é passada.



Exercícios


Desenvolver para cada projeto, os exercícios abaixo:

  • 1. Abstração:
    • Objeto:
      • Coisas Tangíveis: elementos que têm existência concreta, que ocupam lugar no espaço.
        • Ex: Meio de Transporte (avião, carro, barco, navios, etc);
      • Funções: percepção dos objetos através da função por eles exercida (papel, atribuição, classificação, capacitação, etc).
        • Ex: Organização (órgãos funcionais - venda, suporte, despacho de mercadorias, etc), especialistas (médicos, engenheiros, etc), cliente (pessoa atendida), atendente (pessoa que atende), etc;
      • Eventos ou Ocorrências: alguns objetos só conseguem ser individualizados ou percebidos enquanto uma certa ação se desenrola (identifica-se características que tornam determinado fato materializável).
        • Ex: vôo comercial, acidente de trânsito, jogo de futebol, etc.
      • Interações: resultantes das associações entre objetos em função de um processo executado - cada objeto participante da interação preserva suas características não sendo impactados pela materialização da interação.
        • Ex: compra de um imóvel, adoção de uma criança, venda de um produto;
      • Especificações: são elementos que definem características de outros objetos.
        • Ex: modelos de carro (cor, dimensões, etc), espécies animais (mamíferos, carnívoros, gatinhos. lulinhas, esponjinhas, etc.)
    • Exercício:
      • Destacar 3 objetos


  • 2. Atributos:
    • Atributos:
      • Destacar 3 atributos para cada objeto


  • 3. Operações:
    • Operações:
      • Destacar 3 operações para cada objeto


  1. BagMap
  2. SafeCar
  3. Gerenciamento Rápido
  4. Pause Break
  5. Casa Inteligente
  6. Sistema de Controle de Tráfego
  7. Vovó Moderna
  8. Auto Rescue
  9. Porta e rampa automática para deficientes
  10. Phantom
  11. eHouse
  12. WeBuy
  13. Simulador de Provas
  14. Controle de Estoque e Cardápio
  15. CFA app - Controle de frequência acadêmica
  16. UFU Mobile


  • Propriedade segundo a qual vários métodos podem existir com o mesmo nome mas com comportamento diferente
    • Ao receber uma mensagem para efetuar uma Operação, é o objeto quem determina como a operação deve ser efetuada


  • Com o polimorfismo pode-se trabalhar com qualquer representação do objeto. Por exemplo, aluno e professor são objetos diferentes, porém ambos são pessoas, assim é possível trabalhar com os dois tipos diferentes utilizando o tipo pessoa, claro que com as limitações de pessoa.
  • Permite que um método produza resultados diferentes dependendo do objeto ao qual é aplicado.
  • A mesma invocação pode produzir 'muitas formas' de resultados.


  • Exemplos
    • A operação mover pode atuar diferentemente nas classes Janela e PeçadeXadrez
    • A operação Calcular_Salário atua diferentemente nas classes funcionário comissionado e funcionário assalariado
    • Uma bola de futebol e uma camisa de um determinado time são artigos esportivos, mais o cálculo deles em uma venda pode ser calculado de formas diferentes.
    • Uma classe chamada Vendedor e outra chamada Gerente podem ter como base uma classe chamada Pessoa, com um método chamado CalcularDesconto. Se este método (definido na classe base) se comportar de maneira diferente para as chamadas feitas a partir de uma instância de Vendedor e para as chamadas feitas a partir de uma instância de Gerente, ele será considerado um método polimórfico, ou seja, um método de várias formas.




  • Objeto Funcionário
    • Operação CalcularSalario (Salario,MesCalculo)


  • Objeto Professor
    • Operação CalcularSalario (NroAulas, ValorAula, MesCalculo)



Encapsulamento

ou Enclausuramento


  • Encapsulamento de uma facilidade em programação orientada a objetos que permite separar o programa em partes
    • O mais isolado possível de forma que se possa definir os critérios de acesso a este código
  • A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações
    • O Encapsulamento serve para controlar o acesso aos atributos e métodos de uma classe
  • É uma forma eficiente de proteger os dados manipulados dentro da classe, além de determinar onde esta classe poderá ser manipulada



  • Usamos o nível de acesso mais restritivo, private, que faça sentido para um membro particular
    • Sempre usamos private, a menos que tenhamos um bom motivo para deixá-lo com outro nível de acesso
  • Não devemos permitir o acesso público aos membros, exceto em caso de ser constantes
    • Isso porque membros públicos tendem a nos ligar a uma implementação em particular e limita a nossa flexibilidade em mudar o código.



  • Exemplo:


  • Classe: Conta
  • Atributos: Conta, Saldo, ...
  • Visibilidade: Pública
  • Método: AtualizarSaldo
    • Como o atributo Saldo esta como publico, ou seja, é acessivel de fora da classe, nada impede de algum outro programador que esteja envolvido no projeto possa executar algo como: ... Somar 1.000.000,00 ao saldo.


  • Classe: Conta
  • Atributos: Conta, Saldo, ...
  • Visibilidade: Privada
  • Método: AtualizarSaldo
    • Se alterarmos os atributos da classe para privado não haverá acesso direto ao atributo, só deixando esses acessíveis de dentro da classe. Assim será "obrigatório" o uso do método AtualizarSaldo para alterar o valor de Saldo.


  • É necessário encapsular?
    • É importante perceber que não é necessário encapsular para que o programa funcione.
    • Porém é uma boa prática encapsular os dados (atributos)
      • Assim tornamos o acesso Direto às referências dos objetos "seguros" do ponto de visto de escrita e leitura
      • O acesso somente será permitido usando os métodos públicos (Ex: No Java temos GET e SET)


  • Capacidade de reutilização de software
  • Cria uma nova classe a partir de uma classe existente:
    • absorvendo os dados e comportamentos da classe existente e
    • aprimorando-a com novas capacidades
  • A subclasse estende a superclasse
  • Subclasse:
    • Grupo mais especializado de objetos
    • Comportamentos herdados da superclasse:
      • Podem se personalizar
    • Comportamentos adicionais.


  • Herança única:
    • Herda de uma superclasse.


  • Herança múltipla:
    • Herda de múltiplas superclasses.
      • O Java não suporta herança múltipla.


  • Superclasses e subclasses
    • Freqüentemente, um objeto de uma classe também ‘é um’ objeto de uma outra classe.
      • Exemplo: Em geometria, um retângulo é um quadrilátero.
        • A classe Retângulo herda da classe Quadrilátero.
        • Quadrilátero : superclasse.
        • Retângulo : subclasse.
    • A superclasse em geral representa um conjunto maior de objetos do que as subclasses.
      • Exemplo:
        • Superclasse: Veículo
          • Subclasses: Carros, caminhões, barcos, bicicletas...
          • Subconjunto mais específico e menor de veículos.


  • Exemplos de herança


Superclasse...........Subclasses
-----------------------------------------------------------------------------------------
Aluno.................AlunoDeGraduação, AlunoDePósGraduação
Forma.................Círculo, Triângulo, Retângulo
Financiamento........  FinanciamentoDeCarro, FinanciamentoDeReformaDaCasa, FinanciamentoDeCasa
Empregado............ Docente, Funcionário
ContaBancária.........ContaCorrente, ContaDePoupança, ContaInvestimento





Exercícios



  1. Dentro do problema desenvolvido no seu trabalho de grupo, defina:
    1. Um objeto
    2. Os atributos deste objeto
    3. As operações neste objeto
    4. Possíveis polimorfismos em cima do objeto
    5. Possíveis heranças de classe