SlideShare una empresa de Scribd logo
1 de 112
https://www.facebook.com/alvarofpinheiroaulas/ 
br.linkedin.com/in/alvarofpinheiro/ 
IInnttrroodduuççããoo aa MMooddeellaaggeemm ccoomm UUMMLL 
http://www.alvarofpinheiro.eti.br
O que é a UML? 
IInnttrroodduuççããoo aa UUMMLL 
A Unified Modeling Language (UML) é a sucessora de uma onda de métodos para análise e projeto orientados a 
objetos que surgiram no fim da década de 80. Ela unificou os métodos proposto por Booch, Rumbaugh (OMT) e 
Jacobson. Atualmente a UML é um padrão mantido pela OMG, o que dá a ela uma um status de ser considerada a 
linguagem padrão para modelagem de sistemas. A UML é a linguagem padrão para visualizar, especificar, construir 
e documentar artefatos de um sistema de software e combina diversos aspectos como: 
• Modelagem de Dados 
• Modelagem de Negócios 
• Modelagem de Objetos 
• Modelagem de Componentes 
É importante enfatizar que UML é uma linguagem de modelagem, ou seja, é uma forma de especificar um sistema de 
maneira visual. Ela é a linguagem padrão de modelagem adotada pelo Rational Unified Process (RUP) e seu grande 
sucesso se deu em conjunto com a popularização do RUP. Por isso, é muito comum que as pessoas associem UML 
ao RUP. É importante distinguir muito bem, visto que as duas representam conceitos complementamente 
diferentes. O RUP é um processo, ou seja, um conjunto de atividades, com seus respectivos artefatos e pápeis, 
para se desenvolver produtos de software. Já a UML é uma linguagem para se modelar o comportamento e 
estrutura de um sistema. 
14/12/14 http://www.alvarofpinheiro.eti.br 2
Como surgiu a UML? 
IInnttrroodduuççããoo aa UUMMLL 
Durante os anos 80, várias linguagens de programação se popularizaram, entre elas uma que se destacou foi a Smalltalk, mas outras 
linguagens também participaram deste movimento, tais como, Objective C, C++ e Eiffel. Seguindo esta onda, os métodos orientados a 
objetos começaram a ser publicados. Em 1988 Shlaer et al [Shlaer-88] ; em 1990, Wirfs-Brock [Wirfs-Brock-90]; em 1991, Coad e 
Yourdon [Coad-91]; ainda em 1991, Booch [Booch-91] ; e Rumbaugh [Rumbaugh-91]. 
A primeira tentativa de sucesso de se criar uma linguagem unificada aconteceu quando Rumbaugh se juntou a Booch na Rational Software 
Corporation em 1994. Eles começaram a combinar conceitos de OMT com os métodos de Booch, produzindo um método unificadi. 
Neste mesmo momento Jacobson também se juntou a Rational e começou a trabalhar com Booch e Rumbaugh. O trabalho conjunto 
resultou no que foi chamado de Unified Modeling Language (UML). Este foi um momento único, quando os autores dos três principais 
métodos trabalharam juntos para unificar suas propostas. Em 1996, a Object Management Group (OMG) fez uma chamada por 
propostas par um padrão para modelagem orientada a objetos. Ao autores da UML começaram a trabalhar com metodologistas e 
desenvolvedores de outras empresas para produzir uma proposta atrativa para os membros da OMG, assim como para as empresas de 
ferramentas, metodologistas e desenvolvedores em geral. No final de 1997, se tornou um padrão da OMG e até hoje vem sendo 
mantida e evoluída, sendo hoje bem aceita por toda a comunidade de desenvolvimento de software. 
[Shlaer-88] Sally Shlaer, Stephen J. Mellor. Object-Oriented Systems Analysis: Modeling the World in 
Data. Yourdon Press, Englewood Cliffs, N.J., 1988 
[Wirfs-Brock-90] Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener. Designing Object- 
Oriented Software. Prentice Hall, Englewood Cliffs, N.J., 1990. 
[Coad-91] Peter Coad, Edward Yourdon. Object-Oriented Analysis, 2nd ed. Yourdon Press, 
Englewood Cliffs, N.J., 1991. 
[Booch-91] Grady Booch. Object-Oriented Analysis and Design with Applications, 1st ed. Benjamin/ 
Cummings, Redwood City, Calif., 1991. 
[Rumbaugh-91] James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William 
Lorensen. Object-Oriented Modeling and Design. Prentice Hall, Englewood Cliffs, N.J., 1991. 
14/12/14 http://www.alvarofpinheiro.eti.br 3
IInnttrroodduuççããoo aa UUMMLL 
Como foi a evolução da UML? 
Nov ‘97 UML aprovada pelo OMG 
14/12/14 http://www.alvarofpinheiro.eti.br 4
IInnttrroodduuççããoo aa UUMMLL 
Quais os objetivos da UML? 
UML tem como propósito ser uma linguagem para: 
Visualizar sistemas orientados a objetos 
Especificar sistemas orientados a objetos 
Construir sistemas orientados a objetos 
Documentar sistemas orientados a objetos 
14/12/14 http://www.alvarofpinheiro.eti.br 5
O que é OO? 
IInnttrroodduuççããoo aa UUMMLL 
O paradigma OO utiliza uma perspectiva mais humana de observação da realidade, incluindo 
objetos, classificação e compreensão hierárquica. Entre os principais benefícios podemos 
citar: 
• Único paradigma (Tudo é baseado em classes) 
• Facilita o reuso de código e arquitetura 
• Reflete o mundo real 
• Estabilidade 
• “Pequenas mudanças nos requisitos exigem poucas mudanças no código” 
“Orientação à objetos é uma estratégia para organizar 
sistemas como coleções de objetos que interagem entre 
si e combinam dados e comportamento” 
14/12/14 http://www.alvarofpinheiro.eti.br 6
IInnttrroodduuççããoo aa UUMMLL 
Quais os princípios básicos da OO? 
Orientação à Objetos 
Abstração Modularidade Encapsulamento Hierarquia 
14/12/14 http://www.alvarofpinheiro.eti.br 7
O que é um Objeto? 
IInnttrroodduuççããoo aa UUMMLL 
“Um objeto é um conceito, abstração ou coisa com 
limites e significado para uma aplicação” 
Um objeto deve ter: 
Estado 
Comportamento 
Identidade única 
14/12/14 http://www.alvarofpinheiro.eti.br 8
IInnttrroodduuççããoo aa UUMMLL 
O que é um Sistema OO? 
Um sistema orientado a objetos pode ser visto 
como um conjunto de objetos correlacionados, 
com interfaces e comportamento bem definidos, 
que colaboram-se entre si pra atender ao objetivo 
do sistema. 
14/12/14 http://www.alvarofpinheiro.eti.br 9
IInnttrroodduuççããoo aa UUMMLL 
Quais os conceitos básicos da OO? 
Objeto 
Classe 
Atributo 
Operação 
Interface (Polimorfismo) 
Herança 
Pacote 
Relacionamentos 
14/12/14 http://www.alvarofpinheiro.eti.br 10
IInnttrroodduuççããoo aa UUMMLL 
Quais são os diagramas da UML? 
DDiiaaggrraammaa ddee ccllaasssseess 
DDiiaaggrraammaa ddee oobbjjeettooss 
DDiiaaggrraammaa ddee ppaaccootteess 
DDiiaaggrraammaa ddee eessttrruuttuurraa ccoommppoossttaa 
DDiiaaggrraammaa ddee ccaassooss ddee uussoo 
DDiiaaggrraammaa ddee ccoommppoonneenntteess 
DDiiaaggrraammaa ddee ddiissttrriibbuuiiççããoo 
DDiiaaggrraammaa ddee mmááqquuiinnaa ddee eessttaaddooss 
DDiiaaggrraammaa ddee aattiivviiddaaddeess 
DDiiaaggrraammaa ddee iinntteerraaççããoo 
DDiiaaggrraammaa ddee sseeqqüüêênncciiaa 
DDiiaaggrraammaa ddee ccoollaabboorraaççããoo 
DDiiaaggrraammaa ddee TTeemmppoo 
DDiiaaggrraammaa GGeerraall ddee IInntteerraaççããoo 
14/12/14 http://www.alvarofpinheiro.eti.br 11
IInnttrroodduuççããoo aa UUMMLL 
O que é diagrama de classe? 
Um diagrama de classes mostra um conjunto de classes, interfaces e relacionamentos entre 
estes. Este é o diagrama mais comum encontrado na modelagem de sistemas orientados 
a objetos e dá uma visão estática da estrutura do sistema. 
14/12/14 http://www.alvarofpinheiro.eti.br 12
O que são classes? 
IInnttrroodduuççããoo aa UUMMLL 
Classes especificam a estrutura e o comportamento 
dos objetos 
Classes são como "moldes" para a criação de objetos 
Classes são compostas por: 
Nome 
Atributos (Estrutura) 
Métodos (Comportamento) 
14/12/14 http://www.alvarofpinheiro.eti.br 13
Um exemplo de classe 
Classe 
IInnttrroodduuççããoo aa UUMMLL 
Propriedades Curso 
Nome 
Localização 
Duração 
Créditos 
Comportamento 
Adicionar um aluno 
Remover um aluno 
Atribuir professor 
Atribuir sala 
14/12/14 http://www.alvarofpinheiro.eti.br 14
IInnttrroodduuççããoo aa UUMMLL 
Como se representa uma classe? 
Como se pode perceber a representação em UML 
abstrai elementos sintáticos específicos de uma 
linguagem de programação. Um classe em UML 
pode ser mapeada para classes em qualquer 
linguagem de programação orientada a objetos. 
Professor 
14/12/14 http://www.alvarofpinheiro.eti.br 15
O que são atributos? 
IInnttrroodduuççããoo aa UUMMLL 
Um atributo é uma propriedade de uma classe, identificada por um nome, que descreve as 
informações ou propriedades (valor, tipo, visibilidade, etc.) que as instancias desta classe 
(objetos) devem ter. Uma classe pode ter um número qualquer de atributos (inclusive 
zero). 
•Nome = Análise I 
•Localização = 
MAC 
•Duração = 30h 
•Créditos = 2 
•Nome = Análise II 
•Localização = 
MAC 
•Duração = 15h 
•Créditos = 4 
•Nome = SI 
•Localização = 
MAC 
•Duração = 30h 
•Créditos = 2 
Curso 
•Nome 
•Localização 
•Duração 
•Créditos 
•Adicionar um aluno 
•Remover um aluno 
•Atribuir professor 
•Atribuir sala 
14/12/14 http://www.alvarofpinheiro.eti.br 16
Atributos na UML são? 
Professor 
titulo 
nome 
IInnttrroodduuççããoo aa UUMMLL 
Classe 
Pessoa 
idade: int 
nome: String 
Classe 
Nome do Atributo 
Tipo do Atributo 
Nome do Atributo 
14/12/14 http://www.alvarofpinheiro.eti.br 17
IInnttrroodduuççããoo aa UUMMLL 
Exemplo em CSharp ou Java 
ccllaassss PPeessssooaa {{ 
iinntt iiddaaddee;; 
ssttrriinngg nnoommee;; 
}} 
...... 
PPeessssooaa pp11 == nneeww PPeessssooaa(());; 
PPeessssooaa pp22 == nneeww PPeessssooaa(());; 
pp11..nnoommee == ““MMaarríílliiaa””;; 
PP22..nnoommee == ““GGaabbrriieell””;; 
14/12/14 http://www.alvarofpinheiro.eti.br 18
O que são operações? 
IInnttrroodduuççããoo aa UUMMLL 
Uma operação é a implementação de um serviço que pode ser solicitado a qualquer objeto 
da classe para afetar o seu comportamento. Em outras palavras, operações são ações 
que podem ser executadas sobre instâncias das classes. Uma classe pode ter qualquer 
número de operações (inclusive zero). 
• temperatura = 23 
SensorDeTemperatura • alarme = 50 
•temperatura 
•alarme 
•reiniciar 
•definirAlarme 
•lerTemperatura 
• temperatura = 50 
• alarme = 100 
• temperatura = 20 
• alarme = 5 
14/12/14 http://www.alvarofpinheiro.eti.br 19
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de operação em UML 
SensorTemperatura 
reiniciar() 
definirAlarme() 
lerTemperatura() 
Especificação 
das operações 
SensorTemperatura 
reiniciar() 
definirAlarme(temper: int) 
lerTemperatura(): int 
14/12/14 http://www.alvarofpinheiro.eti.br 20
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de operações em CSharp ou Java 
ppuubblliicc ccllaassss sseennssoorrDDeeTTeemmppeerraattuurraa {{ 
iinntt tteemmppeerraattuurraa;; 
iinntt aallaarrmmee;; 
ppuubblliicc vvooiidd rreeiinniicciiaarr(()){{ 
tteemmppeerraattuurraa == 00;; 
}} 
ppuubblliicc iinntt lleerrTTeemmppeerraattuurraa(()){{ 
rreettuurrnn tteemmppeerraattuurraa;; 
}} 
ppuubblliicc vvooiidd ddeeffiinniirrAAllaarrmmee(( 
iinntt tteemmppeerr)){{ 
aallaarrmmee == tteemmppeerr;; 
}} 
}} 
SensorTemperatura 
reiniciar() 
definirAlarme(temper: int) 
lerTemperatura(): int 
14/12/14 http://www.alvarofpinheiro.eti.br 21
IInnttrroodduuççããoo aa UUMMLL 
Resumindo, um classe é formada por? 
Nome da Classe DVD 
Atributos 
Operações 
Hora 
Status estrutura 
comportamento 
Voltar() 
Pausar() 
Adiantar() 
Parar() 
Tocar() 
14/12/14 http://www.alvarofpinheiro.eti.br 22
O que é polimorfismo? 
IInnttrroodduuççããoo aa UUMMLL 
O polimorfismo é a habilidade de esconder diferentes implementações através de uma única 
interface. Interfaces formalizam polimorfismo, aumentam o nível de reusabilidade, 
viabilizam o uso de componentes e reduzem o esforço de evolução da aplicação. 
Uma interface pode ser vista como uma coleção de operações que são usadas para 
especificar os serviços de uma classe. 
Fabricante A Fabricante B Fabricante C 
14/12/14 http://www.alvarofpinheiro.eti.br 23
IInnttrroodduuççããoo aa UUMMLL 
Segue um exemplo de Interface 
ppaauussaarr(()) 
ppaarraarr(()) 
vvoollttaarr(()) 
aavvaannccaarr(()) 
ttooccaarr(()) 
aalltteerraarrHHoorraa(()) 
ccaarrrreeggaarrDDiissccoo(()) 
14/12/14 http://www.alvarofpinheiro.eti.br 24
Mais sobre Interface 
IInnttrroodduuççããoo aa UUMMLL 
Interfaces definem um tipo especificando apenas a 
assinatura de seus métodos 
Interfaces não possuem atributos e seus métodos 
não têm corpo 
Classes implementam interfaces 
provêem implementação para os métodos especificados 
em uma interface 
14/12/14 http://www.alvarofpinheiro.eti.br 25
IInnttrroodduuççããoo aa UUMMLL 
Segue a forma icônica da Interface na UML 
Forma 
Relacionamentos 
de realização 
Tubo 
Piramide 
Cubo 
14/12/14 http://www.alvarofpinheiro.eti.br 26
IInnttrroodduuççããoo aa UUMMLL 
Segue forma canônica de Interface na UML 
Cubo 
Tubo 
Piramide 
<<interface>> 
Forma 
Desenhar 
Mover 
Rotacionar 
Relacionamentos de realização 
14/12/14 http://www.alvarofpinheiro.eti.br 27
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de Interface em CSharp 
iinntteerrffaaccee DDVVDD {{ 
vvooiidd vvoollttaarr(());; 
vvooiidd aavvaannccaarr(());; 
vvooiidd ppaarraarr(());; 
vvooiidd ttooccaarr(());; 
}} 
ccllaassss DDVVDDSSoonnyy:: DDVVDD{{ 
vvooiidd vvoollttaarr(()){{}} 
vvooiidd aavvaannccaarr(()){{}} 
vvooiidd ppaarraarr(()){{}} 
vvooiidd ttooccaarr(()){{}} 
}} 
ccllaassss DDVVDDGGrraaddiieennttee:: DDVVDD{{ 
vvooiidd vvoollttaarr(()){{}} 
vvooiidd aavvaannccaarr(()){{}} 
vvooiidd ppaarraarr(()){{}} 
vvooiidd ttooccaarr(()){{}} 
}} 
14/12/14 http://www.alvarofpinheiro.eti.br 28
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de Interface em Java 
iinntteerrffaaccee DDVVDD {{ 
vvooiidd vvoollttaarr(());; 
vvooiidd aavvaannccaarr(());; 
vvooiidd ppaarraarr(());; 
vvooiidd ttooccaarr(());; 
}} 
ccllaassss DDVVDDSSoonnyy iimmpplleemmeennttss DDVVDD{{ 
vvooiidd vvoollttaarr(()){{}} 
vvooiidd aavvaannccaarr(()){{}} 
vvooiidd ppaarraarr(()){{}} 
vvooiidd ttooccaarr(()){{}} 
}} 
ccllaassss DDVVDDGGrraaddiieennttee 
iimmpplleemmeennttss DDVVDD{{ 
vvooiidd vvoollttaarr(()){{}} 
vvooiidd aavvaannccaarr(()){{}} 
vvooiidd ppaarraarr(()){{}} 
vvooiidd ttooccaarr(()){{}} 
}} 
14/12/14 http://www.alvarofpinheiro.eti.br 29
IInnttrroodduuççããoo aa UUMMLL 
O que são classes abstratas? 
Classes abstratas são úteis para representar a parte da semântica que é comum a mais de 
uma classe. Evitando assim a duplicação de informações e facilitando o reuso e 
extensibilidade do sitema. Classe abstrata é aquela que não possui instância e, em geral, 
possui pelo menos um método abstrato (Métodos abstratos não têm corpo, isso obriga 
as subclasses a fornecer uma implementação para eles). 
Poligono 
Quadrilatero 
São tipos de polígono 
Triangulo 
•Mover(x,y) 
•Area() 
•numeroLados() 
Pentagono 
14/12/14 http://www.alvarofpinheiro.eti.br 30
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de classe abstrata em CSharp e Java 
aabbssttrraacctt ccllaassss PPoolliiggoonnoo {{ 
vvooiidd mmoovveerr((iinntt xx,,iinntt yy)) 
{{......}} 
ddoouubbllee aarreeaa(()){{......}} 
iinntt nnuummeerrooLLaaddooss(());; 
}} 
ccllaassss QQuuaaddrriillaatteerroo:: PPoolliiggoonnoo{{ 
iinntt nnuummeerrooLLaaddooss(()){{rreettuurrnn 44;;}} 
}} aabbssttrraacctt ccllaassss PPoolliiggoonnoo {{ 
vvooiidd mmoovveerr((iinntt xx,,iinntt yy)) 
{{......}} 
ddoouubbllee aarreeaa(()){{......}} 
iinntt nnuummeerrooLLaaddooss(());; 
}} 
ccllaassss QQuuaaddrriillaatteerroo eexxtteennddss PPoolliiggoonnoo{{ 
iinntt nnuummeerrooLLaaddooss(()){{rreettuurrnn 44;;}} 
}} 
14/12/14 http://www.alvarofpinheiro.eti.br 31
IInnttrroodduuççããoo aa UUMMLL 
Que tipos de classes existem? 
Interfaces 
• Assinaturas dos métodos 
Classes 
• Atributos 
• Métodos Classes Abstratas 
• Atributos 
• Métodos 
• Assinatura de Métodos 
14/12/14 http://www.alvarofpinheiro.eti.br 32
IInnttrroodduuççããoo aa UUMMLL 
Porquê então, classes abstratas e Interfaces? 
Interfaces permitem a herança de tipo 
Classes comuns e abstratas permitem a herança de 
código (comportamento e estrutura) e tipo 
Classes descrevem propriedades fundamentais de 
um objeto 
Interfaces descrevem papéis desempenhados por 
um objeto em determinadas situações 
Interfaces são úteis para implementar herança 
múltipla 
14/12/14 http://www.alvarofpinheiro.eti.br 33
IInnttrroodduuççããoo aa UUMMLL 
Para que serve um Pacote em UML? 
Um pacote é um mecanismo de propósito geral para organizar elementos em 
grupos. Eles são conceitos úteis, pois: 
• Facilitam entendimento do sistema 
• Favorecem modularidade e reuso em larga escala 
• São essenciais para estruturar sistemas complexos 
Os pacotes podem ser usados para organizar outros tipos de elementos de UML, 
tais como Casos de Uso, Componentes, etc. 
nome do 
pacote 
14/12/14 http://www.alvarofpinheiro.eti.br 34
IInnttrroodduuççããoo aa UUMMLL 
Qual o conceito de Coesão e Acoplamento? 
Dois conceitos importantes de se entender na hora de se 
decidir que critério será usado para organizar as classes em 
pacotes são: Coesão e Acoplamento. Acoplamento é a 
medida de quão conectadas dois elementos são, ou seja, 
diz-se que um elemento está acoplada a um segundo se 
este tiver algum tipo de relacionamento ou dependência 
com o segunda. Coesão é a medida de quão auto contido 
um elemento é, ou seja, o quão independente de outros 
elementos ele é. 
Para que um sistema seja bem projetado e, 
consequentemente, tenha uma boa manutenabilidade ele 
deve ter baixo acoplamento e alta coesão. 
14/12/14 http://www.alvarofpinheiro.eti.br 35
IInnttrroodduuççããoo aa UUMMLL 
Quais são os tipos de relacionamentos no Diagrama de Classe? 
Associação 
Agregação 
Composição 
Dependência 
Generalização 
Realização 
14/12/14 http://www.alvarofpinheiro.eti.br 36
O que é Associação? 
IInnttrroodduuççããoo aa UUMMLL 
Uma associação é um relacionamento estrutural que especifica que objetos de tipo são conectados a outro 
tipo. Em geral, as associações conectam duas classes e são chamadas associações binárias. Embora não seja 
muito comum é possível ter associações que conectam mais de duas classes. Estas são chamadas de 
associações n-nárias. Uma associação possui os seguintes elementos: 
•Nome – Deve descrever a natureza da associação. 
•Pápeis – Quando uma classe participa de uma associação, ela tem um papel específico neste 
relacionamento. 
•Multiplicidade – Uma associação representa um relacionamento estrutural entre duas entidades. Na 
modelagem de sistemas é importante definir-se quantos objetos estarão conectados a uma instância 
de uma associação. 
•Navegabilidade – Define em que direção é possível navegar para recuperar a instância do outro 
objeto associado. 
Nome da associação 
Professor Universidade 
Trabalha para 
Associação 
Professor 
Universidade 
Classe 
Papéis 
Empregado Empregador 
14/12/14 http://www.alvarofpinheiro.eti.br 37
O que é Multiplicidade? 
IInnttrroodduuççããoo aa UUMMLL 
Multiplicidade define quantos objetos participam do relacionamento 
O número de instâncias de uma classe relacionada a uma instância de outra classe 
Especificado em cada uma das pontas da associação 
Não especificada  Nada (Somente a ligação entre as classes) 
Exatamente um  1 
Zero ou mais  0..* 
Um ou mais  1..* 
Zero ou um  0..1 
Intervalo determinado  0..4 
Valores múltiplos  2,4..6 
Multiplicidade 
Estudante Disciplina 
1 1..* 
14/12/14 http://www.alvarofpinheiro.eti.br 38
O que é Navegação? 
IInnttrroodduuççããoo aa UUMMLL 
Especifica a direção da associação 
Associações são bidirecionais por default 
Estudante Disciplina 
1 1..* 
Navegação 
14/12/14 http://www.alvarofpinheiro.eti.br 39
O que é Agregação? 
IInnttrroodduuççããoo aa UUMMLL 
Uma associação normal entre duas classes representa um relacionamento estrutural entre 
pares, que significa que ambas classes estão conceitualmente no mesmo nível, nehuma 
delas é mais importante que a outra. Algumas vezes, é necessário modelar 
relacionamentos do tipo “todo-parte”, em que uma classe representa um grande 
conceito, que consiste de pequenas partes. Este tipo de relacionamento é chamado de 
agregação, que representa “tem-um”, que significa que um objeto “todo” tem objetos 
“parte”. Agregação é um tipo especial de associação, que possui a característica de 
“todo-parte”. 
Todo Agregação Parte 
Estudante Disciplina 
14/12/14 http://www.alvarofpinheiro.eti.br 40
IInnttrroodduuççããoo aa UUMMLL 
O que é uma Composição? 
Composição é uma variação de uma agregação, que adiciona uma semântica a mais. Na 
composição o relacionamento “todo parte” possui uma maior força de posse e há uma 
coincidência entre o ciclo de vida do todo e da parte. As partes devem ser criadas após o 
todo, e uma vez criadas, elas vivem e morrem com o todo. As partes podem ser 
explicitamente removidas antes da morte do todo, mas elas não podem sobreviver após 
a morte do todo. Além disto, um objeto parte não pode ser compartilhado entre mais 
de um todo. Em uma composição o todo é responsável pela disposição das partes, o que 
significa dizer que ele deve gerenciar a criação e destruição das partes. 
Todo Composição Parte 
Window Painel 
14/12/14 http://www.alvarofpinheiro.eti.br 41
IInnttrroodduuççããoo aa UUMMLL 
O que é uma classe de associação? 
Em uma associação entre duas classes é possível ter propriedades. No exemplo do 
relacionamento empregado/empregador entre as classes Empresa e Pessoa tem 
propriedades que se aplicam exatamente ao relacionamento, como descrição 
do emprego, salário, data de admissão, estas propriedades representam o 
conceito de Emprego. 
14/12/14 http://www.alvarofpinheiro.eti.br 42
IInnttrroodduuççããoo aa UUMMLL 
O que são Associações Qualificadas? 
Uma associação qualificada em UML é equivalente à conceitos de programação tais como 
arrays associativos, Maps e Dicionários. A figura acima 
Mostra uma forma de representar a associação entre Pedido e Linha de Pedido através do 
uso de qualificador. No exemplo acima, o qualificador diz que em uma conexão com um 
pedido, pode haver uma linha de pedido para cada instância de produto. A multiplicidade 
0..1, indica que há no máximo uma linha de pedido associada a um pedido, dado um 
produto como argumento. 
ccllaassss OOrrddeerr {{ 
pprriivvaattee MMaapp __lliinneeIItteemmss;; 
ppuubblliicc OOrrddeerrLLiinnee ggeettLLiinneeIItteemm ((PPrroodduucctt aaPPrroodduucctt)){{}} 
ppuubblliicc vvooiidd aaddddLLiinneeIItteemm ((NNuummbbeerr aammoouunntt,, PPrroodduucctt ffoorrPPrroodduucctt)){{}} 
}} 
14/12/14 http://www.alvarofpinheiro.eti.br 43
IInnttrroodduuççããoo aa UUMMLL 
O que é uma Dependência? 
Uma dependência é um relacionamento de “uso” que tenta apontar que mudanças em uma 
classes pode afetar outra classe que a usa, mas não necessariamente o inverso. Uma 
dependência entre classes pode ser geradas pelos seguintes tipos de uso: 
• Parâmetros de entrada de métodos 
• Tipos de retorno de métodos 
• Utilização dentro do código de métodos 
• Exceções lançadas 
14/12/14 http://www.alvarofpinheiro.eti.br 44
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de Dependência em CSharp e Java 
ccllaassss LLoogg {{ 
...... 
vvooiidd ggrraavvaarr(()){{ 
AArrqquuiivvoo aa ==......;; 
aa..eessccrreevveerr((......));; 
}} 
}} 
ccllaassss AArrqquuiivvoo {{ 
...... 
vvooiidd ssaallvvaarr((SSttrreeaamm ddaaddooss)){{ 
...... 
}} 
}} 
OBS: Pode existir relacionamento de 
dependência entre vários elementos de 
UML 
Classe 
Pacote 
Cliente Fornecedor 
PacoteFornecedor 
PacoteCliente 
14/12/14 http://www.alvarofpinheiro.eti.br 45
IInnttrroodduuççããoo aa UUMMLL 
O que é Generalização e Especialização? 
É um relacionamento entre um elemento genérico (chamado superclasse ou pai) e um mais 
específico (chamado subclasse ou filho). 
Generalização também é chamado de Herança ou relacionamento “é-um-tipo-de”. Um filho 
pode ser usado em qualquer lugar onde seja requerido o pai. Além disso, o filho herda os 
atributos, operações e relacionamentos do pai. O filho pode ter atributos ou operações a 
mais, ou pode até sobrescrever uma operação do pai. 
O objeto da classe filha 
“herda” todas as 
características da classe pai 
14/12/14 http://www.alvarofpinheiro.eti.br 46
Então, o que Herança? 
Animal 
IInnttrroodduuççããoo aa UUMMLL 
Mamífero Ave 
Homem Leão 
Class Animal{ 
... 
} 
Class Mamifero extends Animal{ 
... 
} 
Class Ave extends Animal{ 
... 
} 
Class Homem extends Mamifero{ 
... 
} 
14/12/14 http://www.alvarofpinheiro.eti.br 47
IInnttrroodduuççããoo aa UUMMLL 
A Herança pode ser de que tipo? 
Simples quando: uma classe herda de uma outra 
cor 
largura da linha 
desenhar() 
selecionar() 
Círculo 
raio 
centro 
desenhar() 
Retângulo 
vertices 
desenhar() 
diagonal() 
Figura 
Superclasse 
(pai) 
Subclasses 
Relacionamento 
de Generalização 
14/12/14 http://www.alvarofpinheiro.eti.br 48
IInnttrroodduuççããoo aa UUMMLL 
A Herança pode ser de que tipo? 
Múltipla quando: classes herdando de mais de uma classe 
Mamífero AnimalVoador 
Herança 
múltipla 
Cachorro Gato Morcego Passarinho Gaviao 
Apesar de ser um mecanismos interessante, poucas linguagens de programação dão suporte 
a isso. Além disso, existem algumas dificuldades semânticas relacionadas ao assunto. As 
perguntas abaixo demonstram essa questão. 
•O que acontece quando as superclasses possuem o mesmo método (métodos com o mesmo 
nome)? 
•O que acontece quando se tenta executar um método que não está definido na subclasse? 
Em que hierarquia de superclasses deve-se procurar o método? 
14/12/14 http://www.alvarofpinheiro.eti.br 49
IInnttrroodduuççããoo aa UUMMLL 
O que é uma Realização? 
Uma realização é um relacionamento semântico entre uma interface e uma classe (veremos mais adiante 
que pode ser entre interfaces e outros elementos). Este relacionamento especifica um tipo de 
contrato que a entidade que realiza tem que seguir. Como visto anteriormente uma interface define 
um conjunto de operações que são usados para especificar os serviços implementados por uma ou 
mais classes. Neste caso é dito que estas classes realizam a interface, ou sejam, seguem o contrato 
estabelecido por ela. 
 Indica que um elemento serve como 
