60
Orientação a Objetos Alcides Calsavara [email protected]

Orientação a Objetos Alcides Calsavara [email protected]

Embed Size (px)

Citation preview

Page 1: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Orientação a Objetos

Alcides Calsavara

[email protected]

Page 2: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Objetivo

Estudar técnicas e ferramentas para análise, projeto e implementação de sistemas orientados a objetos (OO)

Page 3: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Ementa

Conceituação de OO Método para modelagem OO

– Modelagem de Objetos– Modelagem Dinâmica– Modelagem Funcional

Programação OO

Page 4: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Bibliografia Básica

James Rumbaugh et al. Modelagem e Projetos Baseados em Objetos. Editora Campus, 1994. ISBN 85-7001-8410-X.

Grady Booch. Object-Oriented Analysis and Design with Applications. Second Edition. Addison-Wesley, 1994. ISBN 0-8053-5340-2.

Ivar Jacobson. Object-Oriented Software Engineering - a Use Case Driven approach. Addison-Wesley, 1996. ISBN 0-201-54435-0.

Peter Coad. Objet Models - Strategies, Patterns & Applications. Prentice-Hall, 1997. ISBN 0-13-840117-9.

Dennis de Champeaux. Object-Oriented Development Process and Metrics. Prentice-Hall, 1997. ISBN 0-13-099755-2.

Gregory Satir and Doug Brown. C++ : The Core Language. O’Reilly & Associates, 1995. ISBN 1-56592-116-X.

Page 5: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Bibliografia Complementar

Jag Sodhi and Prince Sodhi. Object-Oriented Methos for Software Development. McGraw Hill, 1996. ISBN 0-07-059574-7.

Chris Zimmermann (Ed). Advances in Object-Oriented Metalevel Architectures and Reflection. CRC Pr, 1996. ISBN 0-84-932663-X.

Jonathan Pletzke. Advanced Smalltalk.. John Wiley & Sons, 1996. ISBN 0-47-116350-3.

Al Stevens. C++ Database Development. Mis Pr, 1994. ISBN 1-55-828357-9.

Grady Booch and Ed Eykholt (Eds). The Best of Booch: Designing Strategies for Object Technology. Prentice-Hall, 1996. ISBN 0-13-739616-3.

Page 6: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Grupo de Usuários da Tecnologia de Objetos (GUTO) Página WWW

http://www2.pucpr.br/guto/ Lista de discussões

Mensagem para:

[email protected]

Com conteúdo:

sub GUTO-L

Page 7: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Conceitos de OO

Modelagem de Objetos

Page 8: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Vantagens

Independência de implementação Esconder detalhes Flexibilidade Clareza conceitual Modularização Reusabilidade

Page 9: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Áreas de aplicação

Linguagens de programação Bancos de dados Sistemas operacionais Sistemas distribuídos Interface gráfica Métodos de modelagem de sistemas Métodos formais: Z++ Empacotamento de software: classes, componentes Integração de sistemas: CORBA, DCOM Reflexão: tolerância a falhas, reconfiguração

Page 10: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Conceitos fundamentais

Objeto Identidade Encapsulamento Classificação/Instanciação Generalização/Especialização Herança Polimorfismo

Page 11: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Objeto

Um conceito, uma abstração, algo com limites e significados definidos para o problema em questão

Um objeto do mundo real Um conjunto de atributos (estado) e

métodos (comportamento) Uma instância de uma classe

Page 12: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Identidade

Característica peculiar de um objeto que denota a existência em separado do objeto, mesmo que ele tenha os mesmos valores de atributos de outro objeto

Uma identificação única de cada objeto

Page 13: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Encapsulamento

Técnica de modelagem e implementação que separa os aspectos externos de um objeto dos detalhes internos de implementação do mesmo objeto

Os atributos (estado) de objeto só é modificável a partir de seus métodos (interface)

Page 14: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Atributo

Propriedade denominada de uma classe, que descreve o valor de um dado contido por cada objeto da classe

Todo atributo tem um tipo e, opcionalmente, um valor default inicial

Cada instância de uma classe possui todos os atributos definidos pela classe

Page 15: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Método (ou Operação)

Função ou transformação que pode ser aplicada aos objetos de uma classe

Todo método definido para uma classe pode ser aplicado a qualquer instância daquela classe

