modelação oo0 modelação e projecto orientados por objectos gabriel david [email protected] faculdade...

67
Modelação OO 1 Modelação e Projecto Orientados por Objectos Gabriel David [email protected] Faculdade de Engenharia da Universidade do Porto

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO1

Modelação e Projecto

Orientados por Objectos

Gabriel [email protected]

Faculdade de Engenharia da Universidade do Porto

Page 2: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO2

Modelação e projecto orientados por objectos

Sumário

• Conceitos de modelação

• Metodologia de projecto

• Implementação • introdução

• modelação de objectos

• modelação dinâmica

• modelação funcional

OMT - Object Modeling Technique (Rumbaugh)

UML - Unified Modeling Language (Rumbaugh, Jacobson, Booch)

Page 3: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO3

Modelação

Exemplos: maquetes de arquitectura, modelos de aviação e de engenharia hidráulica, esboços de pintura, planos de livros

Utilidade

• testar um artefacto antes de o construir, para detectar falhas de forma barata

- modelos físicos (reproduzir à escala os fenómenos essenciais do artefacto)

- simulação computacional (cada vez mais barata do que modelos físicos, mas exige uma descrição das leis que governam o artefacto)

• comunicar com os clientes, para validar a especificação

• visualizar, para assentar as ideias gerais e começar a pormenorizar cada parte

• reduzir a complexidade, para tornar a realidade manuseável

Modelo - abstracção de alguma coisa com o objectivo de a compreender antes de a construir

Modelo - abstracção de alguma coisa com o objectivo de a compreender antes de a construir

Page 4: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO4

Abstracção

Abstracção - eliminação dos aspectos irrelevantes para o fim em causa

Abstracção - eliminação dos aspectos irrelevantes para o fim em causa

capacidade fundamental que permite lidar com a complexidade; cérebro humano só manuseia uma quantidade limitada de informação simultaneamente

[Ex: homem da visão fotográfica]

• modelos são adequados ou inadequados relativamente ao fim pretendido

• não há modelos correctos em absoluto

• sistemas complexos: pode ser útil construir modelos segundo várias perspectivas complementares [maquete de arquitectura e projectos de especialidade de uma casa]

• captar os aspectos cruciais sem introduzir detalhes estranhos ao problema implica usar uma linguagem suficientemente expressiva [Português fundamental; assembly]

Page 5: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO5

Modelos orientados por objectos

raciocinar sobre problemas usando modelos organizados em torno de conceitos do mundo real

objectos fornecem nível de abstracção adequado

contraste com a programação estruturada: dados e comportamento bastante desligados

modelos OO úteis para:

• compreender problemas

• comunicar com peritos do domínio da aplicação

• modelar organizações

• preparar documentação

• projectar programas e bases de dados

objecto = estrutura de dados + comportamentoobjecto = estrutura de dados + comportamento

Page 6: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO6

Características dos objectos Identidade - dados constituídos por entidades discretas e distinguíveis: os objectos

(concretos ou conceptuais)

• dois objectos são distintos, mesmo que todos os valores dos seus atributos sejam iguais, se as suas identidades forem diferentes

• referências são uniformes e independentes do conteúdo admissíveis colecções de objectos de naturezas diferentes

Classificação - objectos com a mesma estrutura de dados (atributos) e o mesmo comportamento (operações) são agrupados numa classe

• classe é uma abstracção que descreve as propriedades importantes para uma aplicação (em sentido geral) e ignora o resto

• a escolha das classes é arbitrária e depende da aplicação• cada objecto é uma instância de uma classe

- partilha com as outras instâncias dessa classe os nomes dos atributos e as operações

- tem os seus próprios valores nos atributos

- sabe de que classe é

Page 7: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO7

Classificação

Objectos polígonos

Classe Polígono

Atributos

vértices

espessura das arestas

côr do interior

Operações

desenha

apaga

moveabstracção

#1 ({v1 v2 v3 v4} 1 branco)

#2 ({v5 v6 v7} 2 branco)

#3 ({v8 v9 v10 v11} 1 preto)

instâncias

Page 8: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO8

Características dos objectos (cont.)

Polimorfismo - a mesma operação comporta-se de forma diferente em diferentes classes [move terá efeitos diferentes nas classes Polígono e PeçaXadrez)

• uma implementação específica de uma operação por uma classe chama-se método• pode haver vários métodos associados à mesma operação, em classes diferentes• operação é uma abstracção de comportamento análogo em objectos de tipos diferentes

• implementar novas classes não exige o conhecimento dos métodos das outras classes: basta definir localmente os novos comportamentos, adicionando métodos para as operações aplicáveis

Herança - partilha de atributos e operações entre classes baseada numa relação hierárquica• ao classificar os objectos, se uma classe A tiver basicamente os mesmos atributos e

operações que uma classe B, acrescidos de outros atributos ou operações, não se repete a definição: diz-se que A é uma subclasse de B (B é superclasse de A) factorização de propriedades comuns

• cada subclasse herda as propriedades da superclasse e acrescenta as suas próprias [JanelaDeslizante é uma subclasse de Janela, de quem herda a região do écran, acrescentando uma barra de deslocamento e um offset] reutilização

• além de acrescentar operações, uma subclasse pode redefinir operações da superclasse, indicando um novo método refinamento

Page 9: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO9

Desenvolvimento OO

nova forma de pensar sobre software, baseada em abstracções do mundo real, e não uma técnica de programação

desenvolvimento = análise, projecto e implementação; as outras fases do ciclo de vida do software (documentação , integração, manutenção e aperfeiçoamento) não serão referidas, embora beneficiem da clareza do projecto conseguida

essência do desenvolvimento OO: identificação e organização dos conceitos do domínio da aplicação e não da sua representação final numa linguagem de programação

o esforço de atacar os verdadeiros problemas conceptuais em vez das questões de implementação é compensador

• erros de projecto descobertos só na fase de implementação têm um custo muito superior aos detectados em fases anteriores

• concentrar na implementação demasiado cedo limita as opções no projecto

