Escolar Documentos
Profissional Documentos
Cultura Documentos
O que um paradigma?
Paradigma: [Aurlio, 1998]
[Do gr. pardeigma, pelo lat. paradigma]. S. m.
1. Modelo, padro; 2. Aquilo que serve de exemplo ou norma; 3. Base para a avaliao de qualidade ou quantidade.
Aplicaes do Paradigma OO
Algumas reas que usam conceitos de OO
Linguagens de programao Modelagem de dados e SGBD Interfaces de usurio e Sistemas Operacionais Processamento Distribudo Aberto (ODP) Gerncia de Redes de Telecomunicaes (TMN) Protocolos de Comunicao (IP, HTTP) Engenharia de Software
Fundamentos do Paradigma OO
No existe definio formal universal
Existem, no entanto, conceitos e caractersticas que esto presentes em diversas abordagens OO
Definio de Objeto
uma representao de um conceito existente em um determinado Contexto de Modelagem
Um objeto pode representar um conceito
concreto: um carro uma entidade que tem cor, ano, marca, modelo, proprietrio, ... abstrato: um projeto uma entidade que envolve cronograma, equipe, lder, objetivos, oramento, ...
...
Objetos nomeados
...
agente:
Objeto rfo
Propriedades de Objeto
Um objeto possui quatro tipos de propriedades
Atributos que o caracterizam
cor, ano, marca, modelo, ...
Anatomia de um Objeto
Propriedades de objetos podem ser separadas em
Estruturais: atributos e associaes Comportamentais: operaes e regras
Estado de Objeto
O Estado de um objeto o conjunto de valores de todas as suas propriedades
valores dos atributos identidade dos objetos associados algoritmos que implementa os mtodos definio das regras sobre o objeto
Exemplo: o estado do objeto Carro
cor: vermelho; ano:1999; marca: Ferrari; modelo: F-44; proprietrio: Sr. Rico:Pessoa ; mtodo manter velocidade{}; ...
...
...
...
Identidade de Objeto
Todo objeto possui um Identificador (OID)
O OID um atributo implcito de todo objeto
gerado pelo sistema na criao do objeto
O projetista no tem acesso definio do OID do objeto diferente do conceito de chave: mudar nome, sexo ou CPF no muda a pessoa
O OID imutvel
Aps sua criao um OID nunca pode ser modificado
Encapsulao de Objeto
Cpsula: [Aurlio, 1998]
[Do lat. capsula]. S. f. membrana que reveste uma substncia
Implementao: encapsulada
Isola a essncia do objeto do restante do sistema
Interface de Objeto
A interface define o comportamento externamente visvel de um objeto
Isto feito atravs da especificao de operaes
Uma operao
indica um comportamento que o objeto prov ao mundo exterior (isto , ao resto do sistema) um compromisso que o objeto firma com o sistema compromissos devem ser honrados!
Operaes de um Objeto
Uma operao define um comportamento externamente visvel de um objeto
Cada operao definida por uma assinatura
Nome da operao + Tipos dos parmetros de entrada + Tipos dos parmetros de sada
Exemplo: a operao ir_em_frente (in marcha int, out marcha_atual int) define um comportamento do objeto Carro A operao tem como parmetro de entrada a marcha a ser empregada no deslocamento, e retorna a marcha em uso no momento da solicitao da operao Outros objetos podem solicitar que o objeto Carro realize esta operao
Carro IProprietrioCarro <<Interface>> Movimento Carro + manter(velocidade:Real) + ir-para-frente(in marchain:Int, out marchaout:Int) + marcha-r()
. . .
Certos autores admitem que a interface tambm contenha regras, atributos e associaes
Assim, crescem as responsabilidades do objeto perante o sistema
Responsabilidade de lembrar: atributos Responsabilidade de conhecer: associaes Responsabilidade de realizar: operaes Responsabilidade de ser coerente: regras
Implementao de Objeto
A implementao encapsulada isola e protege a essncia do objeto, ou seja, o estado do objeto
contm todas as definies do comportamento
mtodos e regras
...
Protocolo de Comunicao OO
Objetos se comunicam exclusivamente atravs do intercmbio de mensagens
Uma mensagem contm
a assinatura de uma operao, com parmetros reais a solicitao de um objeto cliente para execuo da operao indicada por um objeto servidor
mtodos so encapsulados, logo no podem ser invocados Exemplo: objeto Proprietrio envia mensagem para objeto Carro solicitando deslocamento para frente em 1a marcha
marchain 1; Carro.ir-para-frente(in marchain, out marchaout);
Protocolo de Comunicao OO
O objeto cliente deve conhecer o destinatrio da mensagem
Toda mensagem tem um objeto servidor alvo
objetos so conhecidos pelo seu OID
Operao(parmetros)
Interface Implementao
Cliente
Resposta
Servidor
Iniciativa de Comunicao OO
Objetos podem ter dois papis
Objetos ativos tomam a iniciativa da comunicao Objetos passivos somente respondem
Em geral, qualquer objeto pode ser ativo (cliente) ou passivo (servidor) em diferentes interaes
Mecanismo de Resposta
Sncrono: resposta obrigatria (embutida)
Interface Implementao Operao(parmetros) Resposta Interface Implementao
Destinatrios de Mensagens
H duas categorias de mensagens OO
ponto-a-ponto
h um nico destinatrio, identificado pelo seu OID
O mecanismo de execuo OO deve localizar os destinatrios
broadcast
a mensagem vai para todos os objetos do sistema, sem que o emissor os identifique individualmente
O mecanismo de execuo identifica e localiza os destinatrios
Concorrncia em Sistemas OO
O Mecanismo de Execuo OO deve permitir
Concorrncia inter-objetos
mais de um objeto ativo em um determinado instante
Concorrncia intra-objeto
mais de um mtodo ativo em um objeto em um dado instante
ir-para-frente(1, 2)
:Carro
O Conceito de Abstrao
Abstrao: [Aurlio, 1998] S. f.
Ato de separar um ou mais elementos de uma totalidade complexa (coisa, representao, fato), os quais s mentalmente podem subsistir fora dessa totalidade
Uma abstrao permite capturar um determinado aspecto existente em uma realidade, eliminando detalhes irrelevantes
Cada tipo de abstrao representa fielmente o seu aspecto alvo, de acordo com um significado predefinido
Exemplo: a classificao uma abstrao que permite identificar propriedades que caracterizam um certo conjunto de conceitos, sem se preocupar com as especificidades de cada elemento do conjunto
Abstraes do paradigma OO
Aplicam princpios bsicos da Engenharia de Software
Dividir para Conquistar e Separao de Preocupaes
Cada abstrao OO permite analisar separadamente um certo aspecto dos objetos de um sistema
aspectos estticos e dinmicos aspectos informacionais, funcionais e de controle
Permitem
identificar e compor objetos complexos Construir estruturas para organizar objetos Compartilhar e reutilizar propriedades Relacionar e agrupar conjuntos de conceitos Redefinir, especializar e generalizar esses conceitos
Classificao de Objetos
Rene as propriedades comuns a um conjunto de objetos
Abstrai todas as caractersticas que no so compartilhadas por todos os objetos considerados
Exemplo: a classe jornal define propriedades comuns aos objetos O Popular, Dirio da Manh, ...
O resultado da aplicao da Abstrao de Classificao sobre um conjunto de objetos uma Classe de Objetos
A Classe permite a representao abstrata de objetos
Todo elemento de uma classe possui as mesmas propriedades
Responsabilidades
-- gerenciar estado do carro -- tratar movimentaes do carro ...
Instanciao de Objeto
Cria uma nova instncia de objeto a partir de uma classe
Instncias so objetos e possuem todas as propriedades de sua classe
Ex.: Folha de So Paulo uma instncia (objeto) da classe Jornal compartilha todas as propriedades da classe Jornal com os demais objetos desta classe define um estado particular (valores) para essas propriedades
Uma instncia o resultado da aplicao da abstrao de instanciao sobre uma Classe de Objetos
uma maneira de criar objetos, mas no a nica maneira
...
<<
create>>
:Carro
:Fbrica
Identificao de Instncias
OID permite distinguir instncias de uma classe A identificao poderia se basear no estado do objeto
Ex: a instncia da classe Jornal cujo valor para o atributo nome Folha de So Paulo Porm, o paradigma OO no exige que o estado de um objeto seja nico em sua classe!
Pode haver duas instncias distintas da classe Jornal cujo valor do atributo nome Folha de So Paulo
Duas instncias podem ser idnticas (mesmo OID) ou iguais (mesmo estado)
Jornal
...
...
Abstrao de Composio
Permite definir um conceito complexo a partir da combinao de outros conceitos
as propriedades de um objeto resultam da aplicao da abstrao de composio sobre um conjunto de atributos, associaes e comportamentos
a estrutura de um objeto complexo definida em termos de estruturas de outros objetos usando uma combinao arbitrria e recursiva de construtores
Ex.: a estrutura da classe Jornal uma tupla composta das propriedades: nome, tiragem, data de fundao, editora, ...
Propriedades da Composio OO
A composio de um objeto complexo
No viola a encapsulao dos sub-objetos
Comunicao exclusivamente via mensagens
Coluna :Coluna
...
...
Supondo OID=356
BarraRolagem
...
...
Supondo OID=227
Abstrao de Especializao
Permite refinar conceitos de uma classe
A especializao de um conceito deve ser compatvel com o conceito original
A subclasse pode tornar mais especfica uma definio da classe original A Edio de Domingo especializa a Edio Semanal do jornal
Abstrao de Generalizao
Permite abstrair diferenas entre classes
As propriedades comuns so sintetizadas em uma nica superclasse (isto , um superconjunto)
Agregao e Composio
Formam grafos de Classes Complexas
Associaes genricas
Formam relacionamentos genricos entre classes
Dependncias
Denotam o uso de uma classe por outra classe
Delegao de Responsabilidades
A estrutura esttica do sistema mostra como os objetos podem se comunicar
Usando esta estrutura um objeto pode redirecionar suas responsabilidades para outros objetos
Este um mecanismo de reutilizao importante para o paradigma OO
A delegao permite que um objeto fatore suas tarefas, dividindo-as com outros objetos
Para o cliente, o objeto realmente faz a operao
De fato, o objeto prov a resposta, mas no faz o servio!
Paradigma OO
Classe de Objetos
Mecanismo para reutilizao de implementao
as propriedades (estrutura e comportamento) de objetos de uma classe so definidas uma nica vez, na classe, e no para cada objeto
Superclasse e Subclasse
A especializao/generalizao origina um relacionamento do tipo -Um entre classes
Mecanismo para reutilizao de projeto
a subclasse reutiliza as solues propostas pela superclasse
Herana
um mecanismo de reutilizao
Um cliente de herana reutiliza (herda) definies de um servidor de herana
Taxonomia de Herana
H vrias classificaes para os mecanismos de herana
quanto escolha das propriedades a reutilizar
total ou parcial
Na Herana Parcial
permitido ao cliente escolher as propriedades que deseja reutilizar
Pode dificultar o entendimento do sistema
Na Herana Mltipla muitos servidores contribuem com propriedades que o cliente reutiliza
Pode gerar conflito de nomes
resoluo pelo sistema (regra default) resoluo pelo projetista (escolha explcita)
Polimorfismo
Um sistema computacional considerado polimrfico se
a mesma funo pode ter comportamentos distintos quando aplicada a diferentes tipos de dados
Ex.: a funo +
aplicada a dois nmeros produz a soma aplicada a dois strings produz a concatenao
Polimorfismo em Sistemas OO
Um sistema OO considerado polimrfico se
a mesma operao pode ter comportamentos distintos quando aplicada a diferentes objetos
Ex.: a operao display aplicada a um objeto texto produz a apresentao de um texto e aplicada sobre um objeto grfico produz uma sada grfica
O polimorfismo verdadeiro mantm a semntica da operao; o polimorfismo ad hoc uma mera coincidncia de nomes
Ex: abrir sobre janela e arquivo tm semnticas diferentes Isto deve ser evitado: causa dificuldade de entendimento!
Polimorfismo Intra-Objeto
um falso polimorfismo
a mesma operao pode ter comportamentos distintos quando aplicada ao mesmo objeto com diferentes argumentos
Ex.: a operao display de um objeto pode ter como argumento o dispositivo de apresentao a apresentao gerada ser diferente para dispositivos de tipos diferentes (tela e impressora, por exemplo)
Polimorfismo e Herana
Muitos sistemas OO se baseiam em polimorfismo para permitir redefinio de comportamento herdado
isto contribui para a flexibilidade e adaptabilidade
um novo objeto pode ser introduzido para realizar todo o comportamento do objeto existente (por herana), adaptando partes desse comportamento a uma nova realidade (por polimorfismo)
O sistema deve selecionar o mtodo a ser executado de acordo com a classe do objeto que recebeu a mensagem
Ex.: a mensagem Desenha( ) pode ser enviada para objetos da superclasse Figura ou para objetos das subclasses Polgono e Crculo Um membro sempre pode ser usado no lugar de uma instncia
O polimorfismo tem que lidar com a compatibilidade de tipos em tempo de execuo (ligao dinmica) No entanto, possvel fazer checagem de tipo em tempo de compilao Isto protege o objeto de mensagens que ele desconhece
Distribuio e replicao
transparncia de localizao, controle de verses e rplicas, evoluo de esquema, recuperao de falhas
Persistncia de Objetos
Objetos transientes morrem com sua aplicao Objetos persistentes permanecem aps a execuo do programa que os criou
Sistemas convencionais oferecem persistncia de dados usando sistemas de BD ou arquivos Em Sistemas OO esta soluo envolve a Linearizao de objetos
um processo potencialmente caro SGBDs OO oferecem solues eficientes uma classe pode conter objetos persistentes e transientes
SGBD OO
Precisam oferecer todos os servios que SGBD tradicionais oferecem
transaes, persistncia, distribuio, recuperao de falhas, ...
Precisariam prover todos os mecanismos de tempo de execuo OO, mas ainda no o fazem com eficincia
nomeao de objetos distribuda, evoluo de esquema, ...
Dificuldades adicionais
ausncia de modelo de dados e linguagem padronizadas (ODMG/OQL uma proposta; SQL-4 outra) ausncia de diretivas de projeto (normalizao OO) Como garantir a qualidade do projeto?
Reviso do paradigma OO
Caractersticas de Sistemas OO:
reutilizao, integrao de dados e funes, facilidade de manuteno (flexibilidade, adaptabilidade, expansibilidade), rastreamento de conceitos, desenvolvimento incremental e evolutivo, ...
Objeto
composto de interface (operaes) e implementao (propriedades: atributos, associaes, mtodos) possui identidade e define um estado para suas propriedades encapsula um conceito e permite que novos conceitos sejam adicionados sem modificar o cdigo do sistema mtodos podem ser adicionados para incluir funcionalidade ao sistema sem modificar o cdigo existente
Reviso do paradigma OO
Classe / Tipo de Objeto
define um molde para construo de objetos permite reutilizar uma definio diversas vezes (instanciao)
Abstraes
modelam o conhecimento e estruturam o sistema OO princpio de dividir para conquistar
Encapsulao
constri Tipo Abstrato de Dados princpio de ocultao de informao
Polimorfismo
mensagem pode ser enviada sem conhecer a classe do servidor extenso/adaptao de comportamento genrico
Reviso do paradigma OO
Reutilizao
pode ser prevista durante projeto
abordagem template esttica, definio implcita e per grupo Herana: reutilizao via compartilhamento de definies
Comunicao
protocolos sncronos/assncronos concorrncia inter/intra objeto (multi-thread) suporte a distribuio e tempo-real (mensagens prioritrias)
Desenvolvimento de Software
Software um produto complexo que necessita de projeto para garantir qualidade
um sistema de qualidade atende aos seus requisitos requisitos tpicos de um bom sistema
produz resultados corretos, de modo rpido e confivel fcil de aprender, de usar, de manufaturar e de testar portvel e compatvel com outros sistemas pode ser facilmente modificado, adaptado e estendido
Ambiente de Desenvolvimento OO
Precisaria oferecer todas as facilidades dos CASE tradicionais
gerncia de configurao, referncias cruzadas, ...
Precisaria prover suporte para mtodos de projeto OO, mas se limita ao suporte programao OO
o ambiente deveria guiar o desenvolvedor no processo de estruturao do software OO: escolha de objetos, interfaces, ...
Dificuldades adicionais
selecionar elementos para reutilizao em bases de objetos que evoluem constantemente propagao de atualizaes nas bases de reutilizao
Enfatizam a encapsulao
dados e comportamento so ocultos no objeto Interfaces bem definidas entre objetos
Processo de Desenvolvimento OO
Um sistema OO
no um conjunto de funes! um conjunto de objetos interagindo em uma arquitetura cliente/servidor
Processo de Desenvolvimento OO
Anlise e Projeto de alto nvel (top-down)
realizados de forma concorrente e iterativa
baseados em um conjunto uniforme de modelos
Conseqncias da Abordagem OO
Processos e estruturas no so congelados
flexibilidade e capacidade de adaptao
Etapas de Desenvolvimento OO
Mtodos OO, em geral, abrangem
1. Especificao baseada em Requisitos
Em termos de objetos e servios, no de funes
Etapas de Desenvolvimento OO
4. Refinamento visando reutilizao
Identificao de objetos compartilhados (composio de objetos) e hierarquias de especializao (herana), reviso de interfaces e protocolos
6. Validao
Testes, feedback dos usurios sobre projeto e produto, realizar nova iterao no ciclo de vida
Reutilizao em Desenvolvimento OO
O ciclo de vida OO visa atingir reutilizao
A idia gastar mais esforo em desenvolvimento e menos em manuteno
biblioteca de classes e padres de projeto representam esforo adicional de desenvolvimento
Fatorao no Desenvolvimento OO
O projeto tradicional monoltico
Feito de uma vez, no incio do ciclo de vida, com pouco conhecimento sobre o problema
O desenvolvimento OO fatorado
O sistema final sintetizado a partir de componentes desenvolvidos isoladamente
Partes do sistema podem estar prontas (biblioteca), outras partes em projeto e outras em implementao
Desenvolvimento OO a Soluo?
O paradigma OO tem potencial, mas no uma panacia!
Deve ser usado de maneira metdica para alcanar os objetivos esperados
reutilizao manutenibilidade e flexibilidade para adaptao encapsulao de informao (information hiding) desenvolvimento iterativo e incremental uniformidade e representatividade de modelos, ...
Mtodos de Desenvolvimento OO
Propem abordagens sistemticas para
representar objetos que compem um sistema especificar um projeto de software usando estes objetos
Projeto OO
Enfoque bottom-up
detalha as propriedades de cada objeto
Enfoque top-down
estrutura: composio, associao e especializao comunicao: interaes em servios complexos
Refinamento do Projeto OO
fatorar e estruturar propriedades
hierarquias de herana
Concluses
Origens e aplicaes do POO Princpios fundamentais do POO Representao de conceitos com o POO Mecanismos essenciais do POO Desenvolvimento de software com o POO Mudanas culturais para POO
Bibliografia
Object-Oriented Concepts, Databases, and Applications. Editado por Won Kim e Frederick Lochovsky. Addison-Wesley, 1989. Communications of the ACM - Special issue on Object-Oriented Paradigm. Vol.33, num.9, set/90. Engenharia de Software. Roger S. Pressman. Ed. McGraw-Hill, quinta edio, 2001. Software Engineering - An Object Oriented Perspective. Eric J. Braude. Ed. John Wiley & Sons, 2001. Design Patterns for Object-Oriented Software Development. Wolfgang Pree. Addison-Wesley, 1994. Object-Oriented Database Systems Concepts and Architectures. Elisa Bertino e Lorenzo Martino. Addison-Wesley, 1993.
Bibliografia
Object-Oriented Software Construction. Bertrand Meyer. Prentice-Hall, 1997, segunda edio. Object-Oriented Modeling and Design for Database Applications. Michael Blaha e William Premerlani. Prentice-Hall, 1998. Anlise e Projeto Orientados a Objetos Estudos de Caso. Edward Yourdon e Carl Argila. Makron Books, 1999. UML Destilled Applying the Standard Object Modeling Language. Martin Fowler e Kendall Scott. Addison-Wesley, 1997. The Unified Modeling Language User Guide. Grady Booch, James Rumbaugh e Ivar Jacobson. Addison-Wesley, 1999. Design Patterns Elements of Reusable Object-Oriented Software. Erich Gamma et al. Addison-Wesley, 1995.