contrato que o outro deve seguir 
 Relacionamento semântico entre 
uma interface e uma classe 
 Este relacionamento especifica um 
tipo de contrato que a entidade que 
realiza tem que seguir. 
 Similar à Generalização 
 Viabiliza a herança de tipo, ou seja, 
o relacionamento “é um tipo de” 
14/12/14 http://www.alvarofpinheiro.eti.br 50
IInnttrroodduuççããoo aa UUMMLL 
Como representar uma Realização? 
Classe Subsistema 
Realização 
Caso de uso 
Componente 
Realização de Caso de uso 
Pode ser usado em diferentes tipos de elementos 
14/12/14 http://www.alvarofpinheiro.eti.br 51
O que é Visibilidade? 
IInnttrroodduuççããoo aa UUMMLL 
Existem quatro tipos básicos de modificadores de acesso 
Public – São visíveis para quaisquer classes invocar/acessar 
Private – São visíveis apenas na própria classe 
Protected – São visíveis apenas para subclasses ou classes do mesmo pacote 
Friendly – São visíveis apenas para classes do mesmo pacote 
São aplicáveis à (classe, método, atributo e relacionamentos) 
Dependendo escopo podem ter significado diferente 
Mecanismo que facilita o encapsulamento 
14/12/14 http://www.alvarofpinheiro.eti.br 52
O que é uma restrição? 
IInnttrroodduuççããoo aa UUMMLL 
Restrições podem ser usadas em diferentes 
elementos de UML. 
Usadas para criação de novas regras sobre 
elementos do modelo ou modificação de regras 
existentes 
Funcionário 
Professor Departamento 
1..* 1 
{subset} 
Coordenador 
3 1 
14/12/14 http://www.alvarofpinheiro.eti.br 53
IInnttrroodduuççããoo aa UUMMLL 
Resumo de Diagrama de Classe 
14/12/14 http://www.alvarofpinheiro.eti.br 54
IInnttrroodduuççããoo aa UUMMLL 
Algumas dicas úteis sobre Classe 
É focado na comunicação de um aspecto da visão 
estática do projeto do sistema 
Contém somente elementos que são essenciais para o 
entendimento do aspecto que se deseja mostrar. 
Provê detalhes consistentes com o nível de detalhes 
apropriado para o bom entendimento do mesmo. 
Também não é tão minimalista ao ponto de não prover 
informações suficientes para o leitor compreender a 
semântica do mesmo. 
14/12/14 http://www.alvarofpinheiro.eti.br 55
IInnttrroodduuççããoo aa UUMMLL 
Mais dicas sobre Classes 
 Quando estiver modelando lembre-se que um diagrama de classes é somente um representação gráfica 