• só depois de ter os conceitos inerentes à aplicação identificados, compreendidos e organizados é possível definir adequadamente os detalhes das estruturas de dados e das funções

• desenvolvimento independente da linguagem até às fases finais (OO ou não)

Page 10: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO10

Metodologia 1

ANÁLISE

PROJECTODO SISTEMA

PROJECTO DOS OBJECTOS

IMPLEMENTAÇÃO

• ponto de partida: formulação de problema pelo cliente

• analista (+ cliente) constrói um modelo da situação do mundo real, mostrando as propriedades importantes

• modelo da análise: abstracção concisa e precisa do que o sistema deve fazer e não de como fazê-lo

• objectos do modelo são conceitos do domínio da aplicação

• o perito do domínio deve ser capaz de o compreender e criticar

• modelo não deve conter conceitos da implementação computacional

• [a classe Janela deve ser descrita em termos dos atributos e operações visíveis pelo utilizador]

Page 11: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO11

Metodologia 2

ANÁLISE

PROJECTODO SISTEMA

PROJECTO DOS OBJECTOS

IMPLEMENTAÇÃO

• contém decisões de alto nível sobre a arquitectura global

• o sistema em causa é organizado em subsistemas, baseado no modelo da análise e na arquitectura

• o projectista de sistema decide quais as características de desempenho a optimizar e a estratégia de o conseguir

• [as modificações no écran deverão ser rápidas e suaves escolha de protocolo de comunicações e esquema de cache]

Page 12: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO12

Metodologia 3

ANÁLISE

PROJECTODO SISTEMA

PROJECTO DOS OBJECTOS

IMPLEMENTAÇÃO

• o projectista de objectos elabora um modelo de projecto baseado no modelo da análise, mas com detalhes da solução, de acordo com a estratégia do projecto de sistema

• foco: estruturas de dados e algoritmos da implementação de cada classe

• classes da análise mantém significado, mas são aumentadas com objectos computacionais

• tanto os objectos do domínio da aplicação como os objectos computacionais são descritos usando os mesmos conceitos e notação OO, embora estejam em diferentes planos conceptuais

• [operações da classe Janela especificadas em termos do hardware e do sistema operativo subjacentes]

Page 13: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO13

Metodologia 4

ANÁLISE

PROJECTODO SISTEMA

PROJECTO DOS OBJECTOS

IMPLEMENTAÇÃO

• classes e associações desenvolvidas durante o projecto dos objectos são traduzidas para uma linguagem particular, uma BD ou uma implementação em hardware

• fase essencialmente automatizável (decisões difíceis já tomadas)

• a linguagem alvo influencia as decisões do projecto, mas este não deve depender de pormenores da linguagem

• implementação deve garantir fácil referenciação ao projecto para manter flexibilidade e extensibilidade

• a linguagem não tem que ser OO, embora estas facilitem a correspondência com o projecto

• [a classe Janela é codificada numa linguagem, com chamadas ao sistema gráfico da máquina]

Page 14: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO14

Metodologia: conclusão

conceitos OO (identidade, classificação, polimorfismo, herança) aplicados ao longo do ciclo de desenvolvimento de software

as classes de uma fase são levadas para as fases subsequentes, sem alteração da notação, embora vão sendo progressivamente detalhadas

algumas classes são introduzidas só no projecto ou na implementação: árvores, tabelas de dispersão ou listas ligadas não são objectos do domínio da aplicação e portanto não aparecem na análise; são introduzidos no projecto, para suportar algoritmos usados na implementação computacional de objectos do mundo real

na implementação codificam-se tanto as construções do domínio da aplicação como do domínio da solução

a vista da análise e a vista da implementação são ambas representações adequadas do sistema, só que a níveis de abstracção diferentes e com propósitos diversos

Page 15: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO15

Técnica de modelação de objectos

é útil olhar para o sistema segundo três perspectivas complementares, todas necessárias para uma profunda compreensão do sistema

• modelo de objectos - aspecto estático, estrutural, dos dados

• modelo dinâmico - aspecto temporal, comportamental, de controlo

• modelo funcional - aspecto transformacional, de função

um procedimento típico incorpora os três aspectos: usa estruturas de dados (modelo de objectos), sequencia operações no tempo (modelo dinâmico) e transforma valores (modelo funcional)

os três modelos

• representam vistas ortogonais representadas e manipuladas com notação uniforme

• são examináveis e compreensíveis de forma relativamente autónoma

• têm interligações limitadas e explícitas (se o projecto for bom)

• evoluem ao longo das várias fases do desenvolvimento

Page 16: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO16

Modelos

análise projecto sistemaobjectos implementação fases do

desenvolvimento

modelo deobjectos

modelodinâmico

modelofuncional

vistas dosistema

Page 17: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO17

Modelo de objectos descreve a estrutura dos objectos num sistema

• identidade

• associações com outros objectos

• atributos

• operações

é o modelo mais fundamental pois é necessário descrever o que está a ser transformado antes de descrever quando e como isso acontece

objectos são as unidades de percepção do mundo, as moléculas dos modelos

objectivo: capturar os conceitos do mundo real que são importantes para a aplicação

• no modelo da análise não devem existir objectos computacionais, a menos que o problema seja computacional [um sistema operativo]

• o modelo do projecto descreve a solução do problema e já aparecem objectos computacionais

notação gráfica é diagrama de objectos: grafo cujos nós são classes, organizadas em hierarquias, e cujos arcos são associações entre classes; as classes definem os atributos presentes em cada instância e indicam as operações associadas

Page 18: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO18

Modelo dinâmico

descreve os aspectos do sistema relacionados com a evolução temporal e a sequenciação das operações: eventos que marcam alterações, sequências de eventos, estados que dão o contexto aos eventos

captura o aspecto do controlo, das sequências de operações, sem atender ao que fazem, sobre o que trabalham, ou como estão implementadas

notação gráfica é diagrama de estados (um por classe): grafo cujos nós são estados e cujos arcos são transições entre estados causadas por eventos