Um método tem um nome, uma lista de argumentos, um tipo de retorno e uma implementação

Page 16: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Classe

Descrição de um grupo de objetos com propriedades semelhantes, comportamento, relacionamentos e semântica comuns

Instância: um objeto descrito por uma classe

Page 17: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Generalização

Relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe

Especialização: relacionamento inverso Superclasse: versão mais abstrata de

outra classe, a subclasse Subclasse: versão mais refinada de

outra classe, a superclasse

Page 18: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Herança

Mecanismo baseado em objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização

Uma subclasse herda atributos e métodos da superclasse

Page 19: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Polimorfismo Assume muitas formas A propriedade segundo a qual uma operação

(método) pode comportar-se diferentemente em classes diferentes

A subclasse redefine a implementação de um método herdado da superclasse

Onde se espera uma instância de um certa classe pode aparecer uma instância de qualquer subclasse daquela classe

Page 20: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Exemplos/Exercícios

Componentes de uma interface gráfica: botões, menus, barras, ...

Pessoas: aluno, professor, secretária, reitor Veículos: bicicleta, veleiro, carro,

caminhão, avião, planador, motocicleta, cavalo

Habitações: tenda, caverna, barraco, garagem, celeiro, casa, arranha-céu

Page 21: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Ligação

Uma conexão física ou conceitual entre objetos

Exemplo: O país Brasil tem como capital a cidade de Brasília.

Exemplo: O funcionário João trabalha na empresa Transamérica S.A.

Exemplo: O artigo “OO Solutions” foi publicado na conferencia OOPSLA’99.

Page 22: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Associação

Relacionamento entre instâncias de duas ou mais classes descrevendo um grupo de ligações com estrutura e semântica comuns.

Exemplo: Um país tem como capital uma cidade.

Exemplo: Um funcionário trabalha numa empresa.

Page 23: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Agregação

Forma especial de associação, entre o todo e suas partes, na qual o todo é composto pelas partes

Também chamada de herança horizontal Exemplo: Um artigo é publicado em uma

conferência, isto é, o artigo faz parte da conferência (ou dos anais da conferência).

Page 24: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Multiplicidade e Papel

Multiplicidade: Número de instâncias de uma classe que podem se relacionar a uma única instância de um classe associada (ou agregada).

Papel: nome que identifica inequivocamente uma extremidade de uma associação.

Page 25: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Atributo de Ligação Um valor de dados presente em cada ligação

(nível de instâncias) de uma associação (nível de classes)

Uma propriedade da ligação entre objetos, e não dos objetos ligados, propriamente ditos

Exemplos: permissão de acesso que um usuário possui para a um arquivo; o salário de uma pessoa em um emprego em uma companhia

Page 26: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Associação como uma Classe Cada ligação de uma associação é uma

instância de uma classe Uma ligação é um objeto, com atributos e

métodos Útil quando ligações podem participar em

associações com outros objetos Útil quando ligações sofrem operações Exemplo: autorização para usuários em

estações de trabalho

Page 27: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Associação Ternária

Representa ligações entre 3 objetos Não pode ser dividida em associações

binárias sem que haja perda de informações Associações de grau maior que 3 são raras e

devem ser evitadas devido a complexidade de entendimento e implementação

Exemplo: pessoas que são programadoras usam linguagens de programação em projetos

Page 28: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Ordenação em Associações Em alguns casos o conjunto de objetos

associados a um certo objeto apresenta uma ordem

A palavra "ordenado" deve aparecer junto à multiplicade "muitos" de uma associação para indicar que existe uma ordem entre os objetos ligados

Exemplos: as janelas visíveis em uma tela possuem uma ordem; os vértices de um polígono

Page 29: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Associação Qualificada

Relaciona dois objetos e um qualificador O qualificador reduz a multiplicidade Exemplo: Um diretório contém muitos

arquivos, mas é o nome do arquivo dentro do diretório que identifica o arquivo (e identifica um único arquivo)

Maior precisão na informação!!

Page 30: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Uso de Agregação

Na dúvida, use associação! Herança não representa o

relacionamento parte-todo Agregados recursivos são frequentes Agregação normalmente implica em

propagação de operações

Page 31: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Classes Abstratas e Concretas

