Você está na página 1de 54

Modelagem de Classes em UML

Prof.a MSc. Alindacir M Dalla Vecchia Grassi linda_grassi@yahoo.com.br linda grassi@yahoo.com.br

Caso de Uso Processar pedido

Verifica carto de crdito

<<uses>>

Vendedor

Processar pedido

Cliente

Exemplo: Descrio de um caso de uso. Processar pedido

O cliente seleciona os produtos O vendedor faz a abertura da venda O vendedor registra os itens vendido informando a identificao e a quantidade de cada item. Cada item relaciona-se com um produto O vendedor totaliza a venda para o cliente O cliente seleciona a forma de pagamento, podendo ser a transao a pagamento vista ou a prazo O vendedor emite o ticket de caixa para o cliente O vendedor d a baixa no estoque Obs.: itlico = atores grifado = possveis classes if d i l OBJETIVO : ENCONTRAR AS CLASSES NESTA DESCRIO DO CASO DE USO

Anlise com todos os substantivos

Ator o

Classes
Cliente Transao Item Estoque q

Trans_Vista Trans Vista

Trans_Prazo Trans Prazo

Produto

Diagrama de Classes

Um diagrama de classes descreve a viso esttica do sistema em termos de classes e relacionamentos entre as classes. classes Um dos objetivos do diagrama de classes definir a base para que outros diagramas apresentem outras vises do sistema. Um diagrama correlato ao diagrama de classes o diagrama de objetos, que apresenta instncias das classes

Desenhando uma classe


Uma classe representada por meio de um retngulo dividido em 3 compartimentos: Nome Atributos O Operaes A sintaxe utilizada para descrever o contedo de cada compartimento independente de linguagem (muito embora isto possa ser adaptado)

Representao bsica de uma classe


Identificador da classe de c do d c sse Atributos da classe Operaes da classe

Exemplo

Compra

data valor informarData informarValor calcularICMS

Encontrar classes que compem o sistema


um processo criativo Deve ser executado por especialistas no domnio da aplicao As classes devem vir do domnio da aplicao aplicao. Devem ser nomeadas de acordo com que l representam A resposta a algumas questes podem auxiliar no processo de identificar classes: Existe informao que deve ser armazenada ou ste o ao se a a e ada analisada ? Se sim, ela uma possvel candidata a se tornar classe. Existem sistemas externos ? Caso existam, podem ser entendidos como classes que o sistema contm ou com quem deve interagir interagir.
9

Mais perguntas sobre classes...


