Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos...

56
Orientação a Objetos (O paradigma da orientação a objetos) Zamir, Cap 1 Taylor, Cap 1 Wirfs-Brock, Cap 1 Meyer, Caps 1 Sandro Santos Andrade [email protected] Universidade Federal da Bahia Departamento de Ciência da Computação (DCC) Laboratório de Sistemas Distribuídos (LaSiD) Especialização Avançada em Sistemas Distribuídos

Transcript of Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos...

Page 1: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Orientação a Objetos(O paradigma da orientação a objetos)

Zamir, Cap 1Taylor, Cap 1

Wirfs-Brock, Cap 1Meyer, Caps 1

Sandro Santos [email protected]

Universidade Federal da BahiaDepartamento de Ciência da Computação (DCC)

Laboratório de Sistemas Distribuídos (LaSiD)Especialização Avançada em Sistemas Distribuídos

Page 2: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

O Paradigma OO

Permite que aplicações sejam construídos no contexto de objetos ao invés de processos

Benefícios: Qualidade do software, ganhos econômicos, ciclos de

desenvolvimento mais curtos, suporte a distribuição em ambientes heterogêneos

Mais de 80% das indústrias de desenvolvimento utilizam o paradigma OO (IDC)

É uma das quatro mais importantes áreas de interesse da indústria de TI (Gartner and Meta Groups)

Page 3: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Principais Conceitos

Objetos: Representações executáveis de entidades e conceitos

do mundo real

Mensagens: Disponibilizam um meio de comunicação universal para

interação entre objetos

Classes: Matrizes para a definição de objetos similares que

fornecem a base para a abstração das características comuns de objetos do mundo real

Page 4: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Objetos

O mundo é feito de objetos físicos e conceituais Def: um objeto é um pacote de software que inclui

todos os dados e procedimentos necessários para representar uma entidade do mundo real para um conjunto específico de propósitos

Implicações: Objetos são unidade de modularização do software Pacotes de objetos relacionam dados e procedimentos A modelagem se torna a atividade central no projeto do

software

Page 5: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Mensagens

Def: uma mensagem é uma requisição para que um objeto particular execute um procedimento (método) específico Ex: product.price (quantity);

A especificação da mensagem é geralmente chamada de assinatura

Uma mensagem pode ser respondida de diferentes formas por diferentes objetos

Page 6: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Classes

Def: uma classe é uma definição genérica que se aplica a um conjunto de objetos similares

Especifica os métodos e atributos usados por objetos que são instâncias desta classe

Instâncias mantêm valores locais e individuais dos seus atributos

Representam o mecanismo principal para o processo lógico de abstração

Estendem o mecanismo básico de tipagem das linguagens

Page 7: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Principais Mecanismos

Encapsulamento: Mecanismo de empacotamento de dados e

procedimentos dentro de objetos

Polimorfismo: Habilidade de implementar a mesma mensagem de

diferentes formas em diferentes objetos

Herança: Mecanismo para disseminar informações definidas em

classes genéricas para outras classes declaradas como casos especiais das classes genéricas

Page 8: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Encapsulamento

Objetos respondem e enviam mensagens de uma forma que não revela a sua estrutura interna

Suporta o ocultamento de informação: Previne que mudanças locais gerem impactos globais

Desenvolvedores mudam os atributos e métodos sem afetar a forma que o objeto interage Atributos privados + métodos acessores

Page 9: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Polimorfismo

Possibilita que objetos diferentes responstam à mesma mensagem

Simplifica a lógica de programas:

ANTES

if instrument isprivateStock then value = valuePrivateStock(instrument)publicStock then value = valuePublicStock(instrument)...Otherwise report error

DEPOIS

intrument.value()

Page 10: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Polimorfismo

Vantagens de mensagens polimórficas: São menores, reduzindo o tamanho e complexidade do

código-fonte Executam mais rápido visto que não requerem uma

busca para identificar qual mensagem enviar São flexíveis pois novas implementações podem ser

adicionadas ou removidas sem precisar reescrever a lógica de seleção da mensagem

Reflete a forma natural de comunicação: Ex: o gerente solicita de todos os departamentos:

“projete seu orçamento para o próximo ano fiscal”

Page 11: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Herança

Def: mecanismo que permite que uma classe seja definida como um caso especial, ou sub-classe, de outra (super-classe). Isto pode ocorrer em vários níveis, constituindo uma hierarquia de classes

Sub-classes automaticamente incorporam os métodos e atributos da super-classe (herança de implementação)

Uma classe pode manter a definição de um método herdado da super-classe ou pode realizar uma sobreposição (override)

Page 12: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Herança

Sobreposições suportam generalização / especialização

Heranças podem também ser utilizadas para categorizar tipos (herança de interface)

Algumas linguagens suportam herança múltipla. Seu melhor uso é para definir mix-ins

Page 13: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