Classe abstrata: classe que não pode ter instâncias diretas, mas cujos descendentes sim; organizam características comuns a diversas classes; mecanismo para reutilizar código; pode definir operações abstratas (sem um correspondente método)

Classe concreta: classe que pode ter instâncias diretas; não pode definir operações abstratas

Page 32: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Cancelamento para extensão

A nova operação é igual à operação herdada, exceto pelo fato de acrescentar alguns detalhes de comportamento, normalmente afetando novos atributos da subclasse.

Page 33: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Cancelamento para restrição

A nova operação restringe o protocolo (assinatura da operação), podendo reduzir os tipos de argumentos.

A operação herdada fica fechada (restrita) dentro de cada subclasse específica.

Page 34: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Cancelamento para otimização

O novo método tem o mesmo protocolo externo e apresenta o mesmos resultados

A implementação do novo método (algoritmo utilizado) pode ser completamente diferente

Page 35: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Cancelamento por conveniência

Emprego adhoc de herança para reutilizar classes.

Uma nova classe é tornada subclasse de uma classe existente e substitui os métodos inconvenientes.

Semanticamente errado e conduz a problemas de manutenção; recomenda-se criar uma terceira classe (superclasse das demais)

Page 36: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Herança Múltipla Uma classe possui mais de uma subclasse e

herda características de todos os seus ancestrais

Maior capacidade de especificação de classes Maior oportunidade de reutilização Perda em simplicidade conceitual e de

implementação Surgem classes de junção

Page 37: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Modelagem Dinâmica

Page 38: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Modelo Dinâmico

Representa os aspectos de um sistema relativos ao tempo e às modificações de estado

Abrangência:– interações– seqüência de operações– fluxo de controle

Page 39: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Controle de um sistema

Descreve as seqüências de operações que ocorrem em resposta a estímulos externos, sem consideração ao que as operações fazem, sobre o que elas atuam ou como são implementadas.

Page 40: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Conceitos fundamentais

EVENTO: representa um estímulo externo; conduz informação de um objeto para outro.

ESTADO: representa valores (atributos e ligações) de um objeto; estado externo do objeto.

MÁQUINA DE ESTADOS FINITOS

Permite especificação de controle

Page 41: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Diagrama de Estados

Representação gráfica de uma máquina de estados finitos

Representa o padrão de eventos, estados e transições de estados para uma classe

O modelo dinâmico de um sistema é composto por um conjunto de diagramas de estados, uma para cada classe.

Cada máquina de estado funciona de maneira independente; são combinadas através de eventos compartilhados.

Page 42: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Eventos Um evento é algo que acontece

"instantaneamente", em um certo momento. Exemplos:

– pressionar um botão do mouse– aparecer uma janela na tela– partida de um avião– chegada de um avião– tocar um telefone– atender ao telefone

Page 43: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Relacionamentos entre eventos Causal: existe uma ordem entre os

eventos. Exemplo: O vôo 123 deve partir de Chicago antes de chegar a São Francisco.

Concorrente: ordem dos eventos é irrelevante. Exemplo: O vôo 123 pode partir antes ou depois que o vôo 456 parta de Roma. (Se fosse "para Roma", deveríamos considerar se não usam a mesma pista.)

Page 44: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Classes de eventos

Indicam estrutura e comportamentos comuns a eventos.

Simplificam a construção de diagramas de estados.

Exemplo: classe partidas de aviões, com atributos linha aérea, número de vôo, cidade de origem, cidade destino.

O momento ocorrência de um eventos é um atributo implícito.

Page 45: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Cenário Sequência de eventos que ocorrem durante

uma determinada execução do sistema Ilustra uma situação típica do sistema Auxilia no entendimento do problema e na

condução para uma representação geral (modelo dinâmico)

Diagrama de eventos: representação gráfica de um cenário. Exemplo: uma chamada telefônica.

Page 46: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Diagramas de Estados Relaciona eventos e estados Um objeto muda de estado dependendo do

evento e do estado atual. Transição: modificação de estado causada

por um evento (mesmo quando estado final e inicial coincidem).

Um evento pode ser irrelevante para um objeto em um certo estado.

Exemplo: linha telefônica

Page 47: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Tipos de diagramas de estados Diagrama de laço contínuo: representa

um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefônica.

Diagrama de uma só passagem: representa objetos com vida finita; possuem um estado inicial (criação do objeto) e um estado final (destruição do objeto).