da visão estática do projeto do sistema. Um único diagrama de classes não será capaz de capturar tudo 
sobre o projeto do sistema. Cada diagrama de classes representará somente um aspecto do visão 
estática do sistema, o conjunto de diagramas é que será capaz de representar a visão estática completa. 
 Um diagrama de classes bem estruturado possui as seguintes características: 
• É focado na comunicação de um aspecto da visão estática do projeto do sistema. 
• Contém somente elementos que são essenciais para o entendimento do aspecto que se deseja 
mostrar. 
• Provê detalhes consistentes com o nível de detalhes apropriado para o bom entendimento do 
mesmo. 
• Também não é tão minimalista ao ponto de não prover informações suficientes para o leitor 
compreender a semântica do mesmo. 
 Quando estiver modelando um diagrama: 
• Dê-lhe um nome que comunica o seu propósito 
• Organize os elementos de forma a evitar o sobreposição de linhas. 
• Mantenha os elementos semanticamente relacionados juntos; 
• Use Anotações (Notes) e cores para chamar a atenção sobre importante elementos do diagrama. 
• Não tente mostrar todos os tipos de relacionamentos entre as classes (Exemplo, se já há um 
relacionamento do tipo Agregação, não é necessário colocar uma dependência). 
14/12/14 http://www.alvarofpinheiro.eti.br 56
IInnttrroodduuççããoo aa UUMMLL 
O que são Diagramas de Objetos? 
O diagrama de objetos é bastante similar ao de classes, no 
entanto os elementos que o compõe são objetos ao invés 
de classes. Na verdade o diagrama de objetos representa 
um snapshot (fotografia) do sistema em um determinado 
instante. O diagrama de objetos é como se fosse o perfil do 
sistema em um certo momento de sua execução. 
Eles são úteis para mostrar o estado do sistema em um 
dado instante que seja importante e demonstrar o estado 
de ambientes complexos, tais como sistemas de tempo real 
ou sistemas de controle. Em geral não é muito usado para a 
modelagem de sistemas convencionais. 
14/12/14 http://www.alvarofpinheiro.eti.br 57
IInnttrroodduuççããoo aa UUMMLL 
Qual a relação entre Classe e Objeto? 
Classe é uma definição abstrata de um objeto 
Ela define a estrutura e o comportamento dos objetos 
Serve como template para criação de objetos 
Objetos são agrupados em classes 
Curso 
•Nome 
•Localização 
•Duração 
•Créditos 
•Adicionar um aluno 
•Remover um aluno 
•Atribuir professor 
•Atribuir sala 
•Nome = Análise I 
•Localização = 
MAC 
•Duração = 30h 
•Créditos = 2 
•Nome = Análise II 
•Localização = 
MAC 
•Duração = 15h 
•Créditos = 4 
•Nome = SI 
•Localização = 
MAC 
•Duração = 30h 
•Créditos = 2 
14/12/14 http://www.alvarofpinheiro.eti.br 58
IInnttrroodduuççããoo aa UUMMLL 
Como representar um objeto em UML? 
: Professor p : 
Professor 
Apenas o nome p 
da classe 
Apenas o nome do 
objeto 
Nome da classe 
e do objeto 
: Professor 
: Professor 
Múltiplos objetos 
p: Processo 
[esperando] 
objeto com o 
estado explícito 
: Professor 
titulo = “Mestre” 
Nome = “Pascoal” 
Objeto com valores 
de atributos 
14/12/14 http://www.alvarofpinheiro.eti.br 59
IInnttrroodduuççããoo aa UUMMLL 
Exemplo de criação de objetos em CSharp e Java 
ccllaassss PPeessssooaa {{ 
...... 
}} 
...... 
PPeessssooaa pp11 == nneeww PPeessssooaa(());; 
PPeessssooaa pp22 == nneeww PPeessssooaa(());; 
pp11..nnoommee == ““PPaassccooaall””;; 
pp22..nnoommee == ““MMaarriiaa””;; 
14/12/14 http://www.alvarofpinheiro.eti.br 60
IInnttrroodduuççããoo aa UUMMLL 
Diagrama de Classe vrs Diagrama de Objeto 
14/12/14 http://www.alvarofpinheiro.eti.br 61
IInnttrroodduuççããoo aa UUMMLL 
O que é um Diagrama de Estrutura Composta? 
Permite desdobrar um classe em partes menores 
Visualizar a estrutura interna de classes mais complexas 
Útil para mostrar agrupamentos em tempo de execução 
Mostra em mais detalhes as dependências de uma classe 
TV Viewer 
controls[0..* ] 
generators 
display 
Parte 
TV Cont rol API 
Conector 
Delegação Porta 
Interface 
requerida 
Interface 
Ofericida 
14/12/14 http://www.alvarofpinheiro.eti.br 62
IInnttrroodduuççããoo aa UUMMLL 
O que é Diagrama de Componente? 
O diagrama de componente descreve os componentes de software e suas dependências, representando a estrutura dos elementos físicos do 
sistema. Assim como os elementos lógicos de um sistema (como classes, por exemplo) existem no mundo conceitual, elementos físicos 
existem no mundo real dos bits (arquivos binários, executáveis e de textos, por exemplo). Em UML, todos estes elementos são modelados 
como componentes. 
As interfaces de UML são a ligação entre os elementos físicos e os lógicos, pois os componentes (mundo físico) realizam um conjunto de 
interfaces (mundo conceitual) . 
Componentes são partes não trivial, quase independente, substituível de um sistema, que provê a realização de (uma/um conjunto de) 
interface(s) 
Exemplos: 
• um código fonte 
• Uma biblioteca 
• um componente executável 
• Tabela, arquivo ou documentos 
Em UML 1.4 
Em UML 2.0 
14/12/14 http://www.alvarofpinheiro.eti.br 63
IInnttrroodduuççããoo aa UUMMLL 
O que é Diagrama de Implantação? 
• Relacionado à visão lógica da arquitetura você pode usar diagramas como de classes, colaboração, pacotes, sequência, etc. Mas em 
relação à visão física existem o seguintes diagramas: componentes, que mostram os elementos físicos, como arquivos, executáveis, 
tabelas e artefatos; Implantação, que mostra os nós físicos em termos de equipamentos. 
• Mostra a relação física entre os componentes de software e hardware 
• Podem envolver somente as relações entre componentes de hardware ou entre hardware e software 
• Útil para demonstrar a Visão Física da arquitetura 
Nós – Algum tipo de unidade computacional, em geral elementos de hardware 
Nós contém artefatos (arquivos, executáveis, etc.) 
Generalizando, o Nó pode ser considerado qualquer 
elemento que seja capaz de hospedar 
software (ex. Sistema Operacional) 
Conexões – Conexões entre os nós que representa um modo 
de comunicação qualquer 
(ou em termos físicos ou em termos de protocolo) 
14/12/14 http://www.alvarofpinheiro.eti.br 64
IInnttrroodduuççããoo aa UUMMLL 
O que é Diagrama de Interação? 
Os diagramas de interação modelam interações entre os elementos do sistema e são usados para 
modelar aspectos sobre a dinâmica do sistema. Em geral a interação é iniciada por um ator e envolve 
instâncias (objetos) das classes. Os diagramas de interação capturam a semântica do fluxo de 
eventos do caso de uso e, por isso, auxiliam a identificar classes, responsabilidades e 
relacionamentos. 
A modelagem no diagrama de interação envolve modelar instâncias de classes e as mensagens que são 
disparadas entre eles, de forma a ilustrar o comportamento em um determinado cenário. Diagramas 
de interação podem especificar a dinâmica de um conjunto de objetos relacionados ou representar 
um fluxo particular do caso de uso. 
Em UML 2.0 existem os seguintes tipos: 
Diagrama de Seqüência 
Diagrama de Comunicação (Antigo diagrama de colaboração) 
Diagrama de Tempo (Timing Diagram) 
Diagrama Geral de Interações (Interaction Overview Diagram) 
14/12/14 http://www.alvarofpinheiro.eti.br 65
IInnttrroodduuççããoo aa UUMMLL 
O que é um Diagrama de Seqüência? 
Enfatiza na ordem temporal das mensagens, de forma que as interações iniciam-se à esquerda e vão 
acontecendo em direção à direita. Este diagrama contém basicamente três tipos de elementos 
• Objetos 
• Ligações 
• Mensagens 
A figura acima mostra o diagrama 
de seqüência, colocando os objetos que 
participam da interação no topo do 
diagrama, ao longo do enixo X. 
Os objetos que iniciam a interação 
ficam do lado esquerdo e 
gradativamente enviam mensagens 
para os elementos à direita. 
14/12/14 http://www.alvarofpinheiro.eti.br 66
IInnttrroodduuççããoo aa UUMMLL 
Qual a representação de um Diagrama de Seqüência? 
Objeto cliente Objeto fornecedor 
:Cliente :Fornecedor 
1: Realize responsabilidade 
Mensagem 
Foco de controle 
Mensagem reflexiva 
1.1: Realize outra responsabilidade 
Numeração hierárquica para 
as mensagens 
14/12/14 http://www.alvarofpinheiro.eti.br 67
IInnttrroodduuççããoo aa UUMMLL 
Um exemplo de Diagrama de Seqüência 
14/12/14 http://www.alvarofpinheiro.eti.br 68
IInnttrroodduuççããoo aa UUMMLL 
Quais os aspectos de um Diagrama de Seqüência? 
Além dos elementos básicos que podem ser usados no diagramas de 
seqüência, existem outras características mais avançadas que podem ser 
usadas nos diagramas de seqüência, são elas: 
•Criação e Deleção (Controle do ciclo de vida) de objetos 
•Laços e condições 
•Mensagens assíncronas 
Criação 
Auto-destruição 
Destruição 
Forçada 
14/12/14 http://www.alvarofpinheiro.eti.br 69
IInnttrroodduuççããoo aa UUMMLL 
Outros aspectos do Diagrama de Seqüência 
Um problema recorrente do Diagramas de seqüência é que ele não é muito bom para demonstrar situações onde seja 
requerido laços ou processamento condicional. Semanticamente o diagrama de seqüência mostra o fluxo de 
interação entre os objetos em um determinado cenário. Situações que requeriam a escolha de mais de uma 
alternativa de caminho de execução deveriam ser modeladas como diferentes seqüências de execução (em geral, 
requerendo a criação de diferentes diagramas de seqüência). Uma outra alternativa era incrementar a semântica 
de tais diagramas através da inclusão de Notas de texto, indicando a necessidade de laços ou de uma escolha. 
Devido a essa deficiência algumas ferramentas de modelagem incluíam formas proprietárias de representar estes 
elementos. 
UML 2.0 incluiu o conceito de 
Frames de Interação, que 
permitem a representação de 
repetições e caminhos 
alternativos. 
14/12/14 http://www.alvarofpinheiro.eti.br 70
IInnttrroodduuççããoo aa UUMMLL 
Quais os operadores do Diagrama de Seqüência? 
14/12/14 http://www.alvarofpinheiro.eti.br 71
Um exemplo 
IInnttrroodduuççããoo aa UUMMLL 
 Este exemplo possui um frame de repetição (loop), que indica que vai repetir o bloco interno para cada line 
