1 / 67

Orientação à Objetos

Orientação à Objetos. Tópicos abordados. Paradigmas de desenvolvimento Princípios de OO Conceitos de OO Benefícios. Objetivos. Compreender os conceitos básicos de OO Entender as diferenças entre os paradigmas tradicionais Entender exemplos práticos de utilização de OO.

mahogony
Download Presentation

Orientação à Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Orientação à Objetos

  2. Tópicos abordados • Paradigmas de desenvolvimento • Princípios de OO • Conceitos de OO • Benefícios

  3. Objetivos • Compreender os conceitos básicos de OO • Entender as diferenças entre os paradigmas tradicionais • Entender exemplos práticos de utilização de OO

  4. Paradigma de Desenvolvimento de Software • Ferramentas, metodologias e ambientes dependem do Paradigma de Desenvolvimento • Paradigma é a “filosofia” adotada na construção do software: • Lógico, Funcional, Procedimental, Orientado a Objetos, etc...

  5. Paradigma Procedimental • Visão de desenvolvimento baseada em um modelo entrada-processamento-saída • Dados são considerados separadamente das funções • Funções, são ativas e têm comporta-mento • Dados são repositórios passivos de informação afetados por funções

  6. Processamento Paradigma Procedimental Dados Dados Dados Resultado

  7. Processamento Paradigma Procedimental • Exemplo: Calcular a folha de pagamento de um departamento Dependentes da Maria Férias do Antônio Adiantamento do João Salário da Maria Salário do Pedro Demissão da Joana Prêmio da Helena Custo Total

  8. Paradigma Orientado a Objetos • Pressupõe que o mundo é composto por objetos • Objeto é uma entidade que combina estrutura de dados e comportamento funcional • Os sistemas são modelados como um número de objetos que se interagem

  9. Paradigma OO Utiliza uma perspectiva mais humana de observação da realidade, incluindo objetos, classificação e compreensão hierárquica

  10. Procedimental vs OO

  11. O que é OO? “Orientação à objetos é uma estratégia para organizar sistemas como coleções de objetos que interagem entre si e combinam dados e comportamento”

  12. Princípios básicos de OO Orientação à Objetos Abstração Modularidade Encapsulamento Hierarquia

  13. Abstração Anfíbio Computador Construção

  14. Abstração • Construção de um modelo para representação de uma realidade • Foco em aspectos essenciais de uma aplicação enquanto ignora os detalhes • Preserva a simplicidade do projeto

  15. Abstração • Construção de um modelo para representar a realidade Automovel modelo preco ... atualizaPreco() ...

  16. Encapsulamento • Esconde a implementação interna da especificação externa • Clientes conhecem somente a interface • Clientes dependem da interface e não da implementação

  17. Encapsulamento • Oferece os seguintes tipos de proteção • O estado interno de um objeto não pode ser corrompido por um cliente • Mudanças internas não têm impacto sobre os clientes • Facilita a manutenção e diminui o seu custo

  18. Objeto DVD voltar() pausar() alterarHora() avancar() parar() tocar() carregarDisco()

  19. Modularidade Módulo de estoque Módulo de faturamento Módulo de clientes Módulo de canais de venda Sistema de vendas

  20. Modularidade • A quebra de algo complexo em pedaços menores que sejam gerenciáveis • Melhor entendimento do sistema • Partes podem ser desenvolvidas separadamente

  21. Modularidade Cuidado com a coesão e o acoplamento!!!! “Deve-se maximizar a coesão, enquanto minimiza-se o acoplamento.”

  22. Hierarquia Aumenta a abstração • Define níveis de abstração Animal Forma Mamífero Ave Polígono Triângulo Retângulo Homem Leão Diminui a abstração

  23. Hierarquia • Criação de níveis de abstração • Base conceitual para permitir extensibilidade do software • Reuso de código e comportamento

  24. Conceitos básicos de OO • Objeto • Classe • Atributo • Operação • Interface (Polimorfismo) • Pacote • Relacionamentos

  25. O que é um objeto? “Um objeto é um conceito, abstração ou coisa com limites e significado para uma aplicação” • Um objeto deve ter: • Estado • Comportamento • Identidade única

  26. Exemplos de Objetos Opala placa AAM1921 Gisele Bündchen Johnnie Walker Black Label

  27. Classe • Classes especificam a estrutura e o comportamento dos objetos • Classes são como "moldes" para a criação de objetos • Objetos são instâncias de classes

  28. Exemplo de classes Classe Curso Comportamento Propriedades Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala Nome Localização Duração Créditos

  29. Curso • Adicionar um aluno • Remover um aluno • Atribuir professor • Atribuir sala • Nome • Localização • Duração • Créditos Objetos da classe Curso • Nome = Análise I • Localização = MAC • Duração = 30h • Créditos = 2 • Nome = SI • Localização = MAC • Duração = 30h • Créditos = 2 • Nome = Análise II • Localização = MAC • Duração = 15h • Créditos = 4

  30. Classes de Objetos • Quantas classes temos aqui?

  31. Relação entre classe e objeto • Classe é uma definição abstrata de um objeto • Ela define a estrutura e o comportamento dos objetos • Serve como template para criação de objetos • Objetos são agrupados em classes

  32. Classes e objetos em Java class Pessoa { ... } ... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa();

  33. Exercício Descrever as classes do sistema de Reserva de passagem

  34. Atributo • Propriedades de um objeto • O estado do objeto é definido pelo conjunto de seus atributos • Fisicamente armazenado em uma variável

  35. Curso • Adicionar um aluno • Remover um aluno • Atribuir professor • Atribuir sala • Nome • Localização • Duração • Créditos Objetos da classe Curso • Nome = Análise I • Localização = MAC • Duração = 30h • Créditos = 2 • Nome = SI • Localização = MAC • Duração = 30h • Créditos = 2 • Nome = Análise II • Localização = MAC • Duração = 15h • Créditos = 4

  36. Atributos em Java class Pessoa { int idade; String nome; } ... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa(); p1.nome = “Gibeon”; P2.nome = “Adilson”;

  37. Referência para outros objetos Endereço Pessoa • Rua = Cruzeiro • Numero = 262 • Bairro = Setubal • Cidade = Recife • Nome = Análise I • Idade = 23 • Endereco

  38. Atributo composto em Java class Pessoa { int idade; String nome; Endereco end; } class Endereco { String rua; String bairro; int numero; } ... Pessoa p1 = new Pessoa(); p1.nome = “Gibeon”; p1.endereco = new Endereco();

  39. Operação • Modela comportamento das classes • Serviços que os objetos oferecem a outros objetos (Troca de mensagens entre objetos)

  40. Curso • Adicionar um aluno • Remover um aluno • Atribuir professor • Atribuir sala • Nome • Localização • Duração • Créditos Objetos da classe Curso • Nome = Análise I • Localização = MAC • Duração = 30h • Créditos = 2 • Nome = SI • Localização = MAC • Duração = 30h • Créditos = 2 • Nome = Análise II • Localização = MAC • Duração = 15h • Créditos = 4

  41. Operações em Java class Pessoa { ... void aniversariar(){ idade = idade + 1; } } ... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa(); p1.nome = “Gibeon”; P1.aniversariar();

  42. Troca de mensagens B() C() A() A() D() E()

  43. Troca de mensagens em Java class TipoA { TipoB b = new TipoB(); void m1(){ b.m2(); } } class TipoB { void m2(){ ... } }

  44. Exercício • Adicionar atributos e métodos às classes selecionadas

  45. Manufactor A Manufactor C Manufactor A Polimorfismo • Habilidade de esconder diferentes implementações através de uma única interface

  46. Interface • Interfaces formalizam polimorfismo • Aumentam o nível de reusabilidade • Viabilizam o uso de componentes • Reduzem o esforço de evolução da aplicação

  47. Interface • Interfaces definem um tipo especificando apenas a assinatura de seus métodos • Interfaces não possuem atributos e seus métodos não têm corpo • Classes implementam interfaces • provêem implementação para os métodos especificados em uma interface

  48. Exemplo de Interface pausar() voltar() tocar() parar() avancar() carregarDisco() alterarHora()

  49. Interface em Java interface DVD { void voltar(); void avancar(); void parar(); void tocar(); } class DVDGradiente implements DVD{ void voltar(){} void avancar(){} void parar(){} void tocar(){} } class DVDSony implements DVD{ void voltar(){} void avancar(){} void parar(){} void tocar(){} }

  50. Generalização/Especialização • É um relacionamento entre um elemento genérico e um mais específico • Também chamada de Herança • O objeto da classe filha “herda” todas as características da classe pai

More Related