A Tecnologia de Objetos

Uma linguagem é OO se ela implementa os três mecanismos citados e não os conceitos: Uma linguagem pode ser OO sem ter os três conceitos Uma linguagem pode não ser OO mesmo possuindo os

três conceitos

Linguagens que suportam encapsulamento e polimorfismo mas não suportam herança são ditas baseadas em objetos

Page 14: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Benefícios

Produtividade: Resulta da habilidade de reusar lógica genérica

expressa em classes previamente construídas

Qualidade: Resulta da estrutura simplificada dos programas OO e

da maior oportunidade para testes de unidade extensivos

Evolução: Resulta da habilidade de alterar a estrutura e o

comportamento de objetos individuais sem afetar outros objetos do sistema

Page 15: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Produtividade

Manutenção representa 80% do custo total de um software

Codificação representa cerca de 20% do custo pré-manutenção

O objetivo é reuso de ciclo de vida: A análise e projeto são direcionados para valores de

longo-prazo Cada objeto irá requerer pouca ou nenhuma

modificação no futuro

Page 16: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Qualidade

O uso de objetos por si só não melhora a qualidade do software. Exs: mau uso de herança, altos acoplamentos

Porém: Encapsulamento: melhora a habilidade de isolar e

reparar problemas. Oferece melhor controle sobre acesso a dados

Polimorfismo: elimina as lógicas condicionais, simplificando sistemas complexos

Herança: reduz o tamanho e complexidade do software. Sobreposição elimina lógicas condicionais

Page 17: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Evolução

Construir sistemas que evoluem rapidamente em resposta a mudanças nos requisitos é um grande desafio

Mecanismos: Encapsulamento: permite que mudanças locais tratem

problemas que antes requeriam modificações extensivas

Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente

Herança: permite que uma modificação local produza mudanças em larga escala no sistema

Page 18: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Evolução

Sistemas não devem ser projetados para resolver um conjunto específico de problemas

Deve-se analisar sistemas e criar modelos executáveis do mundo-real ao invés de analisar problema e desenvolver soluções específicas para o problema

Page 19: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Outros Mecanismos

Interfaces: Disponibilizam uma forma sistemática de separar quais

tarefas um objeto faz da forma como são realizadas

Delegação: Oferece uma alternativa à herança, simplificando o

sistema e aumentando a flexibilidade

Distribuição: Permite que um conjunto de objetos seja implantado

em diferentes máquinas de uma rede, incluindo a Internet

Page 20: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Interfaces

Na maioria das linguagens OO uma classe define tanto o que o objeto poderá realizar quanto como tais tarefas serão realizadas

Isso pode confundir dois conceitos importantes: O que um objeto faz define o seu tipo Como um objeto realiza tal tarefa define a sua

implementação

Def: uma interface é um conjunto identificado de assinatura de mensagens Especifica o tipo de um objeto através dos serviços que

ele oferece e da forma como estes serão utilizados

Page 21: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Interfaces

Benefícios: Classes de diferentes fornecedores podem ser

interconectadas Se interfaces são utilizadas como parâmetros de

funções, qualquer objeto que implementa a interface pode ser passado neste parâmetro

Interfaces podem restringir o acesso ao objeto se este implementa diversas interfaces, uma para cada papel

Interfaces foram explicitamente e sistematicamente suportadas pela primeira vez na linguagem Java

Page 22: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Delegação

Herança de implementação é perigosa pois viola o encapsulamento ao conceder, à sub-classe, acesso às estruturas internas da super-classe

Def: ao invés de realizar a tarefa, o objeto delega a função para outro objeto

Deve-se utilizar delegação sempre que adequado, reservando o uso de herança de implementação

Page 23: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Distribuição

Protocolos padronizados para comunicação de objetos em rede: CORBA, DCOM, RMI, EJB, Web Services

Permite: Location Transparency Remoteness Transparency Objetos móveis Balanceamento dinâmico de carga

Page 24: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores de Sucesso

Motivação: Adotar a tecnologia de objetos pelas razões erradas

pode ser perigoso

Formação: Iniciar um projeto OO com uma visão parcial do

paradigma irá comprometer o sucesso do sistema

Determinação: Para sobreviver a um período inicial de retorno mínimo

antes de usufruir dos verdadeiros benefícios do paradigma

Page 25: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Orientação a Objetose

Qualidade de Software

Page 26: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Qualidade de Software

Fatores externos: Qualidades cuja presença ou ausência podem ser

percebidas por usuário do sistema. Ex: facilidade de uso, desempenho

Fatores internos: Qualidades percebidas somente pelos profissionais

que mantêm o código-fonte. Ex: modularidade, legibilidade

Os fatores externos são os mais importantes, porém os internos favorecem os externos

Page 27: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Corretude (correctness): É a habilidade de um software realizar suas tarefas de