Existem dispositivos que o sistema deve manipular ? Se sim, sim podem se transformar em classes que manipulam estes dispositivos. Existem divises organizacionais (departamentos, ncleos (departamentos etc.) ? Se sim, elas podem ser representadas por meio de classes. classes Quais papis so desempenhados pelos atores dentro da organizao ? Estes papis podem ser vistos como classes (ex: usurio, cliente, operador do sistema etc.)

10

Detalhes sobre a representao bsica da classe


Identificador (nome) da classe: D Deve ser d i d d d i da aplicao derivado do domnio d li Deve ser o menos ambguo possvel. Deve ser um substantivo e no conter prefixos ou sufixos. Atributos da classe: Descrevem as caractersticas dos objetos daquela classe Somente os atributos que interessam ao sistema devem ser representados
11

Polticas de acesso
public: Atributos e mtodos definidos com a clusula public podem ser acessados por qualquer outra classe private: Atributos e mtodos definidos com a clusula private s podem ser acessados pela classe que o define protected: A ib Atributos e mtodos definidos com a clusula d d fi id l l protected podem ser acessados pela classe que o define e pelas suas subclasses descendentes l b l d d t

12

Mais sobre os atributos


Um atributo tem um tipo. Este tipo pode ser primitivo (inteiro, real (inteiro real, boolean etc.), construdo (arrays, registros) etc ) (arrays ou do tipo classe. Os atributos podem ter diferentes visibilidades public: representada pelo smbolo + bl d l b l protected: representada pelo smbolo # private: representada pelo smbolo Outras visibilidades especficas linguagens de p g programao podem ser utilizadas. p
13

Ainda sobre atributos...


Atributos podem ter valores iniciais p A definio do atributo pode especificar quais os seus valores vlidos (domnio do atributo) Um atributo pode ser esttico (tambm denominado varivel de classe), ou seja, seu valor ser compartilhado classe) seja por todos os objetos instanciados daquela classe.

14

Finalizando atributos...

A sintaxe formal para descrio de atributos :


visibilidade nome : tipo = valor inicial {domnio}

Exemplo: p
Pedido
+ quantidade: real + data: Date = Data_Atual + cliente: String + comentarios: String g - administrador: String = No especificado - numeroDeProdutos : inteiro
quantidade : real data : Date = Data_atual cliente : String administrador : String = "No Especificado" numeroDeProdutos : inteiro

Pedido

15

Implementando atributos de uma classe em Java Uma classe representada em UML pode ser facilmente implementada em linguagem OO. Ex: OO
Pedido
+ quantidade: real + data: Date = Data_Atual + cliente: String g - numeroDePedidos : inteiro = 0 pub c class ed do public c ass Pedido { public double quantidade; p public Date data = new Date(); () public String cliente; static private int numeroDePedidos = 0; }
16

Mtodos ou Operaes

Conceito: a implementao de um servio prestado pelo objeto para a comunidade de objetos ou a si mesmo. Tipos de Mtodos
Mtodos de Acesso Fita de vdeo: situao da fita, nome do filme, preo de g aluguel Mtodos Gerais Fita de vdeo: cadastramento, emprstimo, excluso

17

Representao de Operaes
Operaes so utilizadas para manipular os atributos ou para realizar outras aes. Para se representar uma operao descreve-se o tipo de retorno, o nome da operao e os parmetros que ela pode receber (em outras palavras, representa-se a assinatura da operao) Tambm o conceito de visibilidade se aplica operaes

18

Mais sobre representao de operaes... A sintaxe formal para a representaes de operaes :


visibilidade nome (lista de parmetros) : tipo de retorno {domnio} p p

Empregado

Exemplo:

Empregado
nome : String endereco : String salario : Currency setEndereco(e : String) calInss() : Currency calIRPF() : Currency
19

nome : String; # endereco : String; # salario : real;


#

+ set_ende(e: String): + calIRPF():real + calInss(): real

Relacionamentos entre classes


Um diagrama de classes representa classes e os relacionamentos entre elas. Estes relacionamentos podem ser: Associaes G Generalizaes li Dependncias Refinamentos

20

Notao para Relacionamentos

Associao

Generalizao

Agregao A

Dependncia

Composio

Realizao

21

Associaes entre classes

Em UML uma associao definida como um relacionamento estrutural que especifica objetos de um item conectados a objetos de outro item. item Associao representada graficamente como uma linha slida conectando a mesma classe ou classes diferentes.
Associao

Uma associao normalmente bidirecional, ou seja, se bidirecional seja um objeto est associado a outro objeto, ambos sabem que isto est acontecendo
22

Mais sobre associaes...


Maneiras alternativas de se entender uma associao entre dois objetos podem ser: Eles conhecem um ao outro Esto conectados um ao outro P cada objeto X existe um correspondente objeto Y Para d bj i d bj etc.

23

Associaes normais
Deve possuir um nome (geralmente um verbo) pertencente ao domnio do problema Uma seta no final da linha indica que a associao somente pode ser utilizada em uma nica direo Associaes podem ter dois nomes (um para cada direo). Um tringulo slido junto ao nome indica a di ) U t i l lid j t i di direo que se deve ler a associao
nome
usa

Direo do nome

Autor

Computador

24

Associaes (papel)
Quando uma classe participa de uma associao, ela tem um papel especfico a executar nesse relacionamento R Representa a face que a classe prxima a uma das t f l i d extremidades apresenta classe encontrada na outra extremidade da associao

Tra b a l h a p a ra

Em pr egado funci onr io em pregador

Empres a

25

Multiplicidade de associaes
A multiplicidade especifica quantos objetos participam da ligao. Ela desenhada no final da associao, perto da classe onde ela se aplica Se no especificada, assume-se exatamente um (1) Outros exemplos de multiplicidade podem ser:
Zero ou um (0..1) Zero a muitos (0..*) ou (*) Um U a muitos (1 *) i (1..*) Exatamente dois (2) Cinco a onze (5..11) (5 11) Um, quatro, seis e oito a doze (1, 4, 6, 8..12) etc. etc
26

Multiplicidade de associaes

Exemplo:

Tra b a l h a p a ra

Em pregado

1.. 1 * funcionrio

Em pres a

em pregador

27

Exemplo
Companhia de Seguros 1 tem 4
3 refere-se a

0..*

1..* Cliente Contrato de Seguros 0..* 3tem refere-se a4 0..*

t expresso em expressa u

1 Poltica de Seguros

Exemplos de informaes contidas no diagrama:


