Diagrama de classes1.1

Preview:

Citation preview

Projeto de Software

Diagrama de Classes

Alunos:Maiky Nata, Douglas Pose, Igor Moreia

Diagrama de Classes Demonstra a estrutura estática dasclasses de um sistema, seus atributos eoperações Mostra o relacionamento entre asclasses

Exemplo:

Perspectivas de um Diagramade Classes Conceitual: forma abstrata de seobservar classes e objetos eindependente da linguagem deprogramação (Modelo Conceitual) De Implementação: pensa-se emdetalhes de implementação para definiras classes e objetos.

Definição de Classes Conceitual: são agrupamentos de objetos,são abstrações de um coletivo deentidades do mundo real

O modelo genérico desse coletivo contématributos e comportamentos comuns.

Definição de Classes

De implementação: corresponde a um tipo de uma linguagem de programação.

Um modelo genérico para criar variáveisque armazenarão os objetoscorrespondentes.

Notação UML para Atributos A maioria é opcional, seu uso vai dependerdo tipo de visão no qual estamos trabalhandoe podem ser abstratos ou utilizar a notaçãode uma linguagem de programação.

[Visibili/d]Nome[Multiplici/d]:[Tipo]=[Valor][{Proprie/ds}]

Notação UML para Métodos� A notação e uso vai depender do tipo devisão no qual estamos trabalhando e podemser abstratos ou utilizar a notação de umalinguagem de programação.

[Visibili/d]Nome(Parâmetros)]:[Retorno][{Proprie/ds}]

Exemplo de Uma Classe

Aluno----------------------------------

nome:TipoNomeRA: TipoCódigo----------------------------------calculaMédia():TipoNota

Aluno----------------------------------

nome:TipoNomeRA: TipoCódigo----------------------------------calculaMédia():TipoNota

<<entidade>>Aluno

DePacoteCadastro-----------------------------------

---nome[30]:char+RA: int {valorconstante}-----------------------------------

--+calculaMédia():Double

<<entidade>>Aluno

DePacoteCadastro-----------------------------------

---nome[30]:char+RA: int {valorconstante}-----------------------------------

--+calculaMédia():Double

Entidades de Especificação ouDescriçãoA especificação ou descrição de umobjeto deve ser representada como umaentidade em separado evita perda de informação quando o

objeto édeletado reduz informações redundantes ou

duplicadas Muito comum no domínio de produtos evendas

Ex.:

Pior Item--------------------DescriçãoPreçoNúmero serialUPC

Especificação Produto-----------------------------DescriçãoPreçoUPC

Item---------------------- Número serial

Descreve

Melhor

Identificação das Classes deControle Definir pelo menos uma classe do tipo

controle para cada caso de uso de forma queela contenha a descrição e comando doprocesso associado ao caso de uso. Definir classes de controle auxiliares em

certos casos de uso que devido aàcomplexidade requeiram a divisão de seuprocesso em subprocessos. As classesauxiliares seriam controladas pela classe decontrole principal

Identificação das Classes deControle Suas principais características são:

Cria, ativa e anula objetos controlados; Controla a operação de objetos controlados; Controla a concorrência de pedidos de objetos controlados; Em muitos casos corresponde a implementação deum objeto intangível;

Gerente de Registro para o Caso de UsoRegistrar Alunos

Identificação das Classes deFronteira Definir uma classe do tipo fronteira para

cada ator que participe do caso de uso,pois cada ator que pode exigir umprotocolo próprio para comunicação. Uma classe para interface com o

usuário, uma classe para interface coma impressora, uma classe para interfacecom a porta serial, etc.

Identificação das Classes deFronteira

Exemplos: Interface tipo Janela,Protocolo de Comunicação, Interface deImpressão, Sensores, etc.Classes: Formulário em Branco eSistema de Cobrança

Relacionamentos Os relacionamentos entre as classesrepresentam a interação entre seusobjetos Tipos:

Associação Agregação Generalização Dependência e Refinamentos

Associações Conexão entre classes/objetosRelacionamento que descreve uma sériede ligações entre duplas de classes/objetos Uma ligação significa por exemplo que: elas "conhecem uma a outra“ "estão conectadas com“ para cada X existe um Y

Associações Simples O mais comum, com apenas uma

conexão, representada por uma linhasólida e um nome (geralmente verbo)

Caixa Venda

Registra

Associações Pode possuir dois nomes, significando

um nome para cada sentido daassociação e os papéis de cada classe

Cliente Conta CorrentePossui→

← É possuído

Associações – Cardinalidade(Multiplicidade) Especifica o número de objetos de cadaclasse envolvidos com a associação A leitura da cardinalidade é diferentepara os diferentes sentidos daassociação

Caixa Venda

Registra

1 0..*

Associações - Navegabilidade Mostra a direção de navegação, ou sejado canal de comunicação entre osobjetos e classes. Uma associação é navegável da classeA para a classe B, se, dado um objetode A, consegue-se obter de formadireta os objetos relacionados da classeB.