Exemplo: jogo de xadrez

Page 48: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Condições

Uma condição é uma função booleana de valores, válida dentro de um intervalo de tempo.

Condições funcionam como guardas nas transições: uma transição só dispara quando ocorre o evento e a condição de guarda for verdadeira.

Exemplo: Pessoa com relação ao atributo "estar de luvas".

Page 49: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Controle de Operações

Atividades e ações podem ser vinculadas a estados e eventos a fim de se especificar o que faz o objeto quando está em um determinado estado e o que faz em resposta a estímulos externos.

Definem o comportamento do objeto!

Page 50: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Atividade

Está sempre vinculada a um estado Consome tempo para se completar É executada continuamente durante o tempo

em que o objeto está num certo estado Notação: faça: atividade Exemplo: Um vendedor logo após ter recebido

dinheiro para pagamento do item vendido deve calcular o troco.

faça: calcular troco

Page 51: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Ação

Está normalmente vinculada a um evento, mas também pode estar vinculada a um estado (ações de entrada, saída e internas)

É executada "instantaneamente" Notação: evento / ação Exemplo: Exibir um menu quando o botão

direito do mouse é pressionado.

botão direito pressionado / exibir menu

Page 52: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Diagramas de Estados Nivelados

Permitem refinamentos sucessivos do modelo dinâmico

Permitem uma descrição estruturada do sistema

Pode-se expandir:– um evento e sua correspondente ação– uma atividade realizada em um certo estado

Exemplo: Máquina de vender

Page 53: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Generalização de Estados

Os estados de um objeto podem ser organizados de forma hierárquica, em super-estados e sub-estados.

Um sub-estado é um refinamento de um super-estado, ie, um sub-estado é um dos possíveis estados do objeto dentro daquele super-estado.

Um sub-estado herda as transições do super-estado; transições que se aplicam ao super-estado também se aplicam ao sub-estado.

Exemplos: linha telefônica, transmissão automática de um automóvel

Page 54: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Generalização de Eventos Os eventos que ocorrem em um sistema podem

ser organizados de forma hierárquica, em super-eventos e sub-eventos.

Um sub-evento herda atributos do super-evento. Onde um evento é descrito qualquer sub-evento

seu é implicitamente descrito. A generalização de eventos facilita a abstração e

permite concisão na representação de diagramas. Exemplo: Entrada do usuário.

Page 55: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Concorrência de Agregação O estado de um objeto composto (um agregado) é

determinado pelos estados dos objetos que o compõem. Exemplo: O estado de um carro é determinado pelo

estado da ignição, da transmissão, do freio, do acelerador, do motor, ...

Os componentes de um agregado normalmente interagem entre si: a mudança de estado de um componente pode disparar uma transição em outro componente.

A interação entre diagramas de estados de componentes é representada através de eventos compartilhados e/ou condições de guarda.

Page 56: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Concorrência Interna de Objetos

O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligações em sub-diagramas.

O estado do objeto compreende um estado de cada sub-diagrama.

Um mesmo evento pode causar transições em mais de um sub-diagrama.

Exemplo: Jogo de bridge rubber.

Page 57: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Transição Automática

Disparada quando a atividade vinculada a um estado termina

O "evento" que causa a transição é o término da atividade

Exemplo: Máquina de vender no estado correspondente a atividade testar item e calcular troco pode disparar uma de quatro transições automáticas.

Page 58: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Ações de Entrada e de Saída

Ações vinculadas ao ato de entrar ou sair de um estado

Não adicionam poder de expressão, mas permitem uma representação mais concisa

Exemplo: Controle de uma porta de garagem

Page 59: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Envio de Eventos

Uma ação pode ser especificada como enviar um certo evento para outro objeto.

Notação: enviar E (atributos)

(palavra enviar pode ser omitida) Exemplo: Uma linha telefônica envia o evento

ligar(número-de-telefone) para o comutador quando um número completo é discado.

número completo / ligar(número-de-telefone)

Page 60: Orientação a Objetos Alcides Calsavara alcides@epsilon.pucpr.br

Sincronização de Eventos Concorrentes

Um objeto pode executar várias atividades de forma concorrente (paralela).

As atividades não são necessariamente sincronizadas, mas todas devem terminar para que ocorra transição de estado.

Exemplo: Caixa automática.