UNIBRATEC – Ensino Superior e Técnico em Informática Orientação Objeto Marcely Dias [email protected] 1 Desenvolvimento de Sistemas quarta-feira, 3 de fevereiro de 2010 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Análise Orientada a Objeto – AOO - Cenário 2 Mudança do enfoque das funções para os dados Preocupação em modelar de forma mais detalhada o sistema Análise mais próxima da realidade Facilidade na comunicação com o usuário Objetos como entidades do mundo real Objetos com estrutura e comportamento e que se comunicam Dificuldades em fazer alterações nas estruturas de dados nas abordagens tradicionais “Se eu alterar a definição desse dado, quais programas serão afetados?” Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO - Cenário Trabalha com conceitos já conhecidos - Modularidade, Abstração, Encapsulamento, etc Orientação a objetos apesar de antiga não era utilizada por falta de pessoas treinadas, interesse em manter a cultura adquirida, ferramentas imaturas. Isso começa a se resolver. O mundo real é composto por objetos. Cada objeto tem propriedades e comportamentos. Então porquê não desenvolver programas que simulem no computador os objetos do mundo real com suas propriedades e comportamentos? 3 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO 4 Segundo Yourdon, “Um sistema construído usando um método Orientado a Objetos é aquele cujos componentes são partes encapsuladas de dados e funções, que podem herdar atributos e comportamentos de outros componentes da mesma natureza, e cujos componentes comunicam-se entre si por meio de mensagens.” Objetivo: Encontrar os objetos, organizá-los, descrever como interagem através de mensagens, definir operações de seus comportamentos. Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO Nos métodos tradicionais de análise, o comportamento do sistema e seus dados eram considerados separadamente. Com orientação a objetos, comportamento e dados são integrados, assim encapsulando detalhes internos de um objeto dos demais. Análise Enfoque Foco Estruturada e Essencial Conjunto de programas que executam processos Sobre dados Sistema Orientada a Objetos Conjunto de “entidades” que têm características e Comportamentos próprios Objeto 5 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas 6 Desenvolvimento de Sistemas Profa. Marcely Dias quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO • • • • • 7 Concentra-se nos aspectos essenciais do objeto sem detalhamento, focando em suas características e o que ele faz; Impede que um sistema se torne tão interdependente que uma pequena alteração ou implementação resulte em grandes alterações em sua estrutura; Combina estrutura (dados) e comportamento (funções) em um único objeto; Compartilha elementos estruturais e de comportamento com objetos de níveis inferiores; Enfatiza a estrutura de objetos ao invés da estrutura de procedimentos, ou seja, o que o objeto é e não como ele é utilizado. Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Por que usar Orientação a Objetos? • • • • • • • 8 Atualmente temos ferramentas completas para sua utilização (integrando especificação e implementação) Praticamente todas as ferramentas novas de programação permitem suporte a sua utilização Qualidade melhor do software (se usada corretamente) Produtividade em função do reuso (não é imediata) Produção de códigos mais fáceis de serem entendido (se for bom) Adequada para a construção de sistemas distribuídos e para aplicações voltadas a Internet Permite acesso controlado às informações Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO • Dificuldade: • Usuário não pensam seus problemas de forma orientada a objetos • Requisitos não são orientados a objetos Requisitos de usuários são funcionais 9 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO • Com o rápido crescimento surgiram várias metodologias principalmente ente 1989-1994 • Metodologias (processo OO e linguagem de modelagem própria). As mais significativas foram: • OMT, Rumbaugh • COAD/YOURDON, Coad-Yourdon, • OOSE, Jacobson, • SHLAER/MELLOR, Shlaer-Mellor, • BOOCH, Grady Booch 10 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias AOO • Como os métodos Booch e o OMT estavam sendo largamente utilizados, seus autores juntaram forças para fazer um método unificado, com uma linguagem padrão. Posteriormente Jacobson juntou-se a equipe. • Linguagem de modelagem proposta por Booch, Rumbaugh e Jacobson • UML (Unified Modeling Language) • Padronizada pela OMG (Object Management Group) • Conta atualmente com o apoio de vários autores e várias empresas • O RUP (Rational Unified Process) foi proposto como uma metodologia para desenvolvimento de sistemas, orientada a objetos, utilizando UML 11 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Histórico da Análise Requisitos Casos de Uso Casos de uso são orientados a objeto ?! Para Análise de Projetos só existe a abordagem OO ? 12 Não estamos fazendo análise orientada a objetos; Pode se utilizado em qualquer projeto como forma de documentar os requisitos; São fundamentais para as atividades clássicas de A / POO. OO. Estruturada; Essencial; Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Análise e Projeto Orientado a Objetos Qual o objetivo da Análise ? Encontrar e descrever os objetos ou conceitos no domínio do problema; Biblioteca: Livro, Biblioteca e Usuário. Qual o objetivo do Projeto ? Ênfase na definição dos objetos de software; Colaboração entre eles para a satisfação dos requisitos. conceito do domínio visualização de conceito de domínio representação em uma linguagem oo Public class Livro { Private String titulo; Public Capitulo obterCapitulo(int) {...} } 13 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Um Exemplo Um jogo de dados no qual um jogador lança dois dados. Se o total for sete, ele vence; caso contrário, perde. A análise de requisitos pode incluir uma descrição dos processos do domínio relacionados; estes podem ser descritos como casos de uso. Passos: 14 Definir Definir Definir Definir casos de uso; modelo de domínio; diagramas de interação; diagramas de classes de projeto. Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Caso de uso & Modelo de Domínio Versão simplificada do Caso de uso: 15 Caso de uso: Jogar um Jogo de Dados: Um jogador pega e lança os dados. Se a soma do valor das faces dos dados totalizar sete, ele vence; caso contrário, perde. Modelo de domínio Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Definir diagrama de Interação Diagrama de interação: diagrama de seqüência :JogoDeDados dado1:Dado dado2:Dado lancar() jogar () vf1 = obterValorDaFace() lancar() vf2 = obterValorDaFace() 16 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Definir diagrama de Classes de Projeto 17 Classes de Software Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Paradigma de Orientação a Objetos Paradigma é uma forma de pensar e perceber o mundo real e determina o que escolhemos como significativo e o que descartamos ao compreender ou descrever o que existe ou ocorre no mundo em torno de nós. A mudança de paradigma é uma oportunidade de encontrar novas interpretações para antigas questões, bem como, para rever soluções tidas como definitivas. 18 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Paradigma de Orientação a Objetos Orientação a objetos constitui um novo paradigma computacional pois representa uma mudança na forma de pensar e conceber sistemas e programas de computador. A estratégia de O-O para modelagem de sistemas baseia-se na identificação dos objetos (que desempenham ou sofrem ações no domínio do problema) e dos padrões de cooperação e interação entre estes objetos. 19 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Princípios Orientação a Objetos Abstração Encapsulamento Modularidade Herança Polimorfismo 20 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Abstração Permite ignorar os aspectos de um assunto não relevantes para o propósito Concentração nas características essenciais, gerenciando complexidade Construção de um modelo para representação de uma realidade Forte, Veloz, ... 21 Desenvolvimento de Sistemas Coração, Rim, Peso, ... quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Abstração 22 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Abstração Pessoa Nome Sexo Data Nascimento solicitaPedido () efetuaPagamento () 23 Desenvolvimento de Sistemas Abstração de Dados Abstração de Procedimentos quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Encapsulamento Restringir o escopo ou visibilidade da informação Obter melhor manutenibilidade e reutilização Ocultar detalhes de implementação É o processo de compartimentalização dos elementos de uma abstração Nenhuma parte de um sistema complexo deve depender de detalhes internos de qualquer outra parte Coloque uma moeda Máquina de Refrigerante em lata Receba a Lata 24 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Modularidade 25 Decomposição de um problema em pequenos pedaços, para gerenciar complexidade (Dividir para conquistar) Cada conceito independente deve ser representado por um módulo Construção de módulos desacoplados Módulos são dependentes uns dos outros, o que leva a uma relação de acoplamento Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Modularidade 26 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Herança Mecanismo para expressar a similaridade entre classes Representa generalização e especialização Permite representar membros comuns uma só vez; Especialização pode incluir novos métodos e atributos Pessoa Professor 27 Desenvolvimento de Sistemas Aluno quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Polimorfismo 28 O conceito de polimorfismo está associado a herança; Redeclaração de métodos previamente herdados de uma classe; Os métodos herdados da super-classe são reimplementados na sub-classe Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Exemplos Suponha a seguinte classe escrita em Java: public abstract class OperacaoMatematica { public abstract double calcular(double x, double y); } 29 Esta é uma classe abstrata que representa qualquer operação matemática. Podemos imaginar diversas operações que se encaixam na sua interface, como soma, subtração, multiplicação ou divisão, entre outras. Note que, mesmo que a natureza do cálculo mude, a semântica do método calcular não muda, ou seja, ele sempre calculará o resultado da operação matemática que está sendo trabalhada. Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Exemplos Definamos então, duas subclasses, Soma e Subtracao, que implementam a classe OperacaoMatematica: public class Soma extends OperacaoMatematica { public double calcular(double x, double y) { return x+y; } } public class Subtracao extends OperacaoMatematica { public double calcular(double x, double y) { return x-y; } } 30 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Exemplos O seguinte trecho de código demonstra o uso do polimorfismo: public class Contas { public static void mostrarCalculo(OperacaoMatematica operacao, double x, double y) { system.out.println("O resultado é: " + operacao.calcular(x, y)); } public static void main(String args[]) { //Primeiro calculamos uma soma Contas.mostrarCalculo(new Soma(), 5, 5); //Imprime o resultado é: 10 Contas.mostrarCalculo(new Subtracao(), 5, 5); //Imprime o resultado é: 0 } } 31 Note que, embora o método calcular tenha sido chamado duas vezes no interior de mostrarCalculo, o comportamento apresentado variou de acordo com a classe ao qual ele representava no momento. É comum definir sobrecarga de métodos ou simplesmente sobrecarga como uma forma de polimorfismo embora esta definição deixe lacunas conceituais. Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Conceitos Básicos de Orientação a Objetos Classe Atributos Estado Operação/ Métodos Comportamento 32 Relacionamento Objeto e Classe Atributo Propriedades de um objeto Armazenam estados dos objetos Operação Modelam o comportamento das classes Serviços que os objetos oferecem a outros objetos Pacote e Subsistemas: Elementos de Agrupamento Relacionamento Associação (Simples, Agregação e Composição) e Generalização Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Objeto 33 Identidade: Todo objeto é único e pode ser distinguido de outros objetos Estado: Determinado pelos dados contidos no objeto Comportamento: Definido pelos serviços/operações que ele oferece Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Classes 34 Descrições de objetos com propriedades e comportamento comuns Abstração que enfatiza o que é relevante Objetos são instâncias de Classes Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Relacionamento Associação: Exemplos: 35 Simples: Relação estrutural entre classes Agregação: Relacionamento todo-parte. O todo possui um nível de abstração maior que a parte Composição: Relação de posse mais forte. O todo é responsável pela criação da parte Dependente e Funcionário? Pedido e Item do pedido? Funcionário e Cartão de ponto? Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Relacionamento Generalização Relacionamento entre classes onde uma classe compartilha a estrutura (atributos e relacionamentos) e comportamento (operações) de outras classes Define uma hierarquia de abstrações Relacionamento “é um tipo de” Uma subclasse pode: Tipos de Herança: Simples e Múltipla 36 Adicionar Atributos, operações e relacionamentos; Redefinir operações herdadas Classe herdando de apenas uma classe; Classe herdando de mais de uma classe; Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Testezinho 37 Dia 10/08/2011 – 2º horário Assunto: Análise OO e Conceitos Orientação Objeto Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015 APS – Análise e Projeto de Sistemas Profa. Marcely Dias Dúvidas ? 38 Desenvolvimento de Sistemas quinta-feira, 5 de novembro de 2015