Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI
Roteiro Conceitos de Orientação a Objetos O que é um Paradigma? Alguns Paradigmas Porque usar Orientação a Objetos? Técnicas de Desenvolvimento de Sistemas Orientados a Objetos Bibliografia
Conceitos de Orientação a Objetos Objeto ou Instância Classe Mensagem Abstração Herança Agregação ou Todo Parte Encapsulamento Polimorfismo
Objeto “Qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e métodos que os manipulam” (Odell & Martin, 1995) Tudo em OO é Objeto
Objeto CASA CACHORRO
Objeto Objeto = Atributos + Métodos Encapsulamento
Objeto Objeto tem atributos ... Carro tem ... - nº de portas = 2 - cor = vermelho - fabricante = Volks - ano = 1995 - placa = XYZ-0102 Atributos -> representam um conjunto de informações, ou seja, elementos de dados que caracterizam o objeto São variáveis que definem o estado de um objeto, ou seja, são entidades que caracterizam os objetos Cada objeto possui seu próprio conjunto de atributos
Objeto Objeto tem métodos ... Carro tem ... - Ligar - Desligar - Acender Farol - Acionar Air-Bag - Travar Portas...
Classe Conjunto de objetos similares. Descreve a: Estrutura dos dados; e, Comportamento de objetos similares. Objeto = Instância de Classe Objetos de uma mesma classe diferenciam-se pelos valores de seus atributos.
Classe Objeto 1 Objeto 2 Classe Automovel numeroPortas cor fabricante ano placa Objeto 2
Classe Classe Pessoa classe Pessoa nome idade altura peso objeto Maria objeto Pedro Classe Pessoa nome idade altura peso
Mensagens Mecanismo através do qual os objetos se comunicam, invocando as operações desejadas. Um objeto (Emissor) envia uma mensagem a outro (Receptor) que executará uma tarefa. Métodos são invocados por Mensagens.
Abstração Mecanismo utilizado na análise do domínio. Capturar as informações essenciais das entidades ou objetos envolvidos no contexto do sistema sendo desenvolvido. Enfoca: visão externa do objeto separando seu comportamento de sua implementação.
Abstração “depende do ponto de vista”
Herança ou Especialização Permite definir uma nova classe (subclasse) a partir de uma classe já existente (superclasse). Quando se define herança a subclasse “herda” as características comuns da superclasse e pode ainda adicionar novos métodos ou reescrever métodos herdados.
Herança ou Especialização Pode ser: Simples Pessoa Jardineiro Arquiteto Diretor de Informática Ortopedista
Herança ou Especialização Relógio Rádio Rádio-Relógio Pode ser: Múltipla
Agregação ou Todo-Parte Composição de uma nova categoria como um agregado de categorias pré-existentes. Um objeto é composto por outros objetos. Pode ser: Por valor (casa – porta) Por referência (loja – porta)
Agregação ou Todo-Parte
Encapsulamento Objetivo: “ocultar” do mundo externo ao objeto os detalhes de implementação e restringir o acesso aos atributos e métodos. Vantagens: Segurança no acesso ao objeto Melhor consistência no estado interno, pois evita alteração incorreta de valores dos atributos
Encapsulamento Avião Obter Altitude Obter Velocidade Aumentar
Polimorfismo Membros de diferentes classes podem responder a uma mesma mensagem. Polimorfismo Janela ( ) Janela ( 1 x 2 , 2 ) Janela ( 1 x 2 , 2, Azul )
Paradigma Paradigma é a “filosofia” adotada na construção de software: Lógico Funcional Procedimental Orientado a Objetos
Paradigma Procedimental Visão de modelo baseada em um modelo de entrada-processamento-saída Dados são considerados separadamente das funções Funções são ativas e têm comportamento Dados são repositórios passivos de informação afetados por funções
Paradigma Orientado a Objetos Sugere a diminuição da distância entre a modelagem computacional e o mundo real. Surgiu na tentativa de solucionar problemas existentes no desenvolvimento de softwares complexos e confiáveis com baixo custo de desenvolvimento e manutenção.
Paradigma Orientado a Objetos Permite que objetos do mundo real sejam mapeados em Objetos no computador e pressupõe que o mundo é composto por objetos. Os sistemas são modelados como um número de objetos que se interagem.
Paradigma Procedimental Calcular a folha de Pagamento Dependentes da Maria Férias do Antônio Adiantamento do João Salário da Maria Salário do Pedro Prêmio da Helena Processamento Custo Total
Paradigma Orientado a Objetos Calcular a folha de Pagamento “Fulano, quanto eu te devo?” Custo total = Fulanos
Paradigma Orientado a Objetos Para um sistema ser orientado a objetos deve ter pelo menos (Coad & Yourdon, 1990): Objetos Classes Herança Mensagens
Por que utilizar Orientação a Objetos? Alta reutilização de código Redução no tempo de manutenção Redução de complexidade através da melhoria do grau de abstração Aumento de qualidade e produtividade, pois oferece maiores facilidades ao desenvolvedor Aceitação comercial crescente
Técnicas de Desenvolvimento de Sistemas Orientados a Objetos Técnicas de “solução criativa de problemas” Busca de outras experiências e soluções para problemas semelhantes Divisão e conquista Refinamentos sucessivos Diversidade
Técnicas de Desenvolvimento de Sistemas Orientados a Objetos Busca de outras experiências e soluções para problemas semelhantes Refinamento, composição e instanciação de objetos e classes existentes
Técnicas de Desenvolvimento de Sistemas Orientados a Objetos Divisão e conquista Redução de um problema complexo em problemas menores Divisão em classes menores
Técnicas de Desenvolvimento de Sistemas Orientados a Objetos Refinamentos sucessivos Desenvolvimento em versões Diversidade Não se compromete com a solução inicial Durante o desenvolvimento podem surgir novas informações que indiquem novas alternativas
Bibliografia Object-Oriented Methods: A Fundation James Martin & James J. Odell Prentice Hall, 1995. Análise Orientada a Objetos Peter Coad & Edward Yourdon Editora Campus, 1990 Notas de Aula