• acções nos diagramas de estados correspondem a funções no modelo funcional

• os eventos são operações no modelo de objectos

Page 19: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO19

Modelo funcional

descreve as transformações de valores: funções, correspondências, restrições, dependências funcionais; captura o que o sistema faz, independentemente de como e quando

exemplos de modelos funcionais: árvores de expressões e folhas de cálculo

representado por diagramas de fluxo de dados (DFD): são grafos cujos nós são processos e cujos arcos são fluxos de dados (representam computações)

• funções são invocadas por acções no modelo dinâmico e

• aparecem como operações no modelo de objectos

Page 20: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO20

Comparação

problemas diferentes põem ênfase diferente nos vários modelos, mas os três são necessários em qualquer grande sistema

quando os modelos se revelarem insuficientes, usar linguagem natural

metodologias orientadas por funções (Yourdon, DeMarco): ênfase na especificação e decomposição da funcionalidade do sistema

• parece a implementação mais directa de uma solução mas fica muito dependente dos requisitos, os quais tendem a evoluir mais rapidamente do que as organizações

• metodologia OO identifica primeiro os objectos do domínio de aplicação e depois adapta os procedimentos em torno deles; a estrutura fica mais imune a alterações nos requisitos, porque parte do ambiente do problema, em vez de partir de um resultado específico pretendido

Page 21: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO21

Temas OO

abstracção

• focar os aspectos essenciais, inerentes à entidade, ignorando os acidentais

• concentrar no que o objecto é e faz, antes de em como implementar

• muitas linguagens modernas suportam abstracção de dados, mas a herança e o polimorfismo dão-lhe um poder adicional

• uso adequado da abstracção (estilo de projecto independente da linguagem) permite que o mesmo modelo seja usado para a análise, projecto de alto-nível, estrutura do programa, estrutura da base de dados e documentação

encapsulamento

• esconder a informação: separar os aspectos externos de um objecto, acessíveis aos outros objectos, dos detalhes de implementação internos, que ficam escondidos e permitem modificações locais

• a capacidade de combinar dados e comportamento na mesma entidade reforça o conceito de encapsulamento

Page 22: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO22

Mais temas OO dados + comportamento

• o chamador de uma operação não precisa de considerar as implementações: isso é responsabilidade do objecto receptor; o polimorfismo permite que uma única operação desenha seja capaz de desenhar um gráfico complexo, desde que cada objecto a desenhar implemente adequadamente essa operação; acrescentar classes não obriga a mexer no código das pre-existentes

partilha• herança de dados e comportamento reduz redundância nas subclasses• reutilização de componentes em bibliotecas é suportado mas exige planeamento e

um esforço adicional de generalização dos objectos definidos (elemento responsável pela reutilização nas equipas de desenvolvimento)

estrutura de objectos• acento na definição do que o objecto é, mais do que em como é usado• a natureza dos objectos tende a ser mais estável do que os usos que se fazem deles• maior ênfase na estrutura de dados do que na estrutura de procedimentos

sinergia• várias das características das linguagens OO podem ser encontradas isoladamente

noutras linguagens; é o conjunto de todas elas que fazem da programação por objectos um novo paradigma

Page 23: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO23

Modelação de objectos

o mais importante dos três modelos

sistema construído em torno dos objectos e não em torno da funcionalidade

modelo OO corresponde de perto ao mundo real robustez

Modelo de objectos - captura a estrutura estática do sistema• objectos• associações entre objectos• atributos

• operações

Modelo de objectos - captura a estrutura estática do sistema• objectos• associações entre objectos• atributos

• operações

Objecto - conceito, abstracção ou coisa com fronteira bem definida e com significado para o problema

Objecto - conceito, abstracção ou coisa com fronteira bem definida e com significado para o problema

• promove a compreensão do mundo real

• fornece uma base prática para a implementação

decomposição de um problema em objectos depende do discernimento do analista e da natureza do problema

identidade

Page 24: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO24

Classes

[classes: Pessoa, Companhia, Animal, Processo, Janela]

objectos numa classe partilham o mesmo intento semântico, para lá de terem o mesmo padrão de atributos e operações

[tanto as empresas como as pessoas podem ser caracterizadas por NumFiscal, Nome, Morada, Telefone; é contudo razoável colocá-las em classes diferentes, atendendo à sua semântica; a não ser que, por exemplo do ponto de vista de um banco, sejam todos clientes]

projectista decide

classe de um objecto - propriedade implícita do objecto Se os objectos são o que importa, porquê as classes?

• abstracção• factorização• reutilização [move em Polígonos (mas suporta diferenciação: área)]

Classe - descreve um grupo de objectos com propriedades semelhantes (atributos), comportamento comum (operações), idêntico relacionamento com outros objectos e a mesma semântica

Classe - descreve um grupo de objectos com propriedades semelhantes (atributos), comportamento comum (operações), idêntico relacionamento com outros objectos e a mesma semântica

Page 25: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO25

Diagramas de objectos diagramas de objectos úteis para modelação abstracta e para projectar programas

notação gráfica concisa, fácil de entender e que na prática funciona

diagrama de objectos

diagramade classes

diagramade instâncias

• esquema, padrão ou template• descreve muitas instâncias, o caso geral

• descreve o interrelacionamento de um conjunto particular de objectos• útil para exemplos e casos de teste (cenários)

classes e instâncias podem aparecer no mesmo diagrama de objectos - normalmente não interessa misturar (excepto para meta-dados)

Pessoa (Pessoa)João Silva

(Pessoa)Maria Santos

(Pessoa)

classe objectos

nome da classe: negrito, maiúsculasnome da classe: negrito, maiúsculas, entre parêntesisnomes de objectos: fonte normal

Page 26: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO26

Atributos

[o país Canadá é um objecto cujo atributo nome tem o valor "Canadá" (cadeia); a capital do Canadá é um objecto cidade e não deve ser modelada como um atributo, mas antes como uma associação entre um objecto país e um objecto cidade, cujo nome é a cadeia "Otawa"]

Pessoa

(Pessoa)João Silva