item. O frame de escolha (alt), interno a ele, possui uma escolha, caso o value > $10000 ele executa o 
dispatch do objeto careful, se não, ele executa o dispatch no objeto regular. Por fim, tem um fragmento 
opcional, que só executa caso a condição de guarda seja satisfeita. 
 Segue abaixo um trecho de código equivalente`ao comportamento especificado no diagrama de seqüência. 
 procedure dispatch 
 foreach (lineitem) 
 if (product .value > $10K) 
 careful .dispatch 
 else 
 regular .dispatch 
 end if 
 end for 
 if (needsConfirmation) 
 messenger .confirm 
 end procedure 
14/12/14 http://www.alvarofpinheiro.eti.br 72
IInnttrroodduuççããoo aa UUMMLL 
Quais são os tipos de Mensagens? 
No diagrama de seqüência é possível representar mensagens síncronas ou assíncronas. 
• Mensagens Síncronas - A linha de execução do objeto que originou a mensagem depende da 
execução do objeto chamado 
• Mensagens assíncronas - A linha de execução do objeto que originou a mensagem é 
independente da execução do objeto chamado 
14/12/14 http://www.alvarofpinheiro.eti.br 73
IInnttrroodduuççããoo aa UUMMLL 
O que é um Diagrama de Comunicação? 
É um tipo de diagrama de interação que dá ênfase às ligações entre os vários participantes da interação. 
Ao contrário do diagrama de seqüência, onde cada participante é disposto em uma linha de tempo 
e mostra a seqüência de mensagens na direção vertical, o diagrama de colaboração permite o 
posicionamento livre dos participantes, permite desenhar ligações para mostrar como os 
participantes se conectam, e usa numeração para mostrar a seqüência de mensagens. Com o 
diagrama de comunicação pode-se mostrar quão ligados são os participantes. 
14/12/14 http://www.alvarofpinheiro.eti.br 74
IInnttrroodduuççããoo aa UUMMLL 
Qual a diferença entre Colaboração e Seqüência? 
Os diagramas de colaboração e seqüência são semanticamente 
equivalentes e podem ser automaticamente gerados, um a partir 
do outro. Cada um deles tem vantagens e desvantagens, 
dependendo de como se queira usá-los. 
Colaboração 
• Melhores para visualizar os relacionamentos e responsabilidades de 
um dado objeto 
• Mais fáceis de desenhar - úteis em sessões de brainstorm 
Seqüência 
• Melhores para visualizar a seqüência do fluxo no tempo 
• Melhores para visualizar o fluxo completo 
• Mais adequados para cenários complexos 
14/12/14 http://www.alvarofpinheiro.eti.br 75
IInnttrroodduuççããoo aa UUMMLL 
O que é um Diagrama Geral de Interação? 
Este é um novo diagrama de UML 2.0 que combina elementos de diagrama de atividades com outros 
diagramas de interação. Ele embute nos fluxos de atividades, as interações entre objetos (diagramas 
de interação). Desta forma, ele permite reusar e combinar interações pré-definidas. Neste diagrama 
é possível, compor e reusar diferentes diagramas de interação e dar uma visão única para uma lógica 
de processamento mais complexa. 
Apesar de interessante, a sua 
aplicabilidade ainda não é 
muito clara, poucos livros a 
citam e quando citam, são 
muito superficiais. 
14/12/14 http://www.alvarofpinheiro.eti.br 76
IInnttrroodduuççããoo aa UUMMLL 
Para que serve o Diagrama de Tempo? 
É focado em restrições tempo para um ou mais objetos 
Relaciona os objetos, seus estados e o tempo 
São bem aplicáveis para 
sistemas embarcados 
(e comumente usado por 
engenheiros de hardware) 
14/12/14 http://www.alvarofpinheiro.eti.br 77
Outros Diagramas 
IInnttrroodduuççããoo aa UUMMLL 
Diagrama de Atividades 
Diagrama de Estados 
14/12/14 http://www.alvarofpinheiro.eti.br 78
IInnttrroodduuççããoo aa UUMMLL 
Para que Atores e Casos de Uso? 
14/12/14 http://www.alvarofpinheiro.eti.br 79
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para localizar? 
Descrever Como 
Atores e Casos 
de Uso 
Interagem 
Avaliar os 
resultados 
Apresentar o 
Modelo de Casos 
de Uso em 
Diagramas de 
Casos de Uso 
Empacotar 
Casos de Uso e 
Atores 
Identificar Casos 
de Uso 
Localizar 
Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 80
IInnttrroodduuççããoo aa UUMMLL 
Localizar 
atores 
Stakeholders 
definidos no doc 
de visão 
14/12/14 http://www.alvarofpinheiro.eti.br 81
 Qualquer desses é um ator candidato 
 Uma instância de ator é alguém ou algo 
externo ao sistema que interage com ele 
 Uma classe de ator define um conjunto de 
instâncias de ator, no qual cada uma 
desempenha o mesmo papel em relação ao 
sistema 
 Exemplo: gerentes de vendas acessando 
um mesmo relatório gerencial 
14/12/14 http://www.alvarofpinheiro.eti.br 82
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para localizar? 
Descrever Como 
Atores e Casos 
de Uso 
Interagem 
Avaliar os 
resultados 
Apresentar o 
Modelo de Casos 
de Uso em 
Diagramas de 
Casos de Uso 
Empacotar 
Casos de Uso e 
Atores 
Identificar 
Casos de Uso 
Localizar Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 83
IInnttrroodduuççããoo aa UUMMLL 
 Um caso de uso é uma seqüência de ações 
realizada por um sistema que produz um 
resultado de valor observável para 
determinado ator 
 Todos os casos de uso juntos devem 
descrever a funcionalidade completa do 
sistema (requisitos) 
 Atores são fundamentais para a descoberta 
dos casos de uso 
14/12/14 http://www.alvarofpinheiro.eti.br 84
IInnttrroodduuççããoo aa UUMMLL 
Para cada 
ator.... 
Identificar 
Casos de Uso 
14/12/14 http://www.alvarofpinheiro.eti.br 85
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para localizar? 
Descrever 
Como Atores e 
Casos de Uso 
Interagem 
Avaliar os 
resultados 
Apresentar o 
Modelo de Casos 
de Uso em 
Diagramas de 
Casos de Uso 
Empacotar 
Casos de Uso e 
Atores 
Identificar Casos 
de Uso 
Localizar Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 86
IInnttrroodduuççããoo aa UUMMLL 
 É o primeiro passo de modelagem dos caso de uso 
 Diagrama de casos de uso 
 Uma associação de comunicação é uma associação 
entre uma classe de ator e uma classe de caso de 
uso, que indica haver interação entre suas 
instâncias 
 Um ator se comunica com os casos de uso por 
vários motivos, por exemplo: 
 Para iniciar um caso de uso 
 Para solicitar dados do sistema 
 Para alterar os dados armazenados no sistema 
14/12/14 http://www.alvarofpinheiro.eti.br 87
IInnttrroodduuççããoo aa UUMMLL 
Coordenador 
14/12/14 http://www.alvarofpinheiro.eti.br 88
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para localizar? 
Descrever Como 
Atores e Casos 
de Uso 
Interagem 
Avaliar os 
resultados 
Apresentar o 
Modelo de Casos 
de Uso em 
Diagramas de 
Casos de Uso 
Empacotar 
Casos de Uso e 
Atores 
Identificar Casos 
de Uso 
Localizar Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 89
IInnttrroodduuççããoo aa UUMMLL 
 Organizar casos de uso e atores em pacotes 
 Um pacote de casos de uso é um conjunto 
de casos de uso, atores e relacionamentos. 
É usado para organizar o modelo de casos 
de uso dividindo-o em partes menores. 
 Facilita o entendimento 
14/12/14 http://www.alvarofpinheiro.eti.br 90
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para localizar? 
Descrever Como 
Atores e Casos 
de Uso 
Interagem 
Avaliar os 
resultados 
Apresentar o 
Modelo de 
Casos de Uso 
em Diagramas 
de Casos de Uso 
Empacotar 
Casos de Uso e 
Atores 
Identificar Casos 
de Uso 
Localizar Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 91
IInnttrroodduuççããoo aa UUMMLL 
Apresentar o 
Modelo de Casos 
de Uso em 
Diagramas de 
Casos de Uso 
14/12/14 http://www.alvarofpinheiro.eti.br 92
IInnttrroodduuççããoo aa UUMMLL 
14/12/14 http://www.alvarofpinheiro.eti.br 93
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para localizar? 
Descrever Como 
Atores e Casos 
de Uso 
Interagem 
Avaliar os 
resultados 
Apresentar o 
Modelo de Casos 
de Uso em 
Diagramas de 
Casos de Uso 
Empacotar 
Casos de Uso e 
Atores 
Identificar Casos 
de Uso 
Localizar Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 94
IInnttrroodduuççããoo aa UUMMLL 
Avaliar 
resultados 
14/12/14 http://www.alvarofpinheiro.eti.br 95
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para estruturar? 
Avaliar os 
resultados 
Estabelecer 
Relacionamentos 
de Inclusão 
Estabelecer 
Relacionamentos 
de Extensão 
Estabelecer 
Relacionamentos 
de Generalização 
entre Casos de 
Uso 
Estabelecer 
Relacionamentos 
de Generalização 
entre Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 96
IInnttrroodduuççããoo aa UUMMLL 
 Um relacionamento de inclusão é aquele que 
 Se estabelece entre um caso de uso base e um 
caso de uso de inclusão 
 Especifica como o comportamento definido para o 
caso de uso de inclusão é inserido de forma 
explícita no comportamento definido para o caso 
de uso base 
 Além do reuso, relacionamentos de inclusão são criados 
para fatorar (separar comportamento complexo do 
caso de uso ou comportamento que não faz parte do 
propósito principal do caso de uso a fim de diminuir a 
complexidade do fluxo de eventos) 
14/12/14 http://www.alvarofpinheiro.eti.br 97
IInnttrroodduuççããoo aa UUMMLL 
14/12/14 http://www.alvarofpinheiro.eti.br 98
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para estruturar? 
Avaliar os 
resultados 
Estabelecer 
Relacionamentos 
de Inclusão 
Estabelecer 
Relacionamentos 
de Extensão 
Estabelecer 
Relacionamentos 
de Generalização 
entre Casos de 
Uso 
Estabelecer 
Relacionamentos 
de Generalização 
entre Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 99
IInnttrroodduuççããoo aa UUMMLL 
 Um relacionamento de extensão 
 Se estabelece entre um caso de uso de 
extensão e um caso de uso base 
 Especifica como o comportamento definido 
para o caso de uso de extensão pode ser 
inserido no comportamento definido para o 
caso de uso de base 
 Criados para modelar comportamentos 
opcionais ou excepcionais 
 São executados somente face a certas condições 
 Casos de uso de inclusão são sempre executados 
14/12/14 http://www.alvarofpinheiro.eti.br 100
IInnttrroodduuççããoo aa UUMMLL 
14/12/14 http://www.alvarofpinheiro.eti.br 101
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para estruturar? 
Avaliar os 
resultados 
Estabelecer 
Relacionamentos 
de Inclusão 
Estabelecer 
Relacionamentos 
de Extensão 
Estabelecer 
Relacionamentos 
de Generalização 
entre Casos de 
Uso 
Estabelecer 
Relacionamentos 
de Generalização 
entre Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 102
IInnttrroodduuççããoo aa UUMMLL 
 Uma generalização de casos de uso 
 É um relacionamento de um caso de uso filho com 
um caso de uso pai 
 Especifica como um filho pode adotar todo o 
comportamento e as características descritas para 
o pai 
 Usado para relacionar um caso de uso mais 
especializado com um mais geral 
 Este relacionamento complica mais do que 
facilita e deve ser evitado 
14/12/14 http://www.alvarofpinheiro.eti.br 103
IInnttrroodduuççããoo aa UUMMLL 
14/12/14 http://www.alvarofpinheiro.eti.br 104
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para estruturar? 
Avaliar os 
resultados 
Estabelecer 
Relacionamentos 
de Inclusão 
Estabelecer 
Relacionamentos 
de Extensão 
Estabelecer 
Relacionamentos 
de Generalização 
entre Casos de 
Uso 
Estabelecer 
Relacionamentos 
de Generalização 
entre Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 105
IInnttrroodduuççããoo aa UUMMLL 
 Na generalização de ator o filho herda o papel 
que o pai pode desempenhar em um caso de uso. 
 Facilita a leitura do modelo de caso de uso 
14/12/14 http://www.alvarofpinheiro.eti.br 106
IInnttrroodduuççããoo aa UUMMLL 
Quais as atividades para estruturar? 
Avaliar os 
resultados 
Estabelecer 
Relacionamentos 
de Inclusão 
Estabelecer 
Relacionamentos 
de Extensão 
Estabelecer 
Relacionamentos 
de Generalização 
entre Casos de 
Uso 
Estabelecer 
Relacionamentos 
de Generalização 
entre Atores 
14/12/14 http://www.alvarofpinheiro.eti.br 107
IInnttrroodduuççããoo aa UUMMLL 
Avaliar 
resultados 
14/12/14 http://www.alvarofpinheiro.eti.br 108
IInnttrroodduuççããoo aa UUMMLL 
Mecanismos Auxiliares da UML 
UML é uma linguagem muito extensível e desta 
forma ela pode ser usada para modelar basicamente 
tudo que se deseja. Os principais elementos que a 
permitem ser flexível são: 
• Estereótipos 
• Notas 
• Propriedades (Tagged values) 
• Restrições 
Estes elementos serão descritos com mais detalhes 
mais adiante. 
14/12/14 http://www.alvarofpinheiro.eti.br 109
O que é um Estereótipo 
IInnttrroodduuççããoo aa UUMMLL 
Estereótipo é um mecanismo utilizado para estender o vocabulário de UML e pode ser aplicado a 
qualquer elemento, sejam classes, relacionamentos, mensagens, atributo, etc. O estereotipo 
permite mudar a semântica do elemento ao qual ele é aplicado. Ele é representado 
colocando-se uma marcação no formato <<marcação>>, em cima do elemento. Em UML, já 
existem um conjunto de estereótipos pré-definidos que são aplicáveis a determinados 
elementos de UML, inclusive alguns deles já possuem ícones associados a eles, de forma que 
visualmente eles são diferentes do elemento sem o estereótipo, como é o caso de 
<<interface>> e <<actor>>, que são aplicáveis ao elemento Classe e mudam visualmente e 
semanticamente o seu significado. 
14/121/144/12/14 por Álvaro F Phintthpe:i/r/owww.alvarofpinheiro.eti.br 110 110
IInnttrroodduuççããoo aa UUMMLL 
Para que server uma nota? 
Mecanismo que permite a adição de comentários e 
associação do mesmo a qualquer elemento de 
UML. 
LeitoraCartao 
Esta classe é uma abstração 
do dispositivo de hardware 
que será usado para ler 
efetivamente as informações 
do cartão magnético. 
14/12/14 http://www.alvarofpinheiro.eti.br 111
IInnttrroodduuççããoo aa UUMMLL 
O que é uma Propriedades (Tagged Values)? 
Um tagged value é uma extensão de propriedades dos elementos de UML, 
permitindo que sejam criadas novas informações na especificação do elemento. 
Cada elemento em UML possui o conjunto de propriedades possíveis dele. Por 
exemplo, as classes possuem visibilidade, atributos e métodos. Para possibilitar 
a inclusão de uma nova propriedade á um elemento é possível fazer uso dos 
taggeds values que permitem definir propriedades que serão atribuídas àqueles 
elementos onde ela se aplica. 
Cliente 
{persistence} 
LeitoraCartao 
{location=server} 
14/12/14 http://www.alvarofpinheiro.eti.br 112

Más contenido relacionado

La actualidad más candente

Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLClaudio Martins
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturaisthaisedd
 
Diagramas UML (Diseño de Sistemas)
Diagramas UML (Diseño de Sistemas)Diagramas UML (Diseño de Sistemas)
Diagramas UML (Diseño de Sistemas)josue salas
 
El Rol de Arquitecto de Software
El Rol de Arquitecto de SoftwareEl Rol de Arquitecto de Software
El Rol de Arquitecto de SoftwareSoftware Guru
 
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml   2.1 Diagramas De Cu Y ClasesCurso Uml   2.1 Diagramas De Cu Y Clases
Curso Uml 2.1 Diagramas De Cu Y ClasesEmilio Aviles Avila
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Es capítulo 5 - modelagem de sistemas
Es   capítulo 5  - modelagem de sistemasEs   capítulo 5  - modelagem de sistemas
Es capítulo 5 - modelagem de sistemasFelipe Oliveira
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoVinícius de Paula
 
Software design patterns ppt
Software design patterns pptSoftware design patterns ppt
Software design patterns pptmkruthika
 
Diagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas CompostasDiagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas CompostasOctviodeOliveiraJorg
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Ricardo Terra
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 

La actualidad más candente (20)

UML
UMLUML
UML
 
Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UML
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Use case diagram
Use case diagramUse case diagram
Use case diagram
 
Uml
UmlUml
Uml
 
Diagramas de componentes
Diagramas de componentesDiagramas de componentes
Diagramas de componentes
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
 
Uml
UmlUml
Uml
 
Diagramas UML (Diseño de Sistemas)
Diagramas UML (Diseño de Sistemas)Diagramas UML (Diseño de Sistemas)
Diagramas UML (Diseño de Sistemas)
 
El Rol de Arquitecto de Software
El Rol de Arquitecto de SoftwareEl Rol de Arquitecto de Software
El Rol de Arquitecto de Software
 
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml   2.1 Diagramas De Cu Y ClasesCurso Uml   2.1 Diagramas De Cu Y Clases
Curso Uml 2.1 Diagramas De Cu Y Clases
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Es capítulo 5 - modelagem de sistemas
Es   capítulo 5  - modelagem de sistemasEs   capítulo 5  - modelagem de sistemas
Es capítulo 5 - modelagem de sistemas
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de Projeto
 
Software design patterns ppt
Software design patterns pptSoftware design patterns ppt
Software design patterns ppt
 
Diagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas CompostasDiagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas Compostas
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Uml
UmlUml
Uml
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 

Destacado (20)

Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UML
 
UML - Diagrama de Pacotes
UML - Diagrama de PacotesUML - Diagrama de Pacotes
UML - Diagrama de Pacotes
 
Apostila uml
Apostila umlApostila uml
Apostila uml
 
Uml
UmlUml
Uml
 
03 mer2
03 mer203 mer2
03 mer2
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
UML
UMLUML
UML
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
Uml - Exemplos de Modelagem em UML
Uml - Exemplos de Modelagem em UMLUml - Exemplos de Modelagem em UML
Uml - Exemplos de Modelagem em UML
 
Componentes
ComponentesComponentes
Componentes
 
Html 7
Html 7Html 7
Html 7
 
Restaurante
RestauranteRestaurante
Restaurante
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de Software
 
Proj uml restaurante online
Proj uml restaurante onlineProj uml restaurante online
Proj uml restaurante online
 
Gerência de Projetos de Software - Aula 2
Gerência de Projetos de Software - Aula 2Gerência de Projetos de Software - Aula 2
Gerência de Projetos de Software - Aula 2
 
Gerência de Projetos de Software - Aula 3
Gerência de Projetos de Software - Aula 3Gerência de Projetos de Software - Aula 3
Gerência de Projetos de Software - Aula 3
 
Trabalho de diplomação I
Trabalho de diplomação ITrabalho de diplomação I
Trabalho de diplomação I
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL tool
 

Similar a Introdução à Modelagem com UML

Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Jhonefj
 
Analise_OO1a_Introducao.ppt
Analise_OO1a_Introducao.pptAnalise_OO1a_Introducao.ppt
Analise_OO1a_Introducao.pptssuser12105c
 
Fundamentos de Sistemas de Informacao - Aula 27
Fundamentos de Sistemas de Informacao - Aula 27Fundamentos de Sistemas de Informacao - Aula 27
Fundamentos de Sistemas de Informacao - Aula 27Ismar Silveira
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Análise e projeto de sistemas de informação aula1
Análise e projeto de sistemas de informação   aula1Análise e projeto de sistemas de informação   aula1
Análise e projeto de sistemas de informação aula1Gilberto Cysneiros
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosLeandro Rezende
 

Similar a Introdução à Modelagem com UML (20)

Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02
 
Aula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_umlAula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_uml
 
Apostila uml
Apostila umlApostila uml
Apostila uml
 
Analise_OO1a_Introducao.ppt
Analise_OO1a_Introducao.pptAnalise_OO1a_Introducao.ppt
Analise_OO1a_Introducao.ppt
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Apostila uml
Apostila umlApostila uml
Apostila uml
 
Apostila uml
Apostila umlApostila uml
Apostila uml
 
Apostila uml
Apostila umlApostila uml
Apostila uml
 
O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012
 
Fundamentos de Sistemas de Informacao - Aula 27
Fundamentos de Sistemas de Informacao - Aula 27Fundamentos de Sistemas de Informacao - Aula 27
Fundamentos de Sistemas de Informacao - Aula 27
 
Objectory
ObjectoryObjectory
Objectory
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
uml-intro_v02.pdf
uml-intro_v02.pdfuml-intro_v02.pdf
uml-intro_v02.pdf
 
DCI com PHP
DCI com PHPDCI com PHP
DCI com PHP
 
Aula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptxAula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptx
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
3 uml
3 uml3 uml
3 uml
 
Análise e projeto de sistemas de informação aula1
Análise e projeto de sistemas de informação   aula1Análise e projeto de sistemas de informação   aula1
Análise e projeto de sistemas de informação aula1
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a Objetos
 

Más de Álvaro Farias Pinheiro (17)

Data science
Data scienceData science
Data science
 
IA
IAIA
IA
 
Autômatos
AutômatosAutômatos
Autômatos
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
Padrões de Projeto (GoF)
Padrões de Projeto (GoF)Padrões de Projeto (GoF)
Padrões de Projeto (GoF)
 
Linguagem de Modelagem Unificada (UML)
Linguagem de Modelagem Unificada (UML)Linguagem de Modelagem Unificada (UML)
Linguagem de Modelagem Unificada (UML)
 
Introdução a Tecnologias Web
Introdução a Tecnologias WebIntrodução a Tecnologias Web
Introdução a Tecnologias Web
 
Introdução ao HTML
Introdução ao HTMLIntrodução ao HTML
Introdução ao HTML
 
Introdução à Sistemas de Informação
Introdução à Sistemas de InformaçãoIntrodução à Sistemas de Informação
Introdução à Sistemas de Informação
 
Eficiência Energética
Eficiência EnergéticaEficiência Energética
Eficiência Energética
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Medida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoMedida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de Função
 
Fundamentos de Banco de Dados Relacionais
Fundamentos de Banco de Dados RelacionaisFundamentos de Banco de Dados Relacionais
Fundamentos de Banco de Dados Relacionais
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Redes Sociais
Redes SociaisRedes Sociais
Redes Sociais
 

Introdução à Modelagem com UML

  • 1. https://www.facebook.com/alvarofpinheiroaulas/ br.linkedin.com/in/alvarofpinheiro/ IInnttrroodduuççããoo aa MMooddeellaaggeemm ccoomm UUMMLL http://www.alvarofpinheiro.eti.br
  • 2. O que é a UML? IInnttrroodduuççããoo aa UUMMLL A Unified Modeling Language (UML) é a sucessora de uma onda de métodos para análise e projeto orientados a objetos que surgiram no fim da década de 80. Ela unificou os métodos proposto por Booch, Rumbaugh (OMT) e Jacobson. Atualmente a UML é um padrão mantido pela OMG, o que dá a ela uma um status de ser considerada a linguagem padrão para modelagem de sistemas. A UML é a linguagem padrão para visualizar, especificar, construir e documentar artefatos de um sistema de software e combina diversos aspectos como: • Modelagem de Dados • Modelagem de Negócios • Modelagem de Objetos • Modelagem de Componentes É importante enfatizar que UML é uma linguagem de modelagem, ou seja, é uma forma de especificar um sistema de maneira visual. Ela é a linguagem padrão de modelagem adotada pelo Rational Unified Process (RUP) e seu grande sucesso se deu em conjunto com a popularização do RUP. Por isso, é muito comum que as pessoas associem UML ao RUP. É importante distinguir muito bem, visto que as duas representam conceitos complementamente diferentes. O RUP é um processo, ou seja, um conjunto de atividades, com seus respectivos artefatos e pápeis, para se desenvolver produtos de software. Já a UML é uma linguagem para se modelar o comportamento e estrutura de um sistema. 14/12/14 http://www.alvarofpinheiro.eti.br 2
  • 3. Como surgiu a UML? IInnttrroodduuççããoo aa UUMMLL Durante os anos 80, várias linguagens de programação se popularizaram, entre elas uma que se destacou foi a Smalltalk, mas outras linguagens também participaram deste movimento, tais como, Objective C, C++ e Eiffel. Seguindo esta onda, os métodos orientados a objetos começaram a ser publicados. Em 1988 Shlaer et al [Shlaer-88] ; em 1990, Wirfs-Brock [Wirfs-Brock-90]; em 1991, Coad e Yourdon [Coad-91]; ainda em 1991, Booch [Booch-91] ; e Rumbaugh [Rumbaugh-91]. A primeira tentativa de sucesso de se criar uma linguagem unificada aconteceu quando Rumbaugh se juntou a Booch na Rational Software Corporation em 1994. Eles começaram a combinar conceitos de OMT com os métodos de Booch, produzindo um método unificadi. Neste mesmo momento Jacobson também se juntou a Rational e começou a trabalhar com Booch e Rumbaugh. O trabalho conjunto resultou no que foi chamado de Unified Modeling Language (UML). Este foi um momento único, quando os autores dos três principais métodos trabalharam juntos para unificar suas propostas. Em 1996, a Object Management Group (OMG) fez uma chamada por propostas par um padrão para modelagem orientada a objetos. Ao autores da UML começaram a trabalhar com metodologistas e desenvolvedores de outras empresas para produzir uma proposta atrativa para os membros da OMG, assim como para as empresas de ferramentas, metodologistas e desenvolvedores em geral. No final de 1997, se tornou um padrão da OMG e até hoje vem sendo mantida e evoluída, sendo hoje bem aceita por toda a comunidade de desenvolvimento de software. [Shlaer-88] Sally Shlaer, Stephen J. Mellor. Object-Oriented Systems Analysis: Modeling the World in Data. Yourdon Press, Englewood Cliffs, N.J., 1988 [Wirfs-Brock-90] Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener. Designing Object- Oriented Software. Prentice Hall, Englewood Cliffs, N.J., 1990. [Coad-91] Peter Coad, Edward Yourdon. Object-Oriented Analysis, 2nd ed. Yourdon Press, Englewood Cliffs, N.J., 1991. [Booch-91] Grady Booch. Object-Oriented Analysis and Design with Applications, 1st ed. Benjamin/ Cummings, Redwood City, Calif., 1991. [Rumbaugh-91] James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William Lorensen. Object-Oriented Modeling and Design. Prentice Hall, Englewood Cliffs, N.J., 1991. 14/12/14 http://www.alvarofpinheiro.eti.br 3
  • 4. IInnttrroodduuççããoo aa UUMMLL Como foi a evolução da UML? Nov ‘97 UML aprovada pelo OMG 14/12/14 http://www.alvarofpinheiro.eti.br 4
  • 5. IInnttrroodduuççããoo aa UUMMLL Quais os objetivos da UML? UML tem como propósito ser uma linguagem para: Visualizar sistemas orientados a objetos Especificar sistemas orientados a objetos Construir sistemas orientados a objetos Documentar sistemas orientados a objetos 14/12/14 http://www.alvarofpinheiro.eti.br 5
  • 6. O que é OO? IInnttrroodduuççããoo aa UUMMLL O paradigma OO utiliza uma perspectiva mais humana de observação da realidade, incluindo objetos, classificação e compreensão hierárquica. Entre os principais benefícios podemos citar: • Único paradigma (Tudo é baseado em classes) • Facilita o reuso de código e arquitetura • Reflete o mundo real • Estabilidade • “Pequenas mudanças nos requisitos exigem poucas mudanças no código” “Orientação à objetos é uma estratégia para organizar sistemas como coleções de objetos que interagem entre si e combinam dados e comportamento” 14/12/14 http://www.alvarofpinheiro.eti.br 6
  • 7. IInnttrroodduuççããoo aa UUMMLL Quais os princípios básicos da OO? Orientação à Objetos Abstração Modularidade Encapsulamento Hierarquia 14/12/14 http://www.alvarofpinheiro.eti.br 7
  • 8. O que é um Objeto? IInnttrroodduuççããoo aa UUMMLL “Um objeto é um conceito, abstração ou coisa com limites e significado para uma aplicação” Um objeto deve ter: Estado Comportamento Identidade única 14/12/14 http://www.alvarofpinheiro.eti.br 8
  • 9. IInnttrroodduuççããoo aa UUMMLL O que é um Sistema OO? Um sistema orientado a objetos pode ser visto como um conjunto de objetos correlacionados, com interfaces e comportamento bem definidos, que colaboram-se entre si pra atender ao objetivo do sistema. 14/12/14 http://www.alvarofpinheiro.eti.br 9
  • 10. IInnttrroodduuççããoo aa UUMMLL Quais os conceitos básicos da OO? Objeto Classe Atributo Operação Interface (Polimorfismo) Herança Pacote Relacionamentos 14/12/14 http://www.alvarofpinheiro.eti.br 10
  • 11. IInnttrroodduuççããoo aa UUMMLL Quais são os diagramas da UML? DDiiaaggrraammaa ddee ccllaasssseess DDiiaaggrraammaa ddee oobbjjeettooss DDiiaaggrraammaa ddee ppaaccootteess DDiiaaggrraammaa ddee eessttrruuttuurraa ccoommppoossttaa DDiiaaggrraammaa ddee ccaassooss ddee uussoo DDiiaaggrraammaa ddee ccoommppoonneenntteess DDiiaaggrraammaa ddee ddiissttrriibbuuiiççããoo DDiiaaggrraammaa ddee mmááqquuiinnaa ddee eessttaaddooss DDiiaaggrraammaa ddee aattiivviiddaaddeess DDiiaaggrraammaa ddee iinntteerraaççããoo DDiiaaggrraammaa ddee sseeqqüüêênncciiaa DDiiaaggrraammaa ddee ccoollaabboorraaççããoo DDiiaaggrraammaa ddee TTeemmppoo DDiiaaggrraammaa GGeerraall ddee IInntteerraaççããoo 14/12/14 http://www.alvarofpinheiro.eti.br 11
  • 12. IInnttrroodduuççããoo aa UUMMLL O que é diagrama de classe? Um diagrama de classes mostra um conjunto de classes, interfaces e relacionamentos entre estes. Este é o diagrama mais comum encontrado na modelagem de sistemas orientados a objetos e dá uma visão estática da estrutura do sistema. 14/12/14 http://www.alvarofpinheiro.eti.br 12
  • 13. O que são classes? IInnttrroodduuççããoo aa UUMMLL Classes especificam a estrutura e o comportamento dos objetos Classes são como "moldes" para a criação de objetos Classes são compostas por: Nome Atributos (Estrutura) Métodos (Comportamento) 14/12/14 http://www.alvarofpinheiro.eti.br 13
  • 14. Um exemplo de classe Classe IInnttrroodduuççããoo aa UUMMLL Propriedades Curso Nome Localização Duração Créditos Comportamento Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala 14/12/14 http://www.alvarofpinheiro.eti.br 14
  • 15. IInnttrroodduuççããoo aa UUMMLL Como se representa uma classe? Como se pode perceber a representação em UML abstrai elementos sintáticos específicos de uma linguagem de programação. Um classe em UML pode ser mapeada para classes em qualquer linguagem de programação orientada a objetos. Professor 14/12/14 http://www.alvarofpinheiro.eti.br 15
  • 16. O que são atributos? IInnttrroodduuççããoo aa UUMMLL Um atributo é uma propriedade de uma classe, identificada por um nome, que descreve as informações ou propriedades (valor, tipo, visibilidade, etc.) que as instancias desta classe (objetos) devem ter. Uma classe pode ter um número qualquer de atributos (inclusive zero). •Nome = Análise I •Localização = MAC •Duração = 30h •Créditos = 2 •Nome = Análise II •Localização = MAC •Duração = 15h •Créditos = 4 •Nome = SI •Localização = MAC •Duração = 30h •Créditos = 2 Curso •Nome •Localização •Duração •Créditos •Adicionar um aluno •Remover um aluno •Atribuir professor •Atribuir sala 14/12/14 http://www.alvarofpinheiro.eti.br 16
  • 17. Atributos na UML são? Professor titulo nome IInnttrroodduuççããoo aa UUMMLL Classe Pessoa idade: int nome: String Classe Nome do Atributo Tipo do Atributo Nome do Atributo 14/12/14 http://www.alvarofpinheiro.eti.br 17
  • 18. IInnttrroodduuççããoo aa UUMMLL Exemplo em CSharp ou Java ccllaassss PPeessssooaa {{ iinntt iiddaaddee;; ssttrriinngg nnoommee;; }} ...... PPeessssooaa pp11 == nneeww PPeessssooaa(());; PPeessssooaa pp22 == nneeww PPeessssooaa(());; pp11..nnoommee == ““MMaarríílliiaa””;; PP22..nnoommee == ““GGaabbrriieell””;; 14/12/14 http://www.alvarofpinheiro.eti.br 18
  • 19. O que são operações? IInnttrroodduuççããoo aa UUMMLL Uma operação é a implementação de um serviço que pode ser solicitado a qualquer objeto da classe para afetar o seu comportamento. Em outras palavras, operações são ações que podem ser executadas sobre instâncias das classes. Uma classe pode ter qualquer número de operações (inclusive zero). • temperatura = 23 SensorDeTemperatura • alarme = 50 •temperatura •alarme •reiniciar •definirAlarme •lerTemperatura • temperatura = 50 • alarme = 100 • temperatura = 20 • alarme = 5 14/12/14 http://www.alvarofpinheiro.eti.br 19
  • 20. IInnttrroodduuççããoo aa UUMMLL Exemplo de operação em UML SensorTemperatura reiniciar() definirAlarme() lerTemperatura() Especificação das operações SensorTemperatura reiniciar() definirAlarme(temper: int) lerTemperatura(): int 14/12/14 http://www.alvarofpinheiro.eti.br 20
  • 21. IInnttrroodduuççããoo aa UUMMLL Exemplo de operações em CSharp ou Java ppuubblliicc ccllaassss sseennssoorrDDeeTTeemmppeerraattuurraa {{ iinntt tteemmppeerraattuurraa;; iinntt aallaarrmmee;; ppuubblliicc vvooiidd rreeiinniicciiaarr(()){{ tteemmppeerraattuurraa == 00;; }} ppuubblliicc iinntt lleerrTTeemmppeerraattuurraa(()){{ rreettuurrnn tteemmppeerraattuurraa;; }} ppuubblliicc vvooiidd ddeeffiinniirrAAllaarrmmee(( iinntt tteemmppeerr)){{ aallaarrmmee == tteemmppeerr;; }} }} SensorTemperatura reiniciar() definirAlarme(temper: int) lerTemperatura(): int 14/12/14 http://www.alvarofpinheiro.eti.br 21
  • 22. IInnttrroodduuççããoo aa UUMMLL Resumindo, um classe é formada por? Nome da Classe DVD Atributos Operações Hora Status estrutura comportamento Voltar() Pausar() Adiantar() Parar() Tocar() 14/12/14 http://www.alvarofpinheiro.eti.br 22
  • 23. O que é polimorfismo? IInnttrroodduuççããoo aa UUMMLL O polimorfismo é a habilidade de esconder diferentes implementações através de uma única interface. Interfaces formalizam polimorfismo, aumentam o nível de reusabilidade, viabilizam o uso de componentes e reduzem o esforço de evolução da aplicação. Uma interface pode ser vista como uma coleção de operações que são usadas para especificar os serviços de uma classe. Fabricante A Fabricante B Fabricante C 14/12/14 http://www.alvarofpinheiro.eti.br 23
  • 24. IInnttrroodduuççããoo aa UUMMLL Segue um exemplo de Interface ppaauussaarr(()) ppaarraarr(()) vvoollttaarr(()) aavvaannccaarr(()) ttooccaarr(()) aalltteerraarrHHoorraa(()) ccaarrrreeggaarrDDiissccoo(()) 14/12/14 http://www.alvarofpinheiro.eti.br 24
  • 25. Mais sobre Interface IInnttrroodduuççããoo aa UUMMLL Interfaces definem um tipo especificando apenas a assinatura de seus métodos Interfaces não possuem atributos e seus métodos não têm corpo Classes implementam interfaces provêem implementação para os métodos especificados em uma interface 14/12/14 http://www.alvarofpinheiro.eti.br 25
  • 26. IInnttrroodduuççããoo aa UUMMLL Segue a forma icônica da Interface na UML Forma Relacionamentos de realização Tubo Piramide Cubo 14/12/14 http://www.alvarofpinheiro.eti.br 26
  • 27. IInnttrroodduuççããoo aa UUMMLL Segue forma canônica de Interface na UML Cubo Tubo Piramide <<interface>> Forma Desenhar Mover Rotacionar Relacionamentos de realização 14/12/14 http://www.alvarofpinheiro.eti.br 27
  • 28. IInnttrroodduuççããoo aa UUMMLL Exemplo de Interface em CSharp iinntteerrffaaccee DDVVDD {{ vvooiidd vvoollttaarr(());; vvooiidd aavvaannccaarr(());; vvooiidd ppaarraarr(());; vvooiidd ttooccaarr(());; }} ccllaassss DDVVDDSSoonnyy:: DDVVDD{{ vvooiidd vvoollttaarr(()){{}} vvooiidd aavvaannccaarr(()){{}} vvooiidd ppaarraarr(()){{}} vvooiidd ttooccaarr(()){{}} }} ccllaassss DDVVDDGGrraaddiieennttee:: DDVVDD{{ vvooiidd vvoollttaarr(()){{}} vvooiidd aavvaannccaarr(()){{}} vvooiidd ppaarraarr(()){{}} vvooiidd ttooccaarr(()){{}} }} 14/12/14 http://www.alvarofpinheiro.eti.br 28
  • 29. IInnttrroodduuççããoo aa UUMMLL Exemplo de Interface em Java iinntteerrffaaccee DDVVDD {{ vvooiidd vvoollttaarr(());; vvooiidd aavvaannccaarr(());; vvooiidd ppaarraarr(());; vvooiidd ttooccaarr(());; }} ccllaassss DDVVDDSSoonnyy iimmpplleemmeennttss DDVVDD{{ vvooiidd vvoollttaarr(()){{}} vvooiidd aavvaannccaarr(()){{}} vvooiidd ppaarraarr(()){{}} vvooiidd ttooccaarr(()){{}} }} ccllaassss DDVVDDGGrraaddiieennttee iimmpplleemmeennttss DDVVDD{{ vvooiidd vvoollttaarr(()){{}} vvooiidd aavvaannccaarr(()){{}} vvooiidd ppaarraarr(()){{}} vvooiidd ttooccaarr(()){{}} }} 14/12/14 http://www.alvarofpinheiro.eti.br 29
  • 30. IInnttrroodduuççããoo aa UUMMLL O que são classes abstratas? Classes abstratas são úteis para representar a parte da semântica que é comum a mais de uma classe. Evitando assim a duplicação de informações e facilitando o reuso e extensibilidade do sitema. Classe abstrata é aquela que não possui instância e, em geral, possui pelo menos um método abstrato (Métodos abstratos não têm corpo, isso obriga as subclasses a fornecer uma implementação para eles). Poligono Quadrilatero São tipos de polígono Triangulo •Mover(x,y) •Area() •numeroLados() Pentagono 14/12/14 http://www.alvarofpinheiro.eti.br 30
  • 31. IInnttrroodduuççããoo aa UUMMLL Exemplo de classe abstrata em CSharp e Java aabbssttrraacctt ccllaassss PPoolliiggoonnoo {{ vvooiidd mmoovveerr((iinntt xx,,iinntt yy)) {{......}} ddoouubbllee aarreeaa(()){{......}} iinntt nnuummeerrooLLaaddooss(());; }} ccllaassss QQuuaaddrriillaatteerroo:: PPoolliiggoonnoo{{ iinntt nnuummeerrooLLaaddooss(()){{rreettuurrnn 44;;}} }} aabbssttrraacctt ccllaassss PPoolliiggoonnoo {{ vvooiidd mmoovveerr((iinntt xx,,iinntt yy)) {{......}} ddoouubbllee aarreeaa(()){{......}} iinntt nnuummeerrooLLaaddooss(());; }} ccllaassss QQuuaaddrriillaatteerroo eexxtteennddss PPoolliiggoonnoo{{ iinntt nnuummeerrooLLaaddooss(()){{rreettuurrnn 44;;}} }} 14/12/14 http://www.alvarofpinheiro.eti.br 31
  • 32. IInnttrroodduuççããoo aa UUMMLL Que tipos de classes existem? Interfaces • Assinaturas dos métodos Classes • Atributos • Métodos Classes Abstratas • Atributos • Métodos • Assinatura de Métodos 14/12/14 http://www.alvarofpinheiro.eti.br 32
  • 33. IInnttrroodduuççããoo aa UUMMLL Porquê então, classes abstratas e Interfaces? Interfaces permitem a herança de tipo Classes comuns e abstratas permitem a herança de código (comportamento e estrutura) e tipo Classes descrevem propriedades fundamentais de um objeto Interfaces descrevem papéis desempenhados por um objeto em determinadas situações Interfaces são úteis para implementar herança múltipla 14/12/14 http://www.alvarofpinheiro.eti.br 33
  • 34. IInnttrroodduuççããoo aa UUMMLL Para que serve um Pacote em UML? Um pacote é um mecanismo de propósito geral para organizar elementos em grupos. Eles são conceitos úteis, pois: • Facilitam entendimento do sistema • Favorecem modularidade e reuso em larga escala • São essenciais para estruturar sistemas complexos Os pacotes podem ser usados para organizar outros tipos de elementos de UML, tais como Casos de Uso, Componentes, etc. nome do pacote 14/12/14 http://www.alvarofpinheiro.eti.br 34
  • 35. IInnttrroodduuççããoo aa UUMMLL Qual o conceito de Coesão e Acoplamento? Dois conceitos importantes de se entender na hora de se decidir que critério será usado para organizar as classes em pacotes são: Coesão e Acoplamento. Acoplamento é a medida de quão conectadas dois elementos são, ou seja, diz-se que um elemento está acoplada a um segundo se este tiver algum tipo de relacionamento ou dependência com o segunda. Coesão é a medida de quão auto contido um elemento é, ou seja, o quão independente de outros elementos ele é. Para que um sistema seja bem projetado e, consequentemente, tenha uma boa manutenabilidade ele deve ter baixo acoplamento e alta coesão. 14/12/14 http://www.alvarofpinheiro.eti.br 35
  • 36. IInnttrroodduuççããoo aa UUMMLL Quais são os tipos de relacionamentos no Diagrama de Classe? Associação Agregação Composição Dependência Generalização Realização 14/12/14 http://www.alvarofpinheiro.eti.br 36
  • 37. O que é Associação? IInnttrroodduuççããoo aa UUMMLL Uma associação é um relacionamento estrutural que especifica que objetos de tipo são conectados a outro tipo. Em geral, as associações conectam duas classes e são chamadas associações binárias. Embora não seja muito comum é possível ter associações que conectam mais de duas classes. Estas são chamadas de associações n-nárias. Uma associação possui os seguintes elementos: •Nome – Deve descrever a natureza da associação. •Pápeis – Quando uma classe participa de uma associação, ela tem um papel específico neste relacionamento. •Multiplicidade – Uma associação representa um relacionamento estrutural entre duas entidades. Na modelagem de sistemas é importante definir-se quantos objetos estarão conectados a uma instância de uma associação. •Navegabilidade – Define em que direção é possível navegar para recuperar a instância do outro objeto associado. Nome da associação Professor Universidade Trabalha para Associação Professor Universidade Classe Papéis Empregado Empregador 14/12/14 http://www.alvarofpinheiro.eti.br 37
  • 38. O que é Multiplicidade? IInnttrroodduuççããoo aa UUMMLL Multiplicidade define quantos objetos participam do relacionamento O número de instâncias de uma classe relacionada a uma instância de outra classe Especificado em cada uma das pontas da associação Não especificada  Nada (Somente a ligação entre as classes) Exatamente um  1 Zero ou mais  0..* Um ou mais  1..* Zero ou um  0..1 Intervalo determinado  0..4 Valores múltiplos  2,4..6 Multiplicidade Estudante Disciplina 1 1..* 14/12/14 http://www.alvarofpinheiro.eti.br 38
  • 39. O que é Navegação? IInnttrroodduuççããoo aa UUMMLL Especifica a direção da associação Associações são bidirecionais por default Estudante Disciplina 1 1..* Navegação 14/12/14 http://www.alvarofpinheiro.eti.br 39
  • 40. O que é Agregação? IInnttrroodduuççããoo aa UUMMLL Uma associação normal entre duas classes representa um relacionamento estrutural entre pares, que significa que ambas classes estão conceitualmente no mesmo nível, nehuma delas é mais importante que a outra. Algumas vezes, é necessário modelar relacionamentos do tipo “todo-parte”, em que uma classe representa um grande conceito, que consiste de pequenas partes. Este tipo de relacionamento é chamado de agregação, que representa “tem-um”, que significa que um objeto “todo” tem objetos “parte”. Agregação é um tipo especial de associação, que possui a característica de “todo-parte”. Todo Agregação Parte Estudante Disciplina 14/12/14 http://www.alvarofpinheiro.eti.br 40
  • 41. IInnttrroodduuççããoo aa UUMMLL O que é uma Composição? Composição é uma variação de uma agregação, que adiciona uma semântica a mais. Na composição o relacionamento “todo parte” possui uma maior força de posse e há uma coincidência entre o ciclo de vida do todo e da parte. As partes devem ser criadas após o todo, e uma vez criadas, elas vivem e morrem com o todo. As partes podem ser explicitamente removidas antes da morte do todo, mas elas não podem sobreviver após a morte do todo. Além disto, um objeto parte não pode ser compartilhado entre mais de um todo. Em uma composição o todo é responsável pela disposição das partes, o que significa dizer que ele deve gerenciar a criação e destruição das partes. Todo Composição Parte Window Painel 14/12/14 http://www.alvarofpinheiro.eti.br 41
  • 42. IInnttrroodduuççããoo aa UUMMLL O que é uma classe de associação? Em uma associação entre duas classes é possível ter propriedades. No exemplo do relacionamento empregado/empregador entre as classes Empresa e Pessoa tem propriedades que se aplicam exatamente ao relacionamento, como descrição do emprego, salário, data de admissão, estas propriedades representam o conceito de Emprego. 14/12/14 http://www.alvarofpinheiro.eti.br 42
  • 43. IInnttrroodduuççããoo aa UUMMLL O que são Associações Qualificadas? Uma associação qualificada em UML é equivalente à conceitos de programação tais como arrays associativos, Maps e Dicionários. A figura acima Mostra uma forma de representar a associação entre Pedido e Linha de Pedido através do uso de qualificador. No exemplo acima, o qualificador diz que em uma conexão com um pedido, pode haver uma linha de pedido para cada instância de produto. A multiplicidade 0..1, indica que há no máximo uma linha de pedido associada a um pedido, dado um produto como argumento. ccllaassss OOrrddeerr {{ pprriivvaattee MMaapp __lliinneeIItteemmss;; ppuubblliicc OOrrddeerrLLiinnee ggeettLLiinneeIItteemm ((PPrroodduucctt aaPPrroodduucctt)){{}} ppuubblliicc vvooiidd aaddddLLiinneeIItteemm ((NNuummbbeerr aammoouunntt,, PPrroodduucctt ffoorrPPrroodduucctt)){{}} }} 14/12/14 http://www.alvarofpinheiro.eti.br 43
  • 44. IInnttrroodduuççããoo aa UUMMLL O que é uma Dependência? Uma dependência é um relacionamento de “uso” que tenta apontar que mudanças em uma classes pode afetar outra classe que a usa, mas não necessariamente o inverso. Uma dependência entre classes pode ser geradas pelos seguintes tipos de uso: • Parâmetros de entrada de métodos • Tipos de retorno de métodos • Utilização dentro do código de métodos • Exceções lançadas 14/12/14 http://www.alvarofpinheiro.eti.br 44
  • 45. IInnttrroodduuççããoo aa UUMMLL Exemplo de Dependência em CSharp e Java ccllaassss LLoogg {{ ...... vvooiidd ggrraavvaarr(()){{ AArrqquuiivvoo aa ==......;; aa..eessccrreevveerr((......));; }} }} ccllaassss AArrqquuiivvoo {{ ...... vvooiidd ssaallvvaarr((SSttrreeaamm ddaaddooss)){{ ...... }} }} OBS: Pode existir relacionamento de dependência entre vários elementos de UML Classe Pacote Cliente Fornecedor PacoteFornecedor PacoteCliente 14/12/14 http://www.alvarofpinheiro.eti.br 45
  • 46. IInnttrroodduuççããoo aa UUMMLL O que é Generalização e Especialização? É um relacionamento entre um elemento genérico (chamado superclasse ou pai) e um mais específico (chamado subclasse ou filho). Generalização também é chamado de Herança ou relacionamento “é-um-tipo-de”. Um filho pode ser usado em qualquer lugar onde seja requerido o pai. Além disso, o filho herda os atributos, operações e relacionamentos do pai. O filho pode ter atributos ou operações a mais, ou pode até sobrescrever uma operação do pai. O objeto da classe filha “herda” todas as características da classe pai 14/12/14 http://www.alvarofpinheiro.eti.br 46
  • 47. Então, o que Herança? Animal IInnttrroodduuççããoo aa UUMMLL Mamífero Ave Homem Leão Class Animal{ ... } Class Mamifero extends Animal{ ... } Class Ave extends Animal{ ... } Class Homem extends Mamifero{ ... } 14/12/14 http://www.alvarofpinheiro.eti.br 47
  • 48. IInnttrroodduuççããoo aa UUMMLL A Herança pode ser de que tipo? Simples quando: uma classe herda de uma outra cor largura da linha desenhar() selecionar() Círculo raio centro desenhar() Retângulo vertices desenhar() diagonal() Figura Superclasse (pai) Subclasses Relacionamento de Generalização 14/12/14 http://www.alvarofpinheiro.eti.br 48
  • 49. IInnttrroodduuççããoo aa UUMMLL A Herança pode ser de que tipo? Múltipla quando: classes herdando de mais de uma classe Mamífero AnimalVoador Herança múltipla Cachorro Gato Morcego Passarinho Gaviao Apesar de ser um mecanismos interessante, poucas linguagens de programação dão suporte a isso. Além disso, existem algumas dificuldades semânticas relacionadas ao assunto. As perguntas abaixo demonstram essa questão. •O que acontece quando as superclasses possuem o mesmo método (métodos com o mesmo nome)? •O que acontece quando se tenta executar um método que não está definido na subclasse? Em que hierarquia de superclasses deve-se procurar o método? 14/12/14 http://www.alvarofpinheiro.eti.br 49
  • 50. IInnttrroodduuççããoo aa UUMMLL O que é uma Realização? Uma realização é um relacionamento semântico entre uma interface e uma classe (veremos mais adiante que pode ser entre interfaces e outros elementos). Este relacionamento especifica um tipo de contrato que a entidade que realiza tem que seguir. Como visto anteriormente uma interface define um conjunto de operações que são usados para especificar os serviços implementados por uma ou mais classes. Neste caso é dito que estas classes realizam a interface, ou sejam, seguem o contrato estabelecido por ela.  Indica que um elemento serve como contrato que o outro deve seguir  Relacionamento semântico entre uma interface e uma classe  Este relacionamento especifica um tipo de contrato que a entidade que realiza tem que seguir.  Similar à Generalização  Viabiliza a herança de tipo, ou seja, o relacionamento “é um tipo de” 14/12/14 http://www.alvarofpinheiro.eti.br 50
  • 51. IInnttrroodduuççããoo aa UUMMLL Como representar uma Realização? Classe Subsistema Realização Caso de uso Componente Realização de Caso de uso Pode ser usado em diferentes tipos de elementos 14/12/14 http://www.alvarofpinheiro.eti.br 51
  • 52. O que é Visibilidade? IInnttrroodduuççããoo aa UUMMLL Existem quatro tipos básicos de modificadores de acesso Public – São visíveis para quaisquer classes invocar/acessar Private – São visíveis apenas na própria classe Protected – São visíveis apenas para subclasses ou classes do mesmo pacote Friendly – São visíveis apenas para classes do mesmo pacote São aplicáveis à (classe, método, atributo e relacionamentos) Dependendo escopo podem ter significado diferente Mecanismo que facilita o encapsulamento 14/12/14 http://www.alvarofpinheiro.eti.br 52
  • 53. O que é uma restrição? IInnttrroodduuççããoo aa UUMMLL Restrições podem ser usadas em diferentes elementos de UML. Usadas para criação de novas regras sobre elementos do modelo ou modificação de regras existentes Funcionário Professor Departamento 1..* 1 {subset} Coordenador 3 1 14/12/14 http://www.alvarofpinheiro.eti.br 53
  • 54. IInnttrroodduuççããoo aa UUMMLL Resumo de Diagrama de Classe 14/12/14 http://www.alvarofpinheiro.eti.br 54
  • 55. IInnttrroodduuççããoo aa UUMMLL Algumas dicas úteis sobre Classe É focado na comunicação de um aspecto da visão estática do projeto do sistema Contém somente elementos que são essenciais para o entendimento do aspecto que se deseja mostrar. Provê detalhes consistentes com o nível de detalhes apropriado para o bom entendimento do mesmo. Também não é tão minimalista ao ponto de não prover informações suficientes para o leitor compreender a semântica do mesmo. 14/12/14 http://www.alvarofpinheiro.eti.br 55
  • 56. IInnttrroodduuççããoo aa UUMMLL Mais dicas sobre Classes  Quando estiver modelando lembre-se que um diagrama de classes é somente um representação gráfica da visão estática do projeto do sistema. Um único diagrama de classes não será capaz de capturar tudo sobre o projeto do sistema. Cada diagrama de classes representará somente um aspecto do visão estática do sistema, o conjunto de diagramas é que será capaz de representar a visão estática completa.  Um diagrama de classes bem estruturado possui as seguintes características: • É focado na comunicação de um aspecto da visão estática do projeto do sistema. • Contém somente elementos que são essenciais para o entendimento do aspecto que se deseja mostrar. • Provê detalhes consistentes com o nível de detalhes apropriado para o bom entendimento do mesmo. • Também não é tão minimalista ao ponto de não prover informações suficientes para o leitor compreender a semântica do mesmo.  Quando estiver modelando um diagrama: • Dê-lhe um nome que comunica o seu propósito • Organize os elementos de forma a evitar o sobreposição de linhas. • Mantenha os elementos semanticamente relacionados juntos; • Use Anotações (Notes) e cores para chamar a atenção sobre importante elementos do diagrama. • Não tente mostrar todos os tipos de relacionamentos entre as classes (Exemplo, se já há um relacionamento do tipo Agregação, não é necessário colocar uma dependência). 14/12/14 http://www.alvarofpinheiro.eti.br 56
  • 57. IInnttrroodduuççããoo aa UUMMLL O que são Diagramas de Objetos? O diagrama de objetos é bastante similar ao de classes, no entanto os elementos que o compõe são objetos ao invés de classes. Na verdade o diagrama de objetos representa um snapshot (fotografia) do sistema em um determinado instante. O diagrama de objetos é como se fosse o perfil do sistema em um certo momento de sua execução. Eles são úteis para mostrar o estado do sistema em um dado instante que seja importante e demonstrar o estado de ambientes complexos, tais como sistemas de tempo real ou sistemas de controle. Em geral não é muito usado para a modelagem de sistemas convencionais. 14/12/14 http://www.alvarofpinheiro.eti.br 57
  • 58. IInnttrroodduuççããoo aa UUMMLL Qual a relação entre Classe e Objeto? Classe é uma definição abstrata de um objeto Ela define a estrutura e o comportamento dos objetos Serve como template para criação de objetos Objetos são agrupados em classes Curso •Nome •Localização •Duração •Créditos •Adicionar um aluno •Remover um aluno •Atribuir professor •Atribuir sala •Nome = Análise I •Localização = MAC •Duração = 30h •Créditos = 2 •Nome = Análise II •Localização = MAC •Duração = 15h •Créditos = 4 •Nome = SI •Localização = MAC •Duração = 30h •Créditos = 2 14/12/14 http://www.alvarofpinheiro.eti.br 58
  • 59. IInnttrroodduuççããoo aa UUMMLL Como representar um objeto em UML? : Professor p : Professor Apenas o nome p da classe Apenas o nome do objeto Nome da classe e do objeto : Professor : Professor Múltiplos objetos p: Processo [esperando] objeto com o estado explícito : Professor titulo = “Mestre” Nome = “Pascoal” Objeto com valores de atributos 14/12/14 http://www.alvarofpinheiro.eti.br 59
  • 60. IInnttrroodduuççããoo aa UUMMLL Exemplo de criação de objetos em CSharp e Java ccllaassss PPeessssooaa {{ ...... }} ...... PPeessssooaa pp11 == nneeww PPeessssooaa(());; PPeessssooaa pp22 == nneeww PPeessssooaa(());; pp11..nnoommee == ““PPaassccooaall””;; pp22..nnoommee == ““MMaarriiaa””;; 14/12/14 http://www.alvarofpinheiro.eti.br 60
  • 61. IInnttrroodduuççããoo aa UUMMLL Diagrama de Classe vrs Diagrama de Objeto 14/12/14 http://www.alvarofpinheiro.eti.br 61
  • 62. IInnttrroodduuççããoo aa UUMMLL O que é um Diagrama de Estrutura Composta? Permite desdobrar um classe em partes menores Visualizar a estrutura interna de classes mais complexas Útil para mostrar agrupamentos em tempo de execução Mostra em mais detalhes as dependências de uma classe TV Viewer controls[0..* ] generators display Parte TV Cont rol API Conector Delegação Porta Interface requerida Interface Ofericida 14/12/14 http://www.alvarofpinheiro.eti.br 62
  • 63. IInnttrroodduuççããoo aa UUMMLL O que é Diagrama de Componente? O diagrama de componente descreve os componentes de software e suas dependências, representando a estrutura dos elementos físicos do sistema. Assim como os elementos lógicos de um sistema (como classes, por exemplo) existem no mundo conceitual, elementos físicos existem no mundo real dos bits (arquivos binários, executáveis e de textos, por exemplo). Em UML, todos estes elementos são modelados como componentes. As interfaces de UML são a ligação entre os elementos físicos e os lógicos, pois os componentes (mundo físico) realizam um conjunto de interfaces (mundo conceitual) . Componentes são partes não trivial, quase independente, substituível de um sistema, que provê a realização de (uma/um conjunto de) interface(s) Exemplos: • um código fonte • Uma biblioteca • um componente executável • Tabela, arquivo ou documentos Em UML 1.4 Em UML 2.0 14/12/14 http://www.alvarofpinheiro.eti.br 63
  • 64. IInnttrroodduuççããoo aa UUMMLL O que é Diagrama de Implantação? • Relacionado à visão lógica da arquitetura você pode usar diagramas como de classes, colaboração, pacotes, sequência, etc. Mas em relação à visão física existem o seguintes diagramas: componentes, que mostram os elementos físicos, como arquivos, executáveis, tabelas e artefatos; Implantação, que mostra os nós físicos em termos de equipamentos. • Mostra a relação física entre os componentes de software e hardware • Podem envolver somente as relações entre componentes de hardware ou entre hardware e software • Útil para demonstrar a Visão Física da arquitetura Nós – Algum tipo de unidade computacional, em geral elementos de hardware Nós contém artefatos (arquivos, executáveis, etc.) Generalizando, o Nó pode ser considerado qualquer elemento que seja capaz de hospedar software (ex. Sistema Operacional) Conexões – Conexões entre os nós que representa um modo de comunicação qualquer (ou em termos físicos ou em termos de protocolo) 14/12/14 http://www.alvarofpinheiro.eti.br 64
  • 65. IInnttrroodduuççããoo aa UUMMLL O que é Diagrama de Interação? Os diagramas de interação modelam interações entre os elementos do sistema e são usados para modelar aspectos sobre a dinâmica do sistema. Em geral a interação é iniciada por um ator e envolve instâncias (objetos) das classes. Os diagramas de interação capturam a semântica do fluxo de eventos do caso de uso e, por isso, auxiliam a identificar classes, responsabilidades e relacionamentos. A modelagem no diagrama de interação envolve modelar instâncias de classes e as mensagens que são disparadas entre eles, de forma a ilustrar o comportamento em um determinado cenário. Diagramas de interação podem especificar a dinâmica de um conjunto de objetos relacionados ou representar um fluxo particular do caso de uso. Em UML 2.0 existem os seguintes tipos: Diagrama de Seqüência Diagrama de Comunicação (Antigo diagrama de colaboração) Diagrama de Tempo (Timing Diagram) Diagrama Geral de Interações (Interaction Overview Diagram) 14/12/14 http://www.alvarofpinheiro.eti.br 65
  • 66. IInnttrroodduuççããoo aa UUMMLL O que é um Diagrama de Seqüência? Enfatiza na ordem temporal das mensagens, de forma que as interações iniciam-se à esquerda e vão acontecendo em direção à direita. Este diagrama contém basicamente três tipos de elementos • Objetos • Ligações • Mensagens A figura acima mostra o diagrama de seqüência, colocando os objetos que participam da interação no topo do diagrama, ao longo do enixo X. Os objetos que iniciam a interação ficam do lado esquerdo e gradativamente enviam mensagens para os elementos à direita. 14/12/14 http://www.alvarofpinheiro.eti.br 66
  • 67. IInnttrroodduuççããoo aa UUMMLL Qual a representação de um Diagrama de Seqüência? Objeto cliente Objeto fornecedor :Cliente :Fornecedor 1: Realize responsabilidade Mensagem Foco de controle Mensagem reflexiva 1.1: Realize outra responsabilidade Numeração hierárquica para as mensagens 14/12/14 http://www.alvarofpinheiro.eti.br 67
  • 68. IInnttrroodduuççããoo aa UUMMLL Um exemplo de Diagrama de Seqüência 14/12/14 http://www.alvarofpinheiro.eti.br 68
  • 69. IInnttrroodduuççããoo aa UUMMLL Quais os aspectos de um Diagrama de Seqüência? Além dos elementos básicos que podem ser usados no diagramas de seqüência, existem outras características mais avançadas que podem ser usadas nos diagramas de seqüência, são elas: •Criação e Deleção (Controle do ciclo de vida) de objetos •Laços e condições •Mensagens assíncronas Criação Auto-destruição Destruição Forçada 14/12/14 http://www.alvarofpinheiro.eti.br 69
  • 70. IInnttrroodduuççããoo aa UUMMLL Outros aspectos do Diagrama de Seqüência Um problema recorrente do Diagramas de seqüência é que ele não é muito bom para demonstrar situações onde seja requerido laços ou processamento condicional. Semanticamente o diagrama de seqüência mostra o fluxo de interação entre os objetos em um determinado cenário. Situações que requeriam a escolha de mais de uma alternativa de caminho de execução deveriam ser modeladas como diferentes seqüências de execução (em geral, requerendo a criação de diferentes diagramas de seqüência). Uma outra alternativa era incrementar a semântica de tais diagramas através da inclusão de Notas de texto, indicando a necessidade de laços ou de uma escolha. Devido a essa deficiência algumas ferramentas de modelagem incluíam formas proprietárias de representar estes elementos. UML 2.0 incluiu o conceito de Frames de Interação, que permitem a representação de repetições e caminhos alternativos. 14/12/14 http://www.alvarofpinheiro.eti.br 70
  • 71. IInnttrroodduuççããoo aa UUMMLL Quais os operadores do Diagrama de Seqüência? 14/12/14 http://www.alvarofpinheiro.eti.br 71
  • 72. Um exemplo IInnttrroodduuççããoo aa UUMMLL  Este exemplo possui um frame de repetição (loop), que indica que vai repetir o bloco interno para cada line item. O frame de escolha (alt), interno a ele, possui uma escolha, caso o value > $10000 ele executa o dispatch do objeto careful, se não, ele executa o dispatch no objeto regular. Por fim, tem um fragmento opcional, que só executa caso a condição de guarda seja satisfeita.  Segue abaixo um trecho de código equivalente`ao comportamento especificado no diagrama de seqüência.  procedure dispatch  foreach (lineitem)  if (product .value > $10K)  careful .dispatch  else  regular .dispatch  end if  end for  if (needsConfirmation)  messenger .confirm  end procedure 14/12/14 http://www.alvarofpinheiro.eti.br 72
  • 73. IInnttrroodduuççããoo aa UUMMLL Quais são os tipos de Mensagens? No diagrama de seqüência é possível representar mensagens síncronas ou assíncronas. • Mensagens Síncronas - A linha de execução do objeto que originou a mensagem depende da execução do objeto chamado • Mensagens assíncronas - A linha de execução do objeto que originou a mensagem é independente da execução do objeto chamado 14/12/14 http://www.alvarofpinheiro.eti.br 73
  • 74. IInnttrroodduuççããoo aa UUMMLL O que é um Diagrama de Comunicação? É um tipo de diagrama de interação que dá ênfase às ligações entre os vários participantes da interação. Ao contrário do diagrama de seqüência, onde cada participante é disposto em uma linha de tempo e mostra a seqüência de mensagens na direção vertical, o diagrama de colaboração permite o posicionamento livre dos participantes, permite desenhar ligações para mostrar como os participantes se conectam, e usa numeração para mostrar a seqüência de mensagens. Com o diagrama de comunicação pode-se mostrar quão ligados são os participantes. 14/12/14 http://www.alvarofpinheiro.eti.br 74
  • 75. IInnttrroodduuççããoo aa UUMMLL Qual a diferença entre Colaboração e Seqüência? Os diagramas de colaboração e seqüência são semanticamente equivalentes e podem ser automaticamente gerados, um a partir do outro. Cada um deles tem vantagens e desvantagens, dependendo de como se queira usá-los. Colaboração • Melhores para visualizar os relacionamentos e responsabilidades de um dado objeto • Mais fáceis de desenhar - úteis em sessões de brainstorm Seqüência • Melhores para visualizar a seqüência do fluxo no tempo • Melhores para visualizar o fluxo completo • Mais adequados para cenários complexos 14/12/14 http://www.alvarofpinheiro.eti.br 75
  • 76. IInnttrroodduuççããoo aa UUMMLL O que é um Diagrama Geral de Interação? Este é um novo diagrama de UML 2.0 que combina elementos de diagrama de atividades com outros diagramas de interação. Ele embute nos fluxos de atividades, as interações entre objetos (diagramas de interação). Desta forma, ele permite reusar e combinar interações pré-definidas. Neste diagrama é possível, compor e reusar diferentes diagramas de interação e dar uma visão única para uma lógica de processamento mais complexa. Apesar de interessante, a sua aplicabilidade ainda não é muito clara, poucos livros a citam e quando citam, são muito superficiais. 14/12/14 http://www.alvarofpinheiro.eti.br 76
  • 77. IInnttrroodduuççããoo aa UUMMLL Para que serve o Diagrama de Tempo? É focado em restrições tempo para um ou mais objetos Relaciona os objetos, seus estados e o tempo São bem aplicáveis para sistemas embarcados (e comumente usado por engenheiros de hardware) 14/12/14 http://www.alvarofpinheiro.eti.br 77
  • 78. Outros Diagramas IInnttrroodduuççããoo aa UUMMLL Diagrama de Atividades Diagrama de Estados 14/12/14 http://www.alvarofpinheiro.eti.br 78
  • 79. IInnttrroodduuççããoo aa UUMMLL Para que Atores e Casos de Uso? 14/12/14 http://www.alvarofpinheiro.eti.br 79
  • 80. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para localizar? Descrever Como Atores e Casos de Uso Interagem Avaliar os resultados Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso Empacotar Casos de Uso e Atores Identificar Casos de Uso Localizar Atores 14/12/14 http://www.alvarofpinheiro.eti.br 80
  • 81. IInnttrroodduuççããoo aa UUMMLL Localizar atores Stakeholders definidos no doc de visão 14/12/14 http://www.alvarofpinheiro.eti.br 81
  • 82.  Qualquer desses é um ator candidato  Uma instância de ator é alguém ou algo externo ao sistema que interage com ele  Uma classe de ator define um conjunto de instâncias de ator, no qual cada uma desempenha o mesmo papel em relação ao sistema  Exemplo: gerentes de vendas acessando um mesmo relatório gerencial 14/12/14 http://www.alvarofpinheiro.eti.br 82
  • 83. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para localizar? Descrever Como Atores e Casos de Uso Interagem Avaliar os resultados Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso Empacotar Casos de Uso e Atores Identificar Casos de Uso Localizar Atores 14/12/14 http://www.alvarofpinheiro.eti.br 83
  • 84. IInnttrroodduuççããoo aa UUMMLL  Um caso de uso é uma seqüência de ações realizada por um sistema que produz um resultado de valor observável para determinado ator  Todos os casos de uso juntos devem descrever a funcionalidade completa do sistema (requisitos)  Atores são fundamentais para a descoberta dos casos de uso 14/12/14 http://www.alvarofpinheiro.eti.br 84
  • 85. IInnttrroodduuççããoo aa UUMMLL Para cada ator.... Identificar Casos de Uso 14/12/14 http://www.alvarofpinheiro.eti.br 85
  • 86. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para localizar? Descrever Como Atores e Casos de Uso Interagem Avaliar os resultados Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso Empacotar Casos de Uso e Atores Identificar Casos de Uso Localizar Atores 14/12/14 http://www.alvarofpinheiro.eti.br 86
  • 87. IInnttrroodduuççããoo aa UUMMLL  É o primeiro passo de modelagem dos caso de uso  Diagrama de casos de uso  Uma associação de comunicação é uma associação entre uma classe de ator e uma classe de caso de uso, que indica haver interação entre suas instâncias  Um ator se comunica com os casos de uso por vários motivos, por exemplo:  Para iniciar um caso de uso  Para solicitar dados do sistema  Para alterar os dados armazenados no sistema 14/12/14 http://www.alvarofpinheiro.eti.br 87
  • 88. IInnttrroodduuççããoo aa UUMMLL Coordenador 14/12/14 http://www.alvarofpinheiro.eti.br 88
  • 89. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para localizar? Descrever Como Atores e Casos de Uso Interagem Avaliar os resultados Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso Empacotar Casos de Uso e Atores Identificar Casos de Uso Localizar Atores 14/12/14 http://www.alvarofpinheiro.eti.br 89
  • 90. IInnttrroodduuççããoo aa UUMMLL  Organizar casos de uso e atores em pacotes  Um pacote de casos de uso é um conjunto de casos de uso, atores e relacionamentos. É usado para organizar o modelo de casos de uso dividindo-o em partes menores.  Facilita o entendimento 14/12/14 http://www.alvarofpinheiro.eti.br 90
  • 91. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para localizar? Descrever Como Atores e Casos de Uso Interagem Avaliar os resultados Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso Empacotar Casos de Uso e Atores Identificar Casos de Uso Localizar Atores 14/12/14 http://www.alvarofpinheiro.eti.br 91
  • 92. IInnttrroodduuççããoo aa UUMMLL Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso 14/12/14 http://www.alvarofpinheiro.eti.br 92
  • 93. IInnttrroodduuççããoo aa UUMMLL 14/12/14 http://www.alvarofpinheiro.eti.br 93
  • 94. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para localizar? Descrever Como Atores e Casos de Uso Interagem Avaliar os resultados Apresentar o Modelo de Casos de Uso em Diagramas de Casos de Uso Empacotar Casos de Uso e Atores Identificar Casos de Uso Localizar Atores 14/12/14 http://www.alvarofpinheiro.eti.br 94
  • 95. IInnttrroodduuççããoo aa UUMMLL Avaliar resultados 14/12/14 http://www.alvarofpinheiro.eti.br 95
  • 96. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para estruturar? Avaliar os resultados Estabelecer Relacionamentos de Inclusão Estabelecer Relacionamentos de Extensão Estabelecer Relacionamentos de Generalização entre Casos de Uso Estabelecer Relacionamentos de Generalização entre Atores 14/12/14 http://www.alvarofpinheiro.eti.br 96
  • 97. IInnttrroodduuççããoo aa UUMMLL  Um relacionamento de inclusão é aquele que  Se estabelece entre um caso de uso base e um caso de uso de inclusão  Especifica como o comportamento definido para o caso de uso de inclusão é inserido de forma explícita no comportamento definido para o caso de uso base  Além do reuso, relacionamentos de inclusão são criados para fatorar (separar comportamento complexo do caso de uso ou comportamento que não faz parte do propósito principal do caso de uso a fim de diminuir a complexidade do fluxo de eventos) 14/12/14 http://www.alvarofpinheiro.eti.br 97
  • 98. IInnttrroodduuççããoo aa UUMMLL 14/12/14 http://www.alvarofpinheiro.eti.br 98
  • 99. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para estruturar? Avaliar os resultados Estabelecer Relacionamentos de Inclusão Estabelecer Relacionamentos de Extensão Estabelecer Relacionamentos de Generalização entre Casos de Uso Estabelecer Relacionamentos de Generalização entre Atores 14/12/14 http://www.alvarofpinheiro.eti.br 99
  • 100. IInnttrroodduuççããoo aa UUMMLL  Um relacionamento de extensão  Se estabelece entre um caso de uso de extensão e um caso de uso base  Especifica como o comportamento definido para o caso de uso de extensão pode ser inserido no comportamento definido para o caso de uso de base  Criados para modelar comportamentos opcionais ou excepcionais  São executados somente face a certas condições  Casos de uso de inclusão são sempre executados 14/12/14 http://www.alvarofpinheiro.eti.br 100
  • 101. IInnttrroodduuççããoo aa UUMMLL 14/12/14 http://www.alvarofpinheiro.eti.br 101
  • 102. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para estruturar? Avaliar os resultados Estabelecer Relacionamentos de Inclusão Estabelecer Relacionamentos de Extensão Estabelecer Relacionamentos de Generalização entre Casos de Uso Estabelecer Relacionamentos de Generalização entre Atores 14/12/14 http://www.alvarofpinheiro.eti.br 102
  • 103. IInnttrroodduuççããoo aa UUMMLL  Uma generalização de casos de uso  É um relacionamento de um caso de uso filho com um caso de uso pai  Especifica como um filho pode adotar todo o comportamento e as características descritas para o pai  Usado para relacionar um caso de uso mais especializado com um mais geral  Este relacionamento complica mais do que facilita e deve ser evitado 14/12/14 http://www.alvarofpinheiro.eti.br 103
  • 104. IInnttrroodduuççããoo aa UUMMLL 14/12/14 http://www.alvarofpinheiro.eti.br 104
  • 105. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para estruturar? Avaliar os resultados Estabelecer Relacionamentos de Inclusão Estabelecer Relacionamentos de Extensão Estabelecer Relacionamentos de Generalização entre Casos de Uso Estabelecer Relacionamentos de Generalização entre Atores 14/12/14 http://www.alvarofpinheiro.eti.br 105
  • 106. IInnttrroodduuççããoo aa UUMMLL  Na generalização de ator o filho herda o papel que o pai pode desempenhar em um caso de uso.  Facilita a leitura do modelo de caso de uso 14/12/14 http://www.alvarofpinheiro.eti.br 106
  • 107. IInnttrroodduuççããoo aa UUMMLL Quais as atividades para estruturar? Avaliar os resultados Estabelecer Relacionamentos de Inclusão Estabelecer Relacionamentos de Extensão Estabelecer Relacionamentos de Generalização entre Casos de Uso Estabelecer Relacionamentos de Generalização entre Atores 14/12/14 http://www.alvarofpinheiro.eti.br 107
  • 108. IInnttrroodduuççããoo aa UUMMLL Avaliar resultados 14/12/14 http://www.alvarofpinheiro.eti.br 108
  • 109. IInnttrroodduuççããoo aa UUMMLL Mecanismos Auxiliares da UML UML é uma linguagem muito extensível e desta forma ela pode ser usada para modelar basicamente tudo que se deseja. Os principais elementos que a permitem ser flexível são: • Estereótipos • Notas • Propriedades (Tagged values) • Restrições Estes elementos serão descritos com mais detalhes mais adiante. 14/12/14 http://www.alvarofpinheiro.eti.br 109
  • 110. O que é um Estereótipo IInnttrroodduuççããoo aa UUMMLL Estereótipo é um mecanismo utilizado para estender o vocabulário de UML e pode ser aplicado a qualquer elemento, sejam classes, relacionamentos, mensagens, atributo, etc. O estereotipo permite mudar a semântica do elemento ao qual ele é aplicado. Ele é representado colocando-se uma marcação no formato <<marcação>>, em cima do elemento. Em UML, já existem um conjunto de estereótipos pré-definidos que são aplicáveis a determinados elementos de UML, inclusive alguns deles já possuem ícones associados a eles, de forma que visualmente eles são diferentes do elemento sem o estereótipo, como é o caso de <<interface>> e <<actor>>, que são aplicáveis ao elemento Classe e mudam visualmente e semanticamente o seu significado. 14/121/144/12/14 por Álvaro F Phintthpe:i/r/owww.alvarofpinheiro.eti.br 110 110
  • 111. IInnttrroodduuççããoo aa UUMMLL Para que server uma nota? Mecanismo que permite a adição de comentários e associação do mesmo a qualquer elemento de UML. LeitoraCartao Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético. 14/12/14 http://www.alvarofpinheiro.eti.br 111
  • 112. IInnttrroodduuççããoo aa UUMMLL O que é uma Propriedades (Tagged Values)? Um tagged value é uma extensão de propriedades dos elementos de UML, permitindo que sejam criadas novas informações na especificação do elemento. Cada elemento em UML possui o conjunto de propriedades possíveis dele. Por exemplo, as classes possuem visibilidade, atributos e métodos. Para possibilitar a inclusão de uma nova propriedade á um elemento é possível fazer uso dos taggeds values que permitem definir propriedades que serão atribuídas àqueles elementos onde ela se aplica. Cliente {persistence} LeitoraCartao {location=server} 14/12/14 http://www.alvarofpinheiro.eti.br 112

Notas del editor

  1. Descrever como atores e casos de uso interagem De certa forma, neste passo já começaremos a modelar o diagrama de caso de uso. Como os casos de uso são obtidos através das ações dos atores (ativas ou passivas), torna-se relevante mostrar como se dá esse relacionamento, esta interação entre os atores e os caso de uso. A forma correta de se fazer isso é definindo-se uma associação de comunicação. Uma associação de comunicação é uma associação entre uma classe de ator e uma classe de caso de uso, que indica haver interação entre suas instâncias É comum indicarmos a propriedade de navegabilidade de uma associação de comunicação, que é representada por uma seta. A origem da seta inicia quem vai iniciar a comunicação, e não o sentido do fluxo de dados. Quando a interação pode iniciar tanto pelo caso de uso quanto pelo ator não devem ser usadas setas, mas apenas uma linha, que significa o mesmo que uma seta de cada lado. Um ator se comunica com os casos de uso por vários motivos, por exemplo: Para iniciar um caso de uso Para solicitar dados do sistema Para alterar os dados armazenados no sistema