Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição...

47
Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto de valor Classificação e generalização Classes de associação Enumerações Visibilidade

Transcript of Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição...

Page 1: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Capítulo 5: diagrama de classes: conceitos avançados

Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto de valor Classificação e generalização Classes de associação Enumerações Visibilidade

Page 2: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Responsabilidade

Uma responsabilidade é um contrato ou obrigação de uma

Page 3: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Um bom ponto de partida para a definição de uma classe é definição de suas responsabilidades.

Responsabilidades representam os conhecimentos e as ações que possibilitam a uma classe cumprir seu papel.

Os atributos e operações podem ser vistos como aspectos ou características através das quais as responsabilidades são cumpridas

Page 4: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Freqüentemente, é útil mostra as responsabilidades (página 75) de uma classe em um diagrama de classe. A melhor maneira de mostra-lás é como frases de comentário em seu próprio compartimento na classe (figura 5.1). Se quiser , você pode dar um nome ao compartimento, mas eu normalmente não faço isso pois raramente exigira alguma confusão. Livro texto: UML Essencial 3ª edição, página 78

Page 5: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Cartões CRC

Page 6: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

FIGURA 5.1 Mostrando responsabilidades em um diagrama de classes

Page 7: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Responsabilidades são descritas como frases ou parágrafos curtos em formato textual livre.

Podem ser documentadas em um compartimento específico, como parte da descrição da classe ou como uma nota estereotipada como <<responsabilidade>> ligada a classe.

Exemplo:

Page 8: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

BRUNO

OPERAÇÕES E ATRIBUTOS ESTÁTICOS

Page 9: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Agregação e Composição

Ambos descrevem relações entre objetos...

Page 10: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

...porém com uma diferença simples:Agregação Um objeto contém uma lista

de outros objetos. Os objetos contidos podem

existir sem serem parte do objeto que os contém.

Exemplo: Carro -> Rodas. Você pode tirar as rodas do carro antes de destruí-lo e elas podem ser colocadas em outro carro.

Composição Um objeto contém uma lista

de outros objetos. Os objetos contidos não

fazem sentido fora do contexto do objeto que os contém.

Exemplo: Pedido -> Itens. Se você destruir o pedido, os itens são destruidos junto, eles não tem sentido fora do pedido.

Page 11: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Page 12: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Uma das fontes de confusão mais freqüentes na UML á a agregação e a composição. É fácil explica-las superficialmente: agregação é o relacionamento “parte de” . É como dizer que um carro tem um motor e rodas como suas partes.Isso soa bem, mas o difícil é considerar qual é a diferença entre agregação e associação

Livro texto: UML Essencial 3ª edição, página 78

Page 13: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

•Se as duas classes interagem na forma”todo-parte”, temos uma agregação

•Muitas vezes depende do domínio do problema

•Que tipo de relacionamento modela um carro e seus pneus ? na aplicação de uma oficina, onde os serviços

podem se estender aos pneus Agregação

na loja de vendas de pneus, onde o importante é saber que carro usa qual pneu associação

Associação ou Agregação ?

Page 14: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

a agregação é estritamente sem significado; como resultado, recomendo que vocês a ignorem em seus diagramas. Se você a encontrar nos diagramas de outras pessoas, precisará ir mais a fundo para descobrir o que elas querem dizer com isso.Diferentes autores e equipes a utilizam para propósitos muito distintos

Livro texto: UML Essencial 3ª edição, página 80

Page 15: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Composição

Composição é uma forma de agregação com posse forte e tempo de vida idêntico.

Um objeto só pode participar de uma composição.

Cada parte só pode fazer parte de um todo( a regra do “não compartilhamento” é a chave da composição)

Page 16: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

A regra geral é que, embora uma classe possa ser um componente de muitas outras classes, toda instancia deve ser um componente de apenas um proprietário. O diagrama de classe pode mostrar varias classes de proprietários em potencial, mas toda entrância tem apenas um único objeto como seu proprietário.

Livro texto: UML Essencial 3ª edição, página 79

Page 17: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

BRUNO

Propriedades Derivadas

Page 18: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

EU

Interfaces e Classes Abstratas

Page 19: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

BRUNO

Read-onlye Frozen

Page 20: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Objetos de referencia e objetos de valor

“Uma coisa comumente ditas a respeito dos objetos é que eles tem identidade...”

Page 21: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

...”na pratica,você verifica que a identidade é importante para objetos de referência,mais nem tanto para objetos de valos.”

Page 22: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

TIPOS Por Valor (Value Types)

Armazenado na memória Stack. Trabalha com dados diretamente. Não pode ser nulo. Exemplo: Inteiros Decimais Booleanos Estruturas Enumerações

Page 23: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Se você tem duas datas e quer ver se elas são as mesmas não examina as suas identidades, mais sim os valores que elas representam.

Page 24: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Por Referência (reference types)

Contém uma referência a um ponteiro na memória Heap.

Pode ser nulo Exemplo: Vetores Textos Instâncias de Classes Classes