Associações - NavegabilidadeDada uma mercadoria pode-se identificar diretamentea empresa fornecedora,mas a volta não é verdadeira

Empresa MercadoriaFornece

0...* 0...*

Associação Recursiva ouReflexiva Os objetos conectados são da mesmaclasse

PessoaEsposa

Marido

É casado com

Associação Qualificada� Usadas com multiplicidades 1..* ou *.O qualificador (chave) identifica umObjeto.

ClienteCód_ContaCorrente

Conta corrente

Associação Exclusiva Restrição em duas ou mais associações,especificando que objetos de uma classepodem participar de no máximo uma dasassociações ao mesmo tempo

Contrato

{OU} -----------------------------------------0...*0...*0...*

0...*

1...*1...*

Associação Ordenada Especifica uma ordem entre os objetos

da associação. Ex: janelas de umsistema têm que ser ordenadas na tela(uma está no topo, uma está no fundo eassim por diante).

Janela Top Janela Bottom {Ordenada}

Associações de Classe Serve para adicionar informaçõesextras a uma associação existente,quando essa possuir operações emétodos (ela é uma classe)

Cliente

Fila

Processo

Associação Ternária Envolve três classes (inclusive umaclasse de associação)

Contrato Cliente

Regras Contratuais

1...*

1...*0...*

Agregação A agregação é um caso particular deassociação Uma das classes é uma parte ou estácontida em outra. Palavras chaves: consiste em, contém,é parte de. Dois casos: composição ecompartilhamento.

Agregação deCompartilhamento Uma classe pode fazer parte de mais deum composto e/ou estar contida nelevárias vezes.

Time Pessoa

Membros

Generalização Relacionamento entre uma classe gerale outra mais específica (herança). Aclasse mais específica pode ser usadano lugar da mais geral. Generalização normal Generalização restrita: sobreposição,

disjuntiva, completa e incompleta

Generalização Normal A classe mais específica (sub-classe) herdatudo da mais geral (super-classe)

Conta Corrente Poupança

Dependências Conexão entre dois elementos,representando que uma mudança noelemento independente afeta odependente.

Classe A Classe B<<Amigo>>

Identificação dosRelacionamentos Na perspectiva conceitual representam-serelacionamentos conceituais As associações são estabelecidasanalisando-se os papéis. A generalização representa a hierarquiaentre tipos e seus subtipos A agregação entre um todo e suaspartes.

Identificação dosRelacionamentos Na perspectiva de implementaçãorepresenta um canal de comunicaçãoentre duas classes A necessidade desse canal é dada pelosdiagramas de interação. Sempre queexistir uma mensagem trocada entre doisobjetos nesses diagramas existirá umaassociação entre eles, que representa asresponsabilidades das classes.

Identificando GeneralizaçõesQuando particionar em Subclasses a subclasse tem atributos adicionais de

interesse a subclasse tem associações adicionais de

interesse a subclasse será manipulada ou usada de

maneira diferente da superclasse ou dasoutras subclasses a subclasse se comporta diferente da

superclasseou das outras subclasses

Identificando Generalizações

Identificando Agregações Verificar se algumas classes podem seragrupadas em algum composto:

elas são geralmente criadas/destruídas nomesmo instante.

possuem relacionamentos comuns

Identificando Agregações Verificar se alguma classe pode ser subdivididaem partes.

as partes possuem tempo de vida limitadoao tempo de vida do composto

possuem relacionamentos particulares e deinteresse

Identificando Atributos Atributos devem preferencialmenterepresentar tipos primitivos de dados oude valores simples Ex.: Data, Número, Texto, Hora, Endereço,

etc.� Atributos não devem ser usados para: Representar um conceito complexo Relacionar conceitos (atributo “chave

estrangeira”)

Identificação dos Métodos Os métodos são acrescentados na

perspectiva de implementação e sãoderivados a partir dos diagramas deinteração: colaboração e sequências.

É útil distinguir operações de métodos.Operações é algo que se evoca sobre umobjeto (a chamada do procedimento). Pararealizar uma operação a classe implementaum método (o corpo do procedimento).

Quando utilizar diagrama de classes

Iremos utilizar os diagramas de classes para a construção dos produtos que necessitam de orientação a objetos. Diagramas de classes são a base de quase todas as metodologias implementadas em orientação a objetos, portanto nós iremos utilizá-los o tempo todo.

Pontos fortes e fracos Diagramas de classes são muito ricos na descrição do sistema/software.

Podem ser muito complexos de usar.

Podemos ficar preso em detalhes de implementação.

Ferramentas que auxiliam na criação

Astah UML

UmbrelloUML

Visual Paradigma

Bibliografiahttp://www.macoratti.net/net_uml1.htm

http://www.dsc.ufcg.edu.br/~?jacques/cursos/map/html/uml/diagramas

http://pt.wikipedia.org/wiki/Diagrama_de_classes/

http://astah.change-vision.com/

www.inf.ufpr.br

www.dsc.ufcg.edu.br/~jacques/cursos/apoo/html/.../proj8.htm

Recommended