2472

(Pessoa)Maria Santos

5260

classe

objectos

nome: stringnasce: integerpeso: float =75

Atributo - valor mantido pelos objectos de uma classeAtributo - valor mantido pelos objectos de uma classe

[nome, idade e peso, atributos das instâncias de Pessoa;

côr, peso e ano, atributos das instâncias de Carro]

• cada atributo tem um valor em cada instância

• cada nome de atributo é único, na classe [ver peso]

• um atributo deve ser um valor puro e não um objecto

• valores puros não têm identidade: todos os 17 são indistinguíveis

• não confundir identificadores internos com atributos

• atributos são listados na segunda parte da caixa de classe

• a seguir ao nome podem indicar-se o tipo e o valor por omissão

Page 27: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO27

Operações e métodos

Operação - função ou transformação que pode ser aplicada a objectos ou por objectos duma classe

Operação - função ou transformação que pode ser aplicada a objectos ou por objectos duma classe

[operações na classe Janela: abrir, fechar, esconder, desenhar] todos os objectos de uma classe partilham as mesmas operações

a efectivação de uma operação tem sempre um objecto alvo como argumento implícito

comportamento da operação depende da classe do alvo (um objecto sabe qual a sua classe)

a mesma operação abstracta corresponde a vários métodos diferentes (polimorfismo)

[a operação desenhar numa instância de Janela pode ser aplicar a todos os diferentes componentes dessa janela a operação desenhar, a qual num caso desenhará um botão, noutro um painel, etc]

operações podem ter argumentos explícitos, mas isso não afecta a escolha do método

todos os métodos para uma operação devem ter a mesma assinatura (número e tipo dos argumentos e tipo do resultado)

uma operação deve ser uma abstracção com uma semântica consistente: não usar o mesmo nome para conceitos distintos [inverter uma matriz e inverter uma figura plana]

Page 28: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO28

Tipos de operações

Pessoa

classe

nome: stringnasc: integerpeso: float =75

idade (): integermuda_peso (novo: integer)

operações no terço inferior da caixa da classe

° nome, lista de argumentos e tipo do resultado

° ausência de tipo do resultado não há retorno

categorias de operações

° operações com efeitos laterais [muda_peso]

° perguntas - cálculo de um valor sem modificar os objectos

° atributos derivados - perguntas sem argumentos explícitos [idade]

um atributo derivado só depende do objecto e pode ser visto como uma propriedade do objecto

° escolha dos atributos base e dos atributos derivados é arbitrária

° evitar sobre-especificar o estado do objecto

Page 29: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO29

Notação para classes

nome-atributo-1 : tipo-1 = valor-omissão-1

nome-atributo-2 : tipo-2 = valor-omissão-2

°°°

nome-operação-1 (lista-argumentos-1) : tipo-resultado-1

nome-operação-2 (lista-argumentos-2) : tipo-resultado-2

°°°

Nome-classe

dependendo do detalhe pretendido, os atributos, as operações e as listas de argumentos podem ser omitidos

Page 30: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO30

Associações

Ligação - é uma conexão física ou conceptual entre duas instâncias de objectos

Ligação - é uma conexão física ou conceptual entre duas instâncias de objectos

? João Silva Trabalha-para Magol

• formal: ligação é um tuplo, uma sequência de instâncias de objectos,

(João Silva, Magol)

• ligação é uma instância de associação

Associação - descreve um conjunto de ligações com estrutura e semântica comuns

Associação - descreve um conjunto de ligações com estrutura e semântica comuns

? Trabalha-para

• todas as ligações de uma associação relacionam objectos das mesmas classes

• associações correspondem muitas vezes a verbos na especificação

• associações descrevem conjuntos de ligações potenciais

classes descrevem conjuntos de objectos potenciais

Page 31: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO31

bidireccionais - podem ser conceptualmente atravessadas em qualquer direcção

• nome pode ser direccional [Trabalha-para]; define sentido directo, sentido inverso

• nome duplo [Emprega] refere-se à mesma associação; tem o mesmo significado

implementação

• apontador - atributo num objecto com referência explícita para outro objecto

class Pessoa class Empresa

char *nome; char *nome;

int idade; char *morada;

Empresa *emprego; Setof(Pessoa) *empregados;

• implementação com apontadores, sim; modelo com apontadores, não

• uma ligação não é parte de um objecto; depende de ambos simultaneamente um só facto no modelo

- apontadores directo e inverso são dependentes (consistência)

- implementação pode ter apontadores só num sentido, se for o único usado

• todos os relacionamentos entre classes devem ser modelados como associações, mesmo em projecto de programas (nas BD está mais aceite)

Características das associações

Page 32: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO32

Aridade

País

(País)Canadá

(Cidade)Ottawa

nome: string

Cidade

(Projecto)contabilidade

(Pessoa)Maria Santos

diagramade classes

diagramade instâncias

nome: string

(País)França

(Cidade)Paris

(País)Senegal

(Cidade)Dakar

Tem-capital

Tem-capital

Tem-capital

Tem-capital

Projecto Linguagem

Pessoa

(Projecto)CAD

(Linguagem)COBOL

(Linguagem)C

• associações binária e ternária

• ordem superior rara

• nome da associação optativo

• ligação ternária é facto atómico e indivisível

Page 33: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO33

Multiplicidade

Recta

( Recta )L1

(Ponto)P1

nome

Ponto

nome

( Recta )L2

(Ponto)P2

( Recta )L3

( Recta )L4

Cruza

( Recta )L5

P1 P2

L3

L1 L2 L4L5

diagramade classes

diagramade instâncias

amostrade dados

• Tem-capital é uma associação um-para-um, i.e., "cada País têm uma só Capital" e "cada Capital administra um só País"

• Cruza é uma associação muitos-para-muitos (2+ quer dizer que cada Ponto é o cruzamento de, pelo menos, duas rectas)

• multiplicidade metida só numa segunda fase; expõe pressupostos escondidos no modelo; pode ser qualquer intervalo

0 ou mais (muitos) 0 ou 1 (optativo) exactamente 1