U companhia d seguros t contratos de seguro que se referem a Uma hi de tem t t d f um ou mais clientes O cliente pode ter muitos contratos de seguros, os q p g , quais se referem a apenas uma companhia Um contrato de seguro acontece entre uma companhia de seguro e um ou mais clientes. O contrato de seguros refere se simultaneamente a clientes refere-se, simultaneamente, cliente(s) e uma companhia de seguros 28

Exemplo de implementao em Java - Diagrama de classes

Companhia d S C hi de Seguros

tem 4 t
3 refere-se a

0..* 0 *

Contrato d S C t t de Seguros

//Arquivo C //A i CompanhiaDeSeguros.java hi D S j public class CompanhiaDeSeguros { ... private Vector contratoDeSeguros; ... } //Arquivo ContratoDeSeguros.java public class ContratoDeSeguros { ... p private CompanhiaDeSeguros refere; p g ; ... }

29

Detalhes sobre associaes


Alm da notao bsica de associaes, outros conceitos podem ser modelados, a saber: Associaes recursivas Papis em associaes Associaes qualificadas q Associaes do tipo ou Associaes ordenadas Classes associadas a associaes A Associaes ternrias i t i Agregaes Composies
30

Associaes recursivas

Conecta uma classe ela mesma A nica diferena que a ligao ocorre entre objetos da mesma classe. Exemplo: classe

No

0..*

Funcionrio 1..* 1 gerencia


31

0..*

Papis em associaes
Uma associao pode conter papis conectados a cada classe envolvida na associao O nome do papel uma string posicionada perto da classe para a qual aquele papel se aplica. Ex: aplica

em prega

Empresa

1..* Pessoa +empregado

+empregador

32

Associaes Qualificadas

Uma associao qualificada o equivalente em UML idia de arrays, mapas ou dicionrios associativos Exemplos Dado um produto podemos saber qual o item de pedido associado a ele (caso exista algum)

ItemDePedido Pedido 0..1 Produto # quantidade : Number

33

Associaes Qualificadas
A partir de uma URL possvel descobrir os acessos ocorridos
Acesso Histrico URL 1.. 1 * # Data : Date + getData () : Date + nmeroDeDias( ) : Number

Ao implementar, teramos o seguinte:


public class Histrico { private java.util.Map acessos; public Collection getAcessos(URL url); public void addAcesso(Date data, URL url); }
34

Associaes do tipo ou
possvel que em alguns modelos nem todas as combinaes de associaes sejam vlidas Quando uma associao no puder acontecer ao mesmo tempo que outra associao, pode-se restring-las por meio de uma associao ou I t significa que um objeto pode participar de no mximo Isto i ifi bj t d ti i d i uma associao por vez

35

Exemplo de associao do tipo ou

Companhia de Seguros 1

0..* 0*

Contrato de Seguros
0..* 0*

0..* 0*

{ou}
1..*

1..*

Empresa

Pessoa

36

Associaes ordenadas

As ligaes entre objetos podem ter de ser efetuadas segundo uma ordem especfica Quando isto for necessrio, deve-se indicar a associao correspondente como um associao ordenada. Ex:
po ssui

Cliente 1. .* 0. .*

Contrato

{ordenado por dat a}

37

Classe Associativa
Uma classe pode ser atachada a uma associao N t caso di Neste diz-se que esta uma classe resultante de uma t l lt t d associao ou uma classe de associao introduzida quando uma associao tem propriedades i d id d i i d d associadas Ela tem as mesmas caractersticas que as demais classes. l i d i l
Companhia * 1..* Empregado

Trabalho descrio salrio


38

Agregao
Uma agregao um tipo especial de associao g g p p Ela indica um relacionamento parte-todo entre as classes Sua presena pode ser percebida a partir da existncia de relacionamentos cujas denominaes incluam expresses como consiste de, contm ou parte de Partes Em uma Agregao a vida das Partes no est relacionada vida do Todo

39

Exemplos de agregao
todo todo
Carro 1. .*
Tim e 1..* 1 *
Com putador

Peas

parte p parte

Jogad or

todo

todo

Gabinete

parte todo

Tec lado

parte

M onitor

parte

1..*

CP U

V ento inha

Dis kDrive

Te cla

parte

parte

parte

parte

40

Agregado Compartilhado

Ele existe na medida que uma parte pode fazer parte de mais de um todo. Exemplos:
Tim e 1..* 1..* Jogad or

D is co 1..* 1..*

Ms ica

41

Agregao de Composio
Uma agregao de composio possui suas partes As partes vivem dentro do todo. Sem este todo as p partes no p podem sobreviver ( (deixam de fazer sentido) ) A partir do momento que o todo destrudo, as partes tambm o so Uma estratgia de implementao de composio a declarao das classes partes dentro da declarao da classe todo todo