maneira correta, conforme definido por sua especificação

Depende da especificação precisa dos requisitos Debugging x corretude desde o projeto Abordagens formais

Page 28: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Robustez (robustness): É a capacidade de um software reagir

apropriadamente a condições anormais Espera-se que, na ocorrência de casos anormais, o

sistema produza mensagens de erro apropriadas, termine sua execução de forma controlada ou entre em um modo de graceful degradation

Complementa a corretude

Page 29: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Extensibilidade (extendibility): É a facilidade de adaptar o software a mudanças na

especificação Depende diretamente da complexidade do software Os requisitos certamente mudarão Melhorada pelo uso de dois princípios:

Simplicidade de projeto: uma arquitetura simples é mais fácil de adaptar a mudanças do que uma complexa

Descentralização: quanto mais autônomos os módulos maior a chance de uma mudança afetar somente um módulo ou um pequeno número deles, ao invés de desencadear uma cadeia de reações em todo o sistema

Page 30: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Reusabilidade (reusability): É a habilidade onde os elementos do software servem

para a construção de muitas aplicações diferentes Sistemas computacionais seguem padrões similares Se menos código for escrito, maior atenção pode ser

dada a outros fatores, como corretude e robustez Indispensável para que tenhamos uma verdadeira

indústria de software

Page 31: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Compatibilidade (compatibility): É a facilidade de combinar elementos de software com

outros elementos Sistemas frequentemente precisam interagir uns com

os outros Deve-se utilizar formatos de arquivos, estruturas de

dados e interfaces de usuário padronizadas Protocolos padronizados tais como CORBA, web

services e OLE-COM contribuem para a compatibilidade

Page 32: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Eficiência (efficiency): É a habilidade de um software de demandar o mínimo

possível dos recursos de hardware (processador, memória, largura de banda, etc)

Um sistema super-otimizado pode ter sua extensibilidade e reusabilidade prejudicados

O rápido aumento do poder dos equipamentos incentiva uma postura mais relaxada em relação à eficiência

Page 33: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Eficiência (efficiency): Entretanto deve ser considerada pois:

Máquinas melhores devem trazer melhorias no desempenho: processar problemas prévios de forma mais rápida ou suportar problemas maiores

Algoritmos com complexidade ruim não são favorecidos por máquinas melhores: uma máquina com o dobro de poder irá processar o dobro em algoritmos O(n), 41% a mais naqueles O(n2) e somente um a mais em soluções O(2n)

Eficiência pode afetar a corretude: sistemas de tempo-real, previsão do tempo, etc

Page 34: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Portabilidade (portability): É a facilidade de transferir o sistema para vários

ambientes de hardware e software

Inclui mudanças no sistema operacional, gerenciadores de janelas etc

Facilidade de uso (ease of use): É a facilidade na qual pessoas de diferentes

experiências e qualificações podem aprender a usar o software e aplicá-lo na resolução de problemas. Isto inclui instalação, operação e monitoramento`

Princípio do Projeto de Interface de Usuário: não ache que você conhece o usuário, você não o conhece

Page 35: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Funcionalidade (functionality): É a extensão de funcionalidades providas pelo sistema

Featurism: pressão por novas funcionalidades

Funcionalidades demais afeta a facilidade de uso

Não se deve esquecer as outras qualidades:

Page 36: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Prazo (timeliness): É a habilidade de um software de ser lançado antes ou

no prazo estipulado

É uma das grandes frustrações da indústria

Outras qualidades: Verifiability Integrity Repairability Economy

Page 37: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Documentação: Externa, interna e de interface de módulo

Abordagens: Help on-line, linguagens de programação que

favorecem clareza e estrutura e ocultamento de informação

Page 38: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Documentação:

Page 39: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Documentação:

Page 40: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Fatores Externos

Tradeoffs: Integridade x facilidade de uso Economia x funcionalidade Eficiência x portabilidade Eficiência x reusabilidade Prazo x extensibilidade

O importante é analisar isso conscientemente

Page 41: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Manutenção de Software

70% do custo do software é dedicado à manutenção: Para refletir mudanças do mundo externo Para remover erros que nunca deveriam estar lá

Page 42: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Objetos

Page 43: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Mensagens

Page 44: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Classes

Page 45: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Interfaces

Page 46: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Herança

Page 47: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Herança - Hierarquias

Page 48: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Anatomia de um Objeto

Page 49: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Anatomia de um Objeto

Page 50: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Composição de Objetos

Page 51: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Delegação

Page 52: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Mensagens

Page 53: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Mensagens - Parâmetros

Page 54: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Mensagens – Restringindo

Page 55: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Polimorfismo

Page 56: Orientação a Objetos (O paradigma da orientação a … · Polimorfismo: permite que novos tipos de objetos sejam adicionados sem modificar o código existente ... CORBA, DCOM,

Polimorfismo