2+

Page 34: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO34

Importância

multiplicidade

• subestimar restringe a flexibilidade da aplicação

• sobreestimar dá sobrecarga no uso e perda de informação semântica

ordem superior

• notação de bola cheia/vazia ambígua

associações importantes para modelos LP como para BD ou problemas do mundo real

• não pertencem a uma única classe

• portanto, não violam o encapsulamento da informação em classes

• incapacidade de lidar com associações em pé de igualdade com as classes leva a modelos com pressupostos escondidos

técnica de implementação (com apontadores ou não) deve ser adiada até às últimas fases de projecto

Page 35: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO35

Atributos das ligações

Atributo - propriedade dos objectos numa classe.

Atributo de ligação - propriedade das ligações numa associação.

Atributo - propriedade dos objectos numa classe.

Atributo de ligação - propriedade das ligações numa associação.

Ficheiro UtilizadorAcessível por

permissão

/etc/termcap (read) João Silva/etc/termcap (read-write) Maria Santos/usr/silva/.login (read-write) João Silva

• cada atributo de ligação tem um valor em cada ligação

• notação realça a semelhança entre os atributos dos objectos e das ligações

• numa associação muitos-para-muitos não faz sentido pôr o atributo de ligação em nenhum dos objectos

id nome

Page 36: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO36

Associações muitos-para-um

Pessoa EmpresaTrabalha para

saláriocargo

nomebimorada

nomemorada

Chefia

avaliação

trabalhador

chefe

• a associação Chefia indica , para cada trabalhador, o seu chefe directo

• necessita de papéis nos ramos pois é recursiva

• cada chefe pode ter 0-ou-mais trabalhadores chefiados; cada empregado pode ter 0-ou-1 chefes (contempla o director-geral, que não tem chefe)

• nas associações muitos-para-um (ou um-para-um) é possível deslocar os atributos de ligação para o lado oposto a um, sem perda de informação; mas semanticamente tais atributos são de ligação (o salário e o cargo são da Pessoa na Empresa) e aí devem permanecer por clareza e para permitir alterar a multiplicidade

?

Page 37: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO37

Associação como classe

Utilizador WorkstationAutorizado em

prioridadeprivilégios

sessão

Autorização

Directóriodirectório inicial

• generalização dos atributos de ligação: acrescentar operações de ligação e dar um nome modela-se a associação como uma classe

• as ligações ficam instâncias da classe

• útil quando se pretende que a associação participe noutras associações, ou que seja sujeita a operações

Page 38: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO38

Papéis

DirectórioUtilizador

conteúdo

continente

dono

utilizadorautorizado

Papel - um extremo de uma associaçãoPapel - um extremo de uma associação

• pode existir um nome do papel, que será único; se existirem nomes em todos os papéis, o nome da associação é dispensável

• nas associações binárias, o papel identifica o conjunto de objectos associado com um objecto no outro extremo [para um Directório quais os utilizadores autorizados]

• funciona como um atributo derivado do objecto no outro extremo; permite atravessar a associação sem a mencionar [para um Directório qual o dono]; substantivo na especificação

• relativamente a uma classe, os nomes dos papéis nos extremos afastados das respectivas associações devem ser únicos e diferentes dos atributos da classe

• nomes dos papéis necessários- se a associação envolver mais do que uma vez a mesma classe- para distinguir duas associações entre o mesmo par de classes

• casos simples: basta o nome da classe destino• associações ternárias ou superiores: papéis não funcionam como atributos derivados

Page 39: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO39

Ordenação

Directório Ficheiro

admita-se que cada ficheiro só pode estar num directório

• a indicação {ordered} é um caso especial de restrição

• aplicada no lado muitos

• faz com que os objectos fiquem ordenados

{ordered}

Page 40: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO40

Qualificação

Directório Ficheironome ficheiro

associação qualificada - caso particular de ternária, relaciona duas classes e um qualificador

qualificador - atributo especial que reduz a multiplicidade; distingue entre os objectos do lado muitos

Directório + nome ficheiro identifica um ficheiro: reduz a um-para-um, neste caso (pode fazer só uma partição no resultado, sem reduzir para um)

vantagem: melhora o rigor semântico e aumenta a visibilidade dos caminhos de navegação

Page 41: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO41

Agregação

representa o relacionamento parte-todo ou é-parte-de entre componentes e montagem

forma de associação com semântica suplementar

• transitiva (se A é parte de B e B é parte de C, A é parte de C)

• anti-simétrica (se A é parte de B, então B não é parte de A)

• algumas propriedades da montagem propagam-se aos componentes, possivelmente modificadas

- se não houver propagação, a agregação é inútil [a velocidade e a posição de um puxador são obtidas da porta de que aquele faz parte]

o losango indica o lado da montagem

Documento Parágrafos Frases1+ 1+

Page 42: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO42

Agregação multinível

Caixa sistema

Processador

Rato

Memória

Teclado

Ventoínha

Monitor

Chassis

Computador

1+

um Computador é constituído por um ou mais Monitores, uma Caixa de Sistema, um Rato optativo e um Teclado. A Caixa de Sistema por sua vez é constituída por um Chassis, um Processador, muitos chips de Memória e uma Ventoínha optativa.

agregação: uma classe de montagem + uma classe de componentes; vários componentes de tipos diferentes correspondem a várias agregações, que se podem desenhar juntas numa hierarquia

os componentes podem ou não ter existência autónoma

Page 43: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO43

Generalização e herança

Generalização - é o relacionamento entre uma classe (superclasse) e uma ou mais versões refinadas de si própria (subclasses).

Herança - é o mecanismo pelo qual as propriedades (atributos e operações) da superclasse são partilhadas pelas subclasses.

Generalização - é o relacionamento entre uma classe (superclasse) e uma ou mais versões refinadas de si própria (subclasses).

Herança - é o mecanismo pelo qual as propriedades (atributos e operações) da superclasse são partilhadas pelas subclasses.

is-a : sinónimo de generalização, porque qualquer instância de uma subclasse é também instância da superclasse

transitividade: ascendente e descendente; o estado de uma instância contém valores para todos os atributos de todas as classes ascendentes e são-lhe aplicáveis todas as operações dos ascendentes

especialização significa que as subclasses podem adicionar os seus próprios atributos e operações (é a generalização vista das subclasses)

discriminador - atributo enumerado (tantos valores quantas as subclasses) que indica que propriedade de um objecto é abstraída por uma generalização particular (optativo)

Page 44: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO44

Hierarquia

Dimensão 1 Dimensão 2

Círculo

Dimensão 0

Figura

côrcentroespessuracanetamoverseleccionarrodarmostrar

orientaçãoenchimentoescalarencher

orientação

escalar

diâmetro

mostrarrodar

Polígono

ladosvérticesmostrar

Spline

pontos

mostrar

Arco

raioângulomostrar

Linha

extremos

mostrar

Ponto

mostrar

dimensionalidade

Page 45: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO45

Uso da generalização

evitar hierarquias muito profundas (até 3 ou 4 níveis)

generalização:

• modelação conceptual - estrutura as classes, evidencia o que é comum e o que é distinto e reduz o número de aspectos diferentes

• implementação - promove a reutilização de código

revogação (overriding) - forma de criar excepções ao mecanismo de herança através da redefinição de uma propriedade de uma superclasse; a definição mais específica impõe-se

especificar comportamento que depende da subclasse [mostrar]

• restringir uma especificação

• melhorar a eficiência [rodar em Círculo]

a redefinição deve manter a assinatura

uma subclasse é um caso especial da superclasse - má prática ir buscar uma classe parecida para modificar, ignorando certas partes, se a resultante não for efectivamente subclasse

Page 46: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO46

Agrupamento

Módulo - vista que combina classes, associações e generalizações, segundo uma determinada perspectiva

• construção lógica, mas de fronteiras arbitrárias

• nível de empacotamento entre as classes e o modelo completo

• indicar o nome do módulo ao cimo de cada folha

• habitualmente a densidade de ligações inter-módulos é inferior à densidade intra-módulo

Folha - partição de um módulo correspondente a uma folha física

• não é uma construção lógica, mas apenas notacional

• no máximo um módulo por folha; pode haver módulos que ocupem várias folhas

• associações e generalizações aparecem só numa folha; classes podem aparecer em várias (indicar, junto às classes partilhadas, as referências das folhas em que ocorrem)

Page 47: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO47

Expressões aritméticas

Termo

Variável

nome

Expressão Constante

operador bin valor

(X+ Y/2)/(X/3 + Y)

(Expressão) /

(Expressão) +

(Expressão) +

(Expressão) /

(Constante) 3

(Variável) X

(Expressão) /

(Variável) Y

(Constante) 2

1º op2º op

1º op

1º op

1º op

1º op

1º op

2º op

2º op

2º op

2º op

2º op

Page 48: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO48

Agregação versus associação

Agregação - forma de associação com semântica mais forte em que um objecto agregado é feito de componentes (part-of). O agregado é semanticamente uma extensão de objecto, tratado como uma unidade em muitas operações.

Agregação - forma de associação com semântica mais forte em que um objecto agregado é feito de componentes (part-of). O agregado é semanticamente uma extensão de objecto, tratado como uma unidade em muitas operações.

dois objectos habitualmente vistos como independentes, embora frequentemente ligados associação

testes para decidir pela agregação• usa-se a expressão parte de?• algumas operações no todo são automaticamente aplicadas às partes?• alguns valores de atributos são propagados às partes?

• há uma assimetria na associação, em que uma classe é subordinada de outra?

opção é matéria de discernimento do analista

Empresa Divisão Departamento

Pessoa• uma empresa não é um agregado de pessoas,

pois ambos são objectos independentes

Page 49: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO49

Agregação versus generalização

agregação relaciona objectos, distintos entre si, em que um é parte do outro (part-of)

• árvore de agregação é constituída por objectos que são parte de um objecto composto

generalização relaciona classes e é uma forma de estruturar a descrição de um único objecto, que é simultaneamente instância da superclasse e da subclasse (is-a)

• árvore de generalização é constituída por classes que descrevem um objecto

Incandescente BaseFluorescente

Lâmpada

Tampa Interruptor Fios

Balastro Encaixe Arrancador Suporte

Page 50: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO50

Tipos de agregação agregado fixo - estrutura fixa; número e tipo de subpartes prédefinidos [lâmpada]

agregado variável - número de níveis finito; número de componentes variável [empresa] agregado recursivo - contém directa ou indirectamente uma instância do mesmo tipo do

agregado; número de níveis potencialmente infinito [expressão] superclasse e duas subclasses

- uma para os nós intermédios e que é uma agregação de instâncias da superclasse

- outra para os nós terminais do agregado propagação - aplicação automática de uma operação a uma rede de objectos, quando a

operação é aplicada a um objecto inicial (através de agregações ou associações; dirigida) aplicação profunda - aplicar a toda a rede

• aplicação superficial - aplicar ao objecto inicial, mas não aos componentes

• propagação - aplicação controlada, a vários níveis, entre aqueles casos extremos

[copiar um documento: copia-se a ligação ao dono, mas não se copia o dono]

Documento ParágrafoPessoa Carácter

copiar copiar copiar

dono copiar copiar

Page 51: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO51

Classes abstractas

Classe abstracta - classe sem instâncias directas, mas cujas classes descendentes possuem instâncias directas.

Classe concreta - classe com instâncias directas.

Classe abstracta - classe sem instâncias directas, mas cujas classes descendentes possuem instâncias directas.

Classe concreta - classe com instâncias directas.

uma classe concreta pode ter subclasses abstractas; estas têm que ter subclasses concretas

• só classes concretas podem ser folhas nas árvores de generalização

PadeiroMineiro

Trabalhador

• • •

? Trabalhador pode ser uma classe concreta se existirem trabalhadores indiferenciados

• as reticências indicam que há subclasses não mencionadas

classes abstractas organizam propriedades comuns a várias classes

• criar superclasse abstracta para encapsular classes que participam na mesma associação [requisição de livros e de revistas]

• algumas classes abstractas aparecem logo no domínio da aplicação; outras são introduzidas mais tarde para promover a reutilização

Page 52: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO52

Operações abstractas

AssalariadoEmpregadohorário

Empregado

rendimento acumulado

calcular pagamento {abstracta}

taxa horáriataxa extraordinária

calcular pagamento

taxa semanal

calcular pagamento

Permanente

taxa mensal

calcular pagamento

Empregado é classe abstracta - cada empregado tem que estar numa das três subclasses Operação abstracta - protocolo definido mas sem se fornecer um método (só faz sentido

numa classe abstracta; nas concretas, todos os métodos estão definidos) Notação : comentário entre chavetas classe original de uma propriedade - classe mais geral que lhe define o protocolo; as

descendentes podem restringir tipos e revogar métodos, mas não expandir o protocolo

Page 53: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO53

Formas de generalização

instância de uma classe é instância de todas as suas superclasses: recebe todos os seus atributos e aplicam-se-lhe as suas operações (pode reimplementar métodos, mas sem alterar o protocolo externo)

extensão - subclasse pode adicionar novas propriedades [Empregado]

• reduzir o número de instâncias, aumenta o número de operações aplicáveis restrição - subclasse pode impôr restrições nos atributos herdados (limita os valores que

as instâncias podem tomar) [um círculo é-uma elipse em que os dois eixos são iguais; operações de escalar x e y não são independentes para os círculos]

• propriedades herdadas podem ser renomeadas numa restrição [eixos diâmetro]• uma classe pode não herdar todas as operações das suas generalizações (decisão do

analista, com a tecnologia actual)- a classe Círculo deve suprimir a operação de escalar desigual

• um objecto declarado elipse não é obrigado a permanecer um círculo mesmo que os seus eixos sejam temporariamente iguais

- i.e., no sistema podem existir círculos que não são Círculo, o que é desagradável do ponto de vista de pesquisa declarativa

Page 54: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO54

Pertença a uma classe

• implícita por regra - define a condição de pertença - todos os objectos que satisfaçam a condição pertencem à classe [objectos imutáveis da matemática]

• - pertença à classe derivada dos valores dos atributos

• explícita por enumeração - objectos discretos sabem explicitamente a que classe pertencem, independentemente de os valores dos atributos mudarem (pode gerar incoerências)

• pertença à classe derivada da identidade do objecto

- operações que invalidem restrições de pertença à classe devem ser proibidas por razões semânticas

Page 55: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO55

Revogação

uso da herança: tipos de dados abstractos versus partilha de implementação; problemas quando a revogação altera substancialmente um método em vez de só o refinar

revogação para

• extensão - novo método reutiliza o herdado acrescentando comportamento [método para desenhar JanelaComEtiqueta desenha Janela e acrescenta a etiqueta]

• restrição - novo método restringe o protocolo, limitando os tipos dos argumentos, para manter a operação fechada na subclasse [superclasse Conjunto, operação adiciona(Object); subclasse ConjuntoInteiro, operação adiciona(Integer)]

• optimização - implementação tira partido da especialização para obter maior eficiência, mantendo o protocolo

• conveniência - construir uma nova classe a partir de uma parecida em termos de implementação e revogando os métodos inconvenientes

- semanticamente errado pois a subclasse não tem ligação inerente à superclasse problemas de manutenção

Page 56: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO56

Partilha de implementação

Classe

NovaClasse

Abstracta

NovaClasseClasse

?melhor

• parar evitar a herança ad-hoc

- preferível factorizar os aspectos comuns da classe original e da pretendida numa classe abstracta e fazer desta superclasse comum

Page 57: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO57

Regras para a herança

Adesão a estas regras leva a software mais fácil de entender e estender e menos sujeito a erros por descuido

Regras semânticas para a herança

• todas as perguntas são herdadas por todas as subclasses

• todas as operações de actualização são herdadas por todas as extensões

• operações de actualização que afectem atributos ou associações restrictos são bloqueadas na restrição

• as revogações não podem alterar substancialmente os métodos; métodos para a mesma operação têm o mesmo protocolo

• operações herdadas podem ser refinadas com comportamento adicional

A implementação e o uso de muitas linguagens OO violam estes princípiosA implementação e o uso de muitas linguagens OO violam estes princípios

Page 58: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO58

Herança múltipla

Veículoaquático

Veículoterrestre

Veículo

AnfíbioCarro Barco

classe de junção - classe com mais do que uma superclasse

propriedades de um ascendente obtidas por mais do que um caminho são herdadas uma só vez

evitar definições paralelas que conduzam a ambiguidades nas classes de junção

cada generalização deve ser feita sobre uma só propriedade [meio em que um veículo se desloca]

refinar em várias dimensões independentes usar generalização múltipla

Generalização múltipla - permite a uma classe ter várias superclasses, e herdar propriedades de todas; i.e. combinar informação de várias fontes

Generalização múltipla - permite a uma classe ter várias superclasses, e herdar propriedades de todas; i.e. combinar informação de várias fontes

subclasses disjuntas

subclasses sobrepostas

classe de junção nenhuma classe pode herdar de duas

classes na mesma generalização disjunta (se for de uma generalização sobreposta, ou de generalizações diferentes, já pode)

Page 59: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO59

Herança múltipla acidental

EstudanteDocente

Universitário

Monitor

Pessoa

Pessoal

Monitor é um Estudante que colabora na Docência. (classe de junção)

um Docente da FEUP que é Estudante de Filosofia?

• acontece haver uma instância que pertence simultaneamente a duas classes sobrepostas

• não se justifica criar uma classe de junção artificial para este caso.

solução: considerar Pessoa como um objecto composto de vários objectos Universitário

• em vez de herança, delegação

• perda da identidade entre os vários papéis

Page 60: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO60

Herança simples

herança simples - uma só superclasse, hierarquia é uma árvore

delegação - mecanismo de implementação pelo qual um objecto faz seguir uma operação para outro objecto, para execução

como contornar a falta de herança múltipla:

• delegação com agregação dos vários papéis

- nem todas as classes de junção terão que ser explicictamente criadas

• herdar a classe mais importante e delegar o resto

- a classe de junção é uma agregação das outras subclasses

• generalização encaixada

- factorizar primeiro uma generalização, depois as outras

- preserva herança, mas duplica código

Page 61: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO61

Meta-informação

Meta-dados - dados que descrevem outros dadosMeta-dados - dados que descrevem outros dados

a definição de uma classe é meta-informação.

• os modelos são inerentemente meta-informação

um SGBD relacional contém meta-dados, sobre as tabelas

• tabela de dados: Tokyo é capital do Japão; Bangcock, a da Tailândia, etc.

• tabela de meta-dados: registar o facto de a uma cidade, corresponder uma capital

- a tabela que contém o nome de todas as tabelas existentes, tem uma linha para ela própria

instanciação - relacionamento entre a classe e o conjunto de objectos que descreve (notação a ponteado)

• pouco utilizado porque normalmente não se representam no mesmo diagrama objectos e as respectivas classes

• a não ser quando se tratam as classes como objectos, para as poder manipular (interpretadores, ferramentas de modelação)

• ou se representam entidades reais que são meta-dados para outras entidades

Page 62: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO62

Instanciação

representar carros e respectivos modelos, proprietários e fabricantes

• seria possível criar directamente uma classe para descrever cada tipo de carro, mas estão sempre a aparecer novos modelos

• cada instância da classe Modelo tem os seus atributos e associações e descreve o conjunto dos carros desse modelo (espécie de classe)

• cada carro recebe os atributos gerais do modelo, mais os seus próprios atributos

? Modelo é um padrão (meta-dado) dos objectos/classes Carro

Modelo Carro

Fabricante

nomeanopreço base

#sériecôropções

Companhia Pessoa

Proprietário

Pessoanomeidadepeso

(Pessoa)João Silva

2472

(Pessoa)Maria Santos

5260

Page 63: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO63

Meta-classes

as classes podem ser vistas como objectos, meta-objectos (descritores de classe)

esses objectos têm propriedades (indicados com $) e são instâncias das suas próprias classes, as meta-classes

atributo de classe - descreve valor comum à classe; não valores particulares de cada instância

• valores por omissão na criação de objectos

• informação sobre o conjunto das instâncias

operação de classe - operação sobre a classe

• criação de instâncias

• análise da estrutura da classe

• estatísticas sobre as instâncias

tamanho: Rectângulovisível: Booleano$todas-janelas: Set[Janela]$tamanho-omissão: Rectângulo

mostra$nova-janela$janela-prioritária

Janela

Page 64: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO64

Chaves de associações Chave candidata - conjunto minimal de atributos que identifica univocamente um

objecto ou uma ligação• minimal - não é possível retirar um atributo e o que fica ser uma chave

• podem existir várias chaves candidatas alternativas (o identificador do objecto é sempre uma chave)

Associações binárias

• noções de multiplicidade e de chave candidata são quase equivalentes- muitos-muitos: exige ambos os objectos para identificar cada ligação- muitos-um: chave candidata única, a do objecto do lado muitos- um-um: duas chaves candidatas, qualquer dos objectos ligados

Pessoa

Empresa

{Chave candidata: (pessoa, empresa)}

Pessoa

Empresa

{Chave candidata: (pessoa)}

País

Cidade

{Chaves candidatas: (país), (cidade)}

Tem-acções Trabalha Capital

Page 65: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO65

Associações n-árias notação de multiplicidade das associações é ambígua para não binárias

Associações ternárias

• exemplo Pessoa-Projecto-Linguagem: chave da associação com os três objectos da ligação

• noutros casos podem bastar dois objectos

• analisar uma instância pode ajudar a inferir quais as chaves candidatas, mas a decisão é do analista

• chaves são restrições nas instâncias válidas; pode-se verificar a conformidade da instância com as declarações de chaves

Estudante Universidade

Professor

{Chave candidata: (estudante, universidade)}

Estudante ProfessorUniversidade

Maria Simões PortoMaria Aguiar MinhoSusana Simões MinhoSusana Simões PortoJoão Costa Coimbra

Um estudante, numa universidade tem um e um só supervisor.

Page 66: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO66

Restrições Restrição - é um relacionamento funcional entre entidades de um modelo de objectos

• entidade - objecto, classe, atributo, ligação, ou associação

• as restrições limitam os valores que as entidades podem assumir

Empregado

salárioChefe

{salário chefe.salário}

Janela

larguraaltura

{0.8 <= altura/largura <= 1.5}

Tarefa

prioridade

{prioridade nunca aumenta}

• a própria estrutura do modelo impõe restrições

• a qualidade do modelo está na quantidade de restrições relevantes que consegue modelizar implicitamente

• as restrições no modelo de objectos são sempre simples; as complicadas vão para o funcional

• privilegiar a escrita declarativa (passagem a procedimental para implementar automática)

• inevitável uma percentagem em linguagem natural

Page 67: Modelação OO0 Modelação e Projecto Orientados por Objectos Gabriel David gtd@fe.up.pt Faculdade de Engenharia da Universidade do Porto

Modelação OO67

Restrições genéricas Notação: delimitar por chavetas; junto à entidade restringida; linha ponteada a

ligar entidades envolvidas na restrição; seta a ligar a entidade restrita àquela de que depende (caso da instanciação)

se uma restrição ligar a muitas entidades, mais vale não riscar o diagrama

• outros exemplos de restrição: {ordenado}, {subconjunto}

Entidades derivadas - são entidades completamente determinadas pelo resto do diagrama através de uma restrição

• têm interesse quando correspondem a conceitos do domínio do problema

• notação - com um traço oblíquo

Máquina Montagem

Offset

Componente

offset offset

Offset total

{offset = montagem-máquina.offset + componente-montagem.offset}