42

Exemplos de agregao de composio

43

Generalizaes (Herana)
Relacionamento entre classes onde uma classe X compartilha estado e/ou comportamento de uma classe Y Define uma hierarquia de abstraes em que uma subclasse herda de uma ou mais superclasses Relacionamento entre um elemento mais geral (chamado l i l i l( h d de superclasse ou pai) e um mais especfico (chamado de subclasse ou filho) b l filh )

44

Herana
Uma classe
criada como subclasse de uma superclasse herdando as especificaes (estado e comportamento) desta ltima pode re-especificar e acrescentar estado e comportamento ao herdado da sua superclasse
superclasse

subclasse

classe: moblia

custo dimenses peso cor compra vende move

classe: cadeira

custo dimenses di peso cor p pernas compra vende move forra

a classe cadeira herda ( subclasse) da classe moblia e pode definir atributos e operaes prprias
45

Herana
o compartilhamento pela subclasse dos atributos e operaes da classe pai.

Uma hierarquia de classes:


mobilia

mesa

cadeira

armrio

armrio de WC

armrio de sala

46

Herana
A herana pode ser: Simples - uma classe apenas herda de uma superclasse Mltipla - uma classe herda de mais do que uma superclasse
veculos
veculos

simples
terrestres
automveis comboios

aquticos

areos

mltipla
hovercrafts

47

Mais um pouco sobre herana e OO...


Pessoa 2 atributos 2 operaes
nome endereo comer dormir

superclasse (mais genrica)

genera alizao o

espec cializa o

Estudante
RA matricular estudar

Trabalhador
CPF funo trabalhar bater carto

subclasse (mais especfica) 3 atributos 3 4 operaes

subclasse (mais especfica) 4 atributos 4 4 operaes

48

Exemplo de herana

Empregado p g Nome Endereco salario Cal-salario Cal_inss Cal_irpf

especial e lizao

generali g izao
Mensalista Cargo Cal_salario

Horista Horas Cal_salario

49

Generalizao
Deve ser usado com cuidado. As classes pai e filha possuem um forte acoplamento Mudanas na classe pai acoplamento. podem fazer com que o comportamento da classe filha deixe de ser vlido
Forma origem mover() exibir()

Retngulo R t l ponto : Ponto

Crculo C l raio : float

Polgono pontos : ListaDePontos exibir()

Quadrado 50

Generalizaes

Exemplo:
Tra nsao

Trans a o_a_P raz o

Transa o_a_V ista

51

Dependncias

Dependncias so relaes de uso Uma dependncia indica que mudanas em um elemento (o servidor) podem afetar outro elemento (o cliente) servidor ) cliente ) Uma dependncia entre classes indica que os objetos de uma classe usam servios dos objetos de outra classe Relaes pouco usadas

Cliente

Servidor
52

Diagrama de Classe - Exemplo

tem Escola 1 1..* 1.. 1..*

Departamento 1..* 1.. 1 *

atribudo a membro * Aluno * freqenta 1..* Curso * * ministra 1..*


53

1..* Instrutor

Exerccios
Suponha que os trabalhos da Clnica Mdica iniciem com a chegada de um Paciente. O provvel paciente dirige-se Enfermeira que est na portaria e se identifica lhe dizendo seu nome e o nmero de algum documento. A enfermeira verifica se o paciente j foi atendido em alguma Data anterior. Caso seja constatado que o Paciente nunca foi atendido na Clnica ele Clnica, fornece Informaes Pessoais Enfermeira que efetua o seu cadastramento. Aps esse passo, o Paciente est apto a marcar uma Consulta, caso seja do seu interesse. A Enfermeira precisa se organizar e identificar uma Data e um Horrio em que a Consulta possa ser marcada. O Paciente, ento, est apto a entrar na sala do Mdico que previamente muniu-se de informaes Mdico, muniu se do Paciente. Neste momento, o Paciente precisa esboar ao Mdico todos os Sintomas, Problemas e Restries que o levaram clnica. O Mdico, ento, avalia essas Informaes d S d d Paciente e efetua um li f da Sade do i f Diagnstico que pode ser seguido de um Pedido de um Retorno. Ao sair da sa a sala do Mdico, o Paciente precisa informar enfermeira os dados do d co, ac e te p ec sa o a e e e a Pagamento que podem ser feitos em dinheiro ou por algum Convnio 54 Mdico.

Você também pode gostar