Page 25: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Os objetos por referencia são coisas como um cliente. Aqui, a identidade é muito importante, pois você normalmente só quer um objeto se software para designar um cliente no mundo real. Qualquer objeto que faça referencia a um objeto cliente fará isso por intermédio de uma referencia ou ponteiro.

Livro texto: UML Essencial 3ª edição, página 84

Page 26: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

A UML utiliza a noção de tipo de dados, que é mostrada como uma palavra chave no símbolo de classe. Rigorosamente falando o tipo de dado não é o mesmo que objeto de valor, pois os tipos de dados não podem ter identidades . Os objetos de valor podem ter uma identidade, mais não a utilizam para a comparação de igualdade. Em java as primitivas seriam tipos de dados, mais as datas não seriam, embora elas sejam objetos de valor.

se é importante destaca-las, eu uso composição ao associar com objeto de valor, você também pode utilizar as palavras-chaves em um tipo de valor; as convencionais comuns que vejo são << value>> e << struct>>

Livro texto: UML Essencial 3ª edição, página 84

Page 27: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

BRUNO

Associações Qualificadas

Page 28: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Classificação e Generalização

Relação semântica “is a” (“é um” / “é uma”): um aluno é uma pessoa.

Page 29: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Page 30: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

A expressão é um pode significar coisas diferentes

1. Shep é um Border Collie.

1. Um Border Collie é um cachorro

1. Cachorro são animais

1. Borde Collie é uma Raça

1. Cachorro é uma Espécie

Combinando as frases

1 e 2 ) Shep é um cahorro

2 e 3) Border Collies são animais

1 , 2 e 3) Shep é um animal

Page 31: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Estas não estão corretas

1. Shep é um Border Collie.

1. Um Border Collie é um cachorro

1. Cachorro são animais

1. Borde Collie é uma Raça

1. Cachorro é uma Espécie

1 e 4) Shep é uma raça

2 e 5) Um Border Collie é uma Espécie

Page 32: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Page 33: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Classes de Associação

classe de associação possui as propriedades de classes e de associações:

Page 34: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

A classe de associação permitem que você acrescente atributos, operações e outras característica a associações como mostra na figura 5.12.

Livro texto: UML Essencial 3ª edição, página 87

Page 35: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Page 36: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

A implementação de classes de associação não é terrivelmente obvia. Meu conselho é implementar uma classe de associação como se ele fosse uma classe completa, fornece métodos que obtenham informações para as classes vinculadas pela classe associação.

Class Pessoa List obterComparecimento()

List obterReunião()

Page 37: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Tornar comparecimento uma classe concreta

Page 38: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Enumerações

São usadas para mostrar um conjunto fixo de valores que não possuem quaisquer propriedade além do seu valor simbólico.

Page 39: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Elas são mostradas como a classe com a palavra <<enumeration>>

Page 40: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Page 41: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Page 42: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

BRUNO

Classes Ativas

Page 43: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Visibilidade

A visibilidade é um assunto que é simples em princípios mais tem sutilezas complexas

Page 44: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

A UML tenta abordar o tema sem entrar em uma terrível confusão. Basicamente dentro da UML, você pode rotular qualquer atributo ou operação com um indicador de visibilidade. Você pode usar o marcador que quiser, e seu significado é dependente da linguagem. Entretanto, a UML fornece quatro abreviações para visibilidade; + (público), - (privado), ~(pacote), # (protegido).esses quatro níveis são usados dentro da UML e são definidos dentro dele, mas suas definições variam sutilmente daquelas das outras linguagens.

Livro texto: UML Essencial 3ª edição, página 92

Page 45: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Escopo Private ( - ): dentro de uma classe;

Escopo Package ( ~ ): dentro do mesmo pacote;

Escopo Public ( + ): dentro de um sistema;

Escopo Protected ( # ): dentro de uma árvore de herança.

Page 46: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.

Visibilidade Privada: um elemento privado é visível apenas dentro do namespace que o possui. Ex.: Os atributos privados da Classe B só podem ser acessados por operações realizadas por objetos da Classe B. Eles não seriam acessíveis a Classe A, a outras classes no mesmo pacote ou a quaisquer classes no Pacote 2, ou em qualquer outro lugar do sistema;

Visibilidade de pacote: um elemento do pacote (package) é possuído por um namespace que não é um pacote, e é visível aos elementos que estão no mesmo pacote do namespace que o possui. Ex.: A Classe B define uma operação com visibilidade de pacote. A visibilidade de pacote permite que uma operação na Classe A e os objetos de qualquer outra classe do Pacote 1 invoquem a operação em nível de pacote na Classe B;

Visibilidade pública: um elemento público é visível a todos os elementos que podem acessar o conteúdo do namespace que o possui;

Visibilidade protegida: um elemento protegido é visível aos elementos que possuem um relacionamento de generalização com o namespace que o possui. Ou seja, a visibilidade protegida permite o acesso pelas subclasses.

Page 47: Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.