Вы находитесь на странице: 1из 170

Anlise Orientada a Objetos

Prof. Andr Portugal


Mestre em Modelagem Computacional

Dados Curriculares

Carga Horria

Dias da Semana

60 Horas

Sbado pela manh

Ementa
Histrico e Introduo UML; Conceitos e Elementos da Anlise
Orientada a Objetos; Anlise de requisitos; Modelagem de
sistemas orientados a objetos UML (Unified Modelling
Language); Transformao de classes em modelos de dados;
Introduo a Padres de Projeto.

Dados Curriculares

Carga Horria

Dias da Semana

60 Horas

Sbado pela manh

Ementa
Histrico e Introduo UML; Conceitos e Elementos da Anlise
Orientada a Objetos; Anlise de requisitos; Modelagem de
sistemas orientados a objetos UML (Unified Modelling
Language); Transformao de classes em modelos de dados;
Introduo a Padres de Projeto.

Contedo

Primeira Avaliao
Fundamentos da Orientao a Objetos;

Conceitos e Elementos da Anlise Orientada a Objetos;

Histrico e Introduo UML;


Levantamento e Documentao de Requisitos;
Modelagem de Casos de Uso;

Identificando Atores; o

Descrevendo Casos de Uso; o

Especificao de Fluxos Bsicos e Alternativos;

Contedo

Segunda Avaliao

Criao e Refinamento de Modelos de Classes

Transformando Modelos de Classes em Modelo de Dados

Modelagem da Estrutura Dinmica

Diagrama de Sequencia

Diagrama de Mquina de Estado

Terceira Avaliao
Modelagem da Estrutura Dinmica

Diagrama de Atividades

Diagrama de Implantao e Componentes

Introduo a Padres de Projetos

Referncias Bsicas
Referncias Bsicas
COAD, Peter. Anlise Baseada em Objetos. 2 Edio, Rio de Janeiro,
Campus, 1992.
PRESSMAN, Roger. Engenharia de Software. 7 Edio, So Paul,
McGraw-hill, 2011.
LARMAN, Craig . Utilizando UML e padres - Uma introduo a anlise e
ao projeto orientados. 3 Edio, Bookman, 2007.
Boock, G. and Rumbaugh, J. The Unified Modeling Language User
Guide . Addison-Wesley, 1999

Criao e Refinamento de Modelos


de Classes
Transformando Modelos de Classes em
Modelo de Dados

Por que fazer a


modelagem???

Importncia da modelagem

Utilizao de uma notao padronizada que


abrange qualquer tipo de sistema.

Facilidade no entendimento da orientao a


objetos.

Exigncia de mercado.

Qualidade.

Estimativa.

Gerenciar modificaes.

Comunicao.

Conceito em realidade.

Viso geral da UML

A UML uma linguagem


destinada a:
Visualizar
Especificar
Construir
Documentar

Linguagem

As linguagens fornecem um vocabulrio e as regras para a


combinao de palavras desse vocabulrio com a
finalidade de comunicar algo.
Uma linguagem de modelagem a linguagem cujo
vocabulrio e regras tm seu foco voltado para a
representao conceitual e fsica de um sistema.
Permite a compreenso de um sistema.
Nenhum modelo inteiramente suficiente.
No caso de sistemas que fazem uso intensivo de software,
torna-se necessria uma linguagem capaz de abranger as
diferentes vises relacionadas arquitetura do sistema.

Linguagem para
visualizao

Para muitos programadores no existe diferena entre


pensar e implementar um cdigo.

Para determinados itens ser melhor uma modelagem


textual, para outros uma modelagem grfica.

A UML mais que um punhado de smbolos grficos.

Por trs de cada smbolo grfico existe uma semntica bem


definida.

Um desenvolvedor poder usar a UML para escrever seu


modelo e qualquer outro desenvolvedor, ou at outra
ferramenta, ser capaz de interpret-lo sem ambigidades.

Linguagem para
especificao
Especificar
significa
construir
modelos
precisos,
sem
ambigidades e completos.
Atende
a todas as decises
importantes em termos de anlise,
projeto e implementao.

Linguagem para construo

No uma linguagem visual de programao, mas seus


modelos podem ser diretamente conectados a vrias
linguagens de programao.
possvel mapear os modelos da UML em linguagens de
programao tais como Java, C++, Visual Basic ou at tabelas
de banco de dados relacionais.
A UML capaz de representar tudo que possa ser melhor
expresso em termos grficos, enquanto linguagens de
programao representam o que melhor em termos textuais.
Permite a realizao de uma engenharia de produo: a
gerao de cdigo a partir de um modelo em UML.
Permite a engenharia reversa, construir um modelo a partir de
sua implementao.

Linguagem para
documentao

Um empresa de software produz todos os tipos de artefatos alm do cdigo


executvel bruto.

Requisitos

Arquitetura

Projeto

Cdigo-fonte.

Planos de Projeto

Testes

Prottipos

Verses
Estes artefatos no so apenas partes do projeto a ser entregue, mas
tambm so crticos para controlar, medir e comunicar determinado
sistema durante seu desenvolvimento e aps sua implementao
A UML abrange a documentao da arquitetura do sistema e de todos os
seus detalhes.

Onde pode ser usada.

Se destina principalmente a sistemas complexos de software.


Tem sido empregada em domnios como:

Sistemas de Informaes corporativos.

Servios bancrios e financeiros.

Telecomunicaes.

Transportes.

Defesa/espao areo.

Vendas de varejo.

Eletrnica mdica.

Servios distribudos baseados na Web.


suficientemente expressiva para modelar sistemas que no
sejam de software.

Um modelo conceitual da
UML.
Para compreender
a UML precisa-se
formar um modelo conceitual da
linguagem.
Aprender trs elementos principais:
Os blocos de construo bsicos
As regras que determinam como
esses blocos podero ser
combinados.
Mecanismos comuns aplicados a
UML.

Blocos de construo

Trs tipos de blocos de construo:

Itens

Relacionamentos

Diagramas

Os itens so as abstraes identificadas como cidados de


primeira classe em um modelo.

Os relacionamentos renem esses itens.

Os diagramas agrupam colees de itens.

Itens da UML
Existem quatro tipos de itens:
Itens estruturais
Itens comportamentais
Itens de agrupamento
Itens anotacionais
Estes itens constituem os blocos
de construo bsicos orientados
a objetos da UML.

Itens estruturais

So os substantivos usados em modelos da UML.

So as partes mais estticas do modelo, representando


elementos conceituais ou fsicos.

Sete tipos:

Classes

Interface

Colaboraes

Caso de uso

Classes ativas

Componentes

Ns

Classes
So descries de conjuntos de
objetos que compartilham os
mesmos
atributos,
operaes,
relacionamentos e semntica.
Implementam
uma
ou
mais
interfaces. Window
Graficamenteorigin so
representadas
size
por retngulos
open()

close()
move()
display()

Interfaces

Coleo de operaes que especificam servios de uma classe


ou componente.

Descreve o comportamento visvel desse elemento.

Poder representar
comportamento.

Define um conjunto de especificaes de operaes (suas


assinaturas), mas nunca um conjunto de implementaes de
operaes.

representada graficamente como um crculo e o respectivo


nome.

comportamento

ISpeling

ou

parte

desse

Colaboraes

Definem interaes e so sociedades de papis e outros


elementos que funcionam em conjunto para proporcionar um
comportamento cooperativo superior a soma de todos os
elementos

Contm dimenses estruturais, assim como comportamentais.

Uma determinada classe pode participar em vrias colaboraes.

Essas colaboraes representam a implementao de padres


que formam um sistema.

Graficamente so representadas como elipses com linhas


tracejadas

Cadeia de responsabilidades

Caso de Uso

Descrio de um conjunto de seqncias de aes realizadas


pelo sistema que proporciona resultados observveis de valor
para um determinado ator.

utilizado para estruturar o comportamento de itens em um


modelo.

Um caso de uso realizado por uma colaborao.

Graficamente representado por uma elipse.

Colocar Pedido

Classes ativas
So classes cujos objetos tm um ou
mais processos ou threads e, portanto,
podem iniciar a atividade de controle.
semelhante a uma classe, exceto pelo
fato de que seus objetos representam
elementos
cujo
comportamento

concorrente com o de outros elementos.


Graficamente,
as classe ativas so
representadas da mesma maneira como
as classes, mas com linhas mais
grossas.

Componentes

Os componentes so partes fsicas e substituveis de um


sistema, que proporcionam a realizao de um conjunto de
interfaces.

Em um sistema encontram-se diferentes tipos de


componentes como: COM+ ou Java Beans e componentes que
so artefatos do processo de desenvolvimento, como os
arquivos de cdigo-fonte.

Tipicamente representam o pacote fsico de elementos lgicos


diferentes, como classes, interfaces e colaboraes.

Graficamente so representados como retngulos com abas.

Ordemform.java

N
um elemento fsico existente em
tempo de execuo que representa
um recurso computacional
Um
conjunto de componentes
poder estar contido em um n e
tambm poder migrar de um n
para outro.
Graficamente representado por
um cubo.

Servidor

Itens comportamentais
So as partes dinmicas dos
modelos da UML.
So os verbos de um modelo,
representando comportamentos
no tempo e no espao.
Dois tipos principais:
Interao
Mquina de estado.

Interao

um comportamento que abrange um conjunto de


mensagens trocadas entre um conjunto de objetos em
determinado contexto para a realizao de propsitos
especficos.

O comportamento de uma sociedade de objetos ou de uma


operao individual poder ser especificado por meio de uma
interao.

As interaes envolvem outros elementos,


mensagens, seqncias de aes e ligaes.

Graficamente representada como linha cheia com seta,


quase sempre incluindo o nome de suas operaes.

inclusive

Mquina de estado

um comportamento que especifica as seqncias de estados pelas quais


objetos ou interaes passam durante sua existncia em resposta a
eventos, bem como suas respostas a esses eventos.

O comportamento de uma classe individual ou de uma colaborao de


classes pode ser especificado por meio de uma mquina de estados.

Uma mquina de estado abrange outros elementos, incluindo estados,


transies, eventos e atividades.

Graficamente, o estado representado como retngulo com ngulos


arredondados, geralmente incluindo seu nome e respectivos subestados.

Aguardando

Itens de agrupamento
So as partes organizacionais
dos modelos de UML.
So
os blocos em que os
modelos
podem
ser
decompostos.
Existe apenas um tipo principal
de
item
de
agrupamento
chamado pacote.

Pacotes

um mecanismo de propsito geral para a organizao


de elementos em grupos.

Itens estruturais, itens comportamentais e at outros


itens podem ser colocados em pacotes.

puramente conceitual

Graficamente representado como diretrios com


guias, geralmente incluindo somente seus nomes e, s
vezes, seu contedo.

Regras de
negcios

Itens anotacionais
So as parte explicativas dos
modelos de UML.
So comentrios includos para
descrever, esclarecer e fazer
alguma
observao
sobre
qualquer elemento do modelo.
Existe um nico tipo chamado
nota.

Nota
apenas um smbolo para
representar
restries
e
comentrios
anexados
a
um
elemento ou a uma coleo de
elementos.
Graficamente representado por
um retnguloretornar
com
cpia um dos cantos
como uma dobra de pgina,
acompanhado
por
texto
ou
comentrio grfico.

Modelagem de Dados
com
UML
Diagrama
de Classes
Representao dos dados manipulados
e armazenados pelos programas de
acordo com os conceitos de
Orientao a Objetos
Notao fortemente baseada no
Diagramas Entidade-Relacionamento
de Peter Chen
Deve-se observar que o Diagrama de
Classes privilegia a descrio segundo
o paradigma OO

Diagramas de Classe
So os principais diagramas
estruturais da UML
Ilustram as classes, interfaces e
relacionamentos entre elas
As
classes
especificam
a
estrutura e o comportamento
(operaes) dos objetos, que so
instncias das classes

Diagramas de Classe

Descrevem os tipos de objetos no


sistema e os vrios relacionamentos
estticos entre eles, que so de 2
tipos
associaes
subtipos (abstrao)
Ilustram atributos e operaes de
uma classe e as restries maneira
com que os objetos so conectados

Classe

uma descrio de um conjunto de objetos com os


mesmos atributos, relacionamentos, operaes e
semntica

utilizada para capturar o vocabulrio de um sistema

Pode ser:

elemento lgico e fsico do sistema

listas e tabelas tambm so classes

substantivos do enunciado

partir da classe mais genrica...

Responsabilidade

Uma responsabilidade um contrato ou obrigao


de uma classe.
Responsabilidades representam os
conhecimentos e as aes que possibilitam a
uma classe cumprir seu papel.
Os atributos e operaes podem ser vistos
como aspectos ou caractersticas atravs das
quais as responsabilidades so cumpridas.
Um bom ponto de partida para a definio de uma
classe a definio de suas responsabilidades.

Responsabilidade
So descritas como frases ou
pargrafos curtos em formato
textual livre.
So documentadas como um
compartimento especfico, como
parte da descrio da classe ou
como uma nota estereotipada
como <<responsability>> ligada
a classe.
Exemplo:

Classes - Notao

Esteretipo;

Atributos;

Operaes;

Visibilidade;

Tipo;

Nome da classe podem ser simples ou pode ser


precedido pelo nome do pacote em que a classe
est contida (Excees::ClienteCadastrado)

<<entidade>>

Cliente
CPF : Long
Nome : String
Endereco : String
Consultar(CPF : Long) : Integer

Mostrar Todos os
Detalhes se necesrio

Modelagem de Dados com


UML

Aspectos tratados pelos


Diagramas de Classe: Dados e
Funes

Atributos

Representa alguma propriedade do que est sendo


modelado - identifica as caractersticas prprias da classe

Descrevem os dados contidos nas instncias de uma


classe

Podem ser identificados apenas com nomes

Podem ter seus tipos (Classes) especificados e terem


valores padro definidos

Visibilidade

Usar marcaes de acesso para especificar o tipo de acesso


permitido aos atributos e operaes

Visibilidade:

+ pblico
: visvel em qualquer
classe
# protegido : qualquer descendente
poder usar
- privado : visvel somente dentro
da classe
+ saldoEM (date: Date): Money
Assinatura

Operaes/Mtodos

Operao algo que executado em um objeto


(procedimento de chamada)

Mtodo o corpo do procedimento de chamada

Descreve o comportamento da classe

Visibilidade

pblico
protegido
privado

Notaes

Diagrama de classe

Nome das classes so substantivos

Primeiro caracter maisculo


(Customer,java::awt::Rectangle)

Atributo:

substantivo, aparece como maisculo o primeiro


caractere de cada palavra existente no nome do
atributo, exceto a primeira letra: nomeProfessor

Operao

verbo ou locuo verbal, aparece como maisculo o


primeiro caractere de cada palavra existente no nome
da operao, exceto a primeira letra: isEmpty

Relacionamentos

Associao - especifica que objetos de um elemento (classe)


esto conectados a objetos de outros elementos. Pode ser
(Unria, Binria ou ternria)
Agregao - relacionamento fraco do tipo parte de. um
tipo especial de associao
Composio - relacionamento forte do tipo parte de. A
composio entre um elemento (o todo) e outros elementos
(as partes) indica que as partes s existem em funo do
todo.

Dependncia - relacionamento de uso, no qual uma mudana


na especificao de um elemento pode alterar a especificao
do elemento dependente

Generalizao (herana) - relacionamento entre descries mais


gerais e descries mais especficas, com mais detalhes sobre
alguns dos elementos gerais

Realizao - relacionamento entre uma interface e o elemento


que a implementa

Relacionamentos - Notao
Associao
Sem/com navegao

Agregao

Composio

Dependncia

Generalizao

Realizao

Relacionamentos

Nome

Papel

descrever a natureza do relacionamento


funo especfica a executar nesse relacionamento

Multiplicidade

quantidade de objetos que podem ser conectados no


relacionamento

1, zero ou um (0..1), muitos (0..*), um ou mais (1..*)

0..1, 3..4, 6..* = o que significa?

Associao

um relacionamento estrutural que descreve um conjunto de


ligaes, em que as ligaes so conexes entre objetos.

Graficamente representada por linha slidas, possivelmente


direcionadas,
ocasionalmente
includo
rtulos
e,
frequentemente, contendo adornos, como nomes de papis e
multiplicidades
Classe A

0..*
+funcionrio

Classe B

+empregador

1..*
Companhia *
+empregador

Empregado
+chefe 1

+subordinado
0..*

- Papel (Role)

Associao Unria, Navegabilidade e


Multiplicidade

Multiplicidade
Padro 1..1

Funcionario
0..*

-Nome do relacionamento
-Multiplicidade
-Navegabilidade
-Ocultar Detalhes

Chefia

Funcionario
Codigo : Long
Nome : String
CodigoChefe : Long
ConsFuncionario(Codigo : Long) : Integer
ConsChefe(CodigoChefe : Long) : Integer

Associao Binria
<<entity>>
Pedido

Possui

Scio

-data: date
-status: Integer
-obs: String
-valorTotal: Float

0..*

Dependente

Pedido
-data
-status

+calcImposto()
+calcTotal()
-calcSubTotal()
+setCliente(cliente: Cliente)
+inserirItem(item: ItemPedido)

+calcImposto()
+calcTotal()
1

0..*

0..*

1..*

<<entity>>
Cliente
-razaoSocial: String
-cpf: String
+getRazaoSocial()
+setRazaoSocial(razaoSocial: String)

Pagamento
-quantia

1
Cliente
-nome
-cpf

Associao Ternria ou Nria


Conectam mais de duas classes.
teis para associaes complexas, no entanto deve-se evitar utiliz-las,
pois sua leitura , por vezes, difcil de se interpretar.

Turma

Professor

0..*

Todos
0..*

Disciplina

0..*

Agregao
Tipo especial de associao.
Demonstra que as informaes de um objeto (objeto-todo) precisam ser
complementadas pelas informaes contidas em um ou mais objetos de
outra classe (objeto-parte).
Um objeto-parte no pode ser destrudo por um objeto diferente do objetotodo
Pedido

Possui

1..*

ItemPedido
0..*

Compe
Produto

Relacionamento:
agregao
Exemplo
Um Controlador de Temperatura
contm
um
Aquecedor
ControlaTemp
Aquecedor

classControlaTemp{
classAquecedor{...}

Composio
Uma variao da agregao
Representa um vnculo mais forte entre objetos-todo e os objetos-parte.
O objeto-parte exclusivo do objeto-todo.
Um objeto-parte no pode associar-se a mais de um objeto-todo

RevistaCientfica

Publica

1..*

Edio

Contm
6..10

Artigo

Implementao de
Composio
classBotao{..
//propriedades...
}

classJanela{
Botaob1,b2;
Tituloidentifica;
Stringcor;
....
}
campos

b1:objeto
Boto

classTitulo{..
//propriedades..
}
b2:objeto
Boto

identifica: cor:objeto
objetoTtulo String

lembrete:cadaobjetopossuiseuscamposeseusmtodos
lembrete:cadaobjetopossuiseuscamposeseusmtodos

Exemplo de composio
class Pessoa{
String nome;
char sexo;
Data dataNasc;
----}
class Data{
private int dia, mes, ano;
public void alteraData(int d, int m, int a){
dia = d;
mes = m;
ano = a;
}}

Herana
Umas das caractersticas mais
poderosas e importantes da O.O.
Permite a reaproveitamento de
atributos e mtodos.
Otimiza
o
tempo
de
desenvolvimento.
Diminui linhas de cdigos.
Facilita a manuteno.

Benefcios do uso de
herana

Reusabilidade de cdigo: permite o desenvolvimento de


aplicaes novas que requeiram pouco codificao.
Compartilhamento de cdigo: usurios em diferentes
projetos utilizando uma mesma classe.
Componentes de Software: Herana permite que
programadores construam componentes de software
reutilizveis.
Prototipao rpida: desenvolvimento baseado em
componentes reutilizveis, maior concentrao para
entender partes novas do sistema.
Ocultamento da informao: o programador precisa
apenas entender a natureza do componente e sua
interface.

Generalizao

um relacionamento de especializao/generalizao,
nos quais os objetos dos elementos especializados (os
filhos) so substituveis por objetos do elemento
generalizado (os pais)

Dessa maneira, os filhos compartilham a estrutura e o


comportamento dos pais.

Graficamente, representado como linha slida com


uma seta em branco apontando o pai

Fornecedor

Fornecedor cimento

Generalizao

Relacionamento entre um elemento mais geral (chamado de


superclasse ou pai) e um mais especfico (chamado de
subclasse ou filho)
Forma
origem
mover()
exibir()

Retngulo
ponto : Ponto

Crculo
raio : float

Polgono
pontos : ListaDePontos
exibir()

Quadrado

Especializao /
Generalizao
ContaComum

- Generalizao

Nrconta : Long
Saldo : Double
Dtaber : Date
Tipo : Integer
Dtencer : Date
Situacao : Boolean
Senha : Integer

- Especializao
- Polimorfismo

Abertura(Saldo : Double, Tipo : Integer, Senha : Integer) : Long


Encerramento() : Integer
Saque(Valor : Double) : Integer
Deposito(Nrconta : Long, valor : Double) : Integer
VerSaldo() : Double
Consulta(Nrconta : Long) : Integer
ValSenha(Senha : Integer) : Integer

ContaEspecial

- Sobrecarga
- Sobreposio

ContaPoupana

Limite : Double
Rendimento(DatDia : Date, Juros : Double) : Integer
Abertura(Saldo : Double, Senha : Integer, Limite : Double) : Long
Saque(Valor : Double) : Integer
JurCheqEsp(Juros : Double) : Integer

Exemplo de Implementao
de Herana

class Pessoa{
public String nome;
public char sexo;
public Data dataNasc;
---}

public class Ator extends Pessoa{


public String contrato;
/* campos herdados
public String nome;
public char sexo;
public Date dataNasc; */
-----}
public class Aluno extends Pessoa{
public long matric;
/* campos herdados
public String nome;
public char sexo;
public Data dataNasc; */
-----}

Herana Mltipla

Ocorrem mltiplas superclasses para uma mesma subclasse

Veculo

Veculo Terrestre

Veculo Aqutico

Veculo Anfbio

Classe abstrata

Uma classe abstrata aquela usada somente na


construo de uma hierarquia de relacionamentos de
generalizao no pode ter nenhuma instncia
direta.
O oposto chamado classe concreta.
Uma classe folha aquela que no pode gerar um
filho
Em UML, pode-se usar a propriedade {leaf} para
especificar uma classe folha.
Uma classe raiz aquela que no pode ter pais.
Em UML, pode-se usar a propriedade {root} para
especificar uma classe raiz.

Polimorfismo
Operaes
tm
algumas
propriedades similares a classes.
Uma operao abstrata aquela
que no tem um mtodo definido.
Uma
implementao para a
operao tem que ser suprida
em algum de seus descendentes
concretos.
Um elemento abstrato denotado
pelo nome em itlico.
O oposto de abstrato concreto

Polimorfismo

Uma operao normalmente considerada


polimrfica, isto , sua implementao (seu
mtodo) pode ser suprida ou sobrescrita por
uma classe descendente.
Um
descendente
pode
definir
ou
sobrescrever
um
mtodo
de
uma
operao polimrfica.
O oposto de polimrfica uma operao dita
folha (leaf).
Neste caso, um mtodo tem que ser
definido para a operao.
Uma operao no declarada folha
considerada polimrfica.

Exemplo a seguir:

as classes Icon, Rectangular Icon e Arbitrary Icon so abstratas;


display e isInside so operaes polimrficas;
Icon::display() uma operao abstrata;
Icon::getID() uma operao folha e concreta.

Exemplo de polimorfismo

classPessoa{
publicStringnome;
publiccharsexo;
publicDatadataNasc;
voidlista(){
imprime(nome);
imprime(sexo);
}

publicclassProfessorextendsPessoa{
publicStringcontrato;
voidlista(){
imprime(nome);
imprime(contrato);
}
}
publicclassAlunoextendsPessoa{
publiclongmatric;
voidlista(){
imprime(nome);
imprime(idade);
imprime(matric);}
}

Dependncia

um relacionamento semntico entre dois itens, nos quais a


alterao de um (o item independente) pode afetar a
semntica do outro (o item dependente)

Graficamente, uma dependncia representada por linhas


tracejadas, possivelmente com setas e ocasionalmente
incluindo um rtulo

Dependncias so relaes de uso

Uma dependncia indica que mudanas em um elemento (o


Pedido) podem afetar outro elemento (o Fornecedor)

Uma dependncia entre classes indica que os objetos de uma


classe usam servios dos objetos de outra classe

Fornecedor

Pedido

Dependncia alguns tipos

derive a fonte computada a partir do destino

friend a fonte tem acesso privilegiado ao destino

instanceOf o objeto fonte instncia da classe destino

powertype o destino composto por subconjuntos da fonte

Entre pacotes: access e import

Entre use-cases: extend e include

Entre objetos: become, call e copy

Pacotes e Relacionamento
de Dependncia
Interface
ItemCarrinho

Regras de negcio

Banco de Dados

Carrinho

Interfaces

Uma interface um conjunto de operaes usado para


especificar um servio de uma classe ou componente

Diferentemente das classes, as interfaces no especificam


nenhuma estrutura

Interfaces no podem conter atributos

Com as interfaces, possvel se concentrar apenas nos


servios oferecidos por classes ou componentes

O uso de interfaces uma maneira elegante e poderosa


de isolar a especificao da implementao

Uma interface especifica o contrato para uma classe ou


componente, sem definir como ele ser implementado

Interfaces e Realizao

Realizao uma relao pela qual um elemento


especifica o contrato que outro elemento deve
implementar

A realizao um relacionamento
especificao e sua implementao

entre

uma

Realizao

um relacionamento semntico entre classificadores, em que


um classificador especifica um contrato que outro classificador
garante executar.

So encontrado em dois locais:

Entre interfaces e as classes ou componentes que as


realizam;

Entre casos de uso e as colaboraes que os realizam

Graficamente, representado por uma linha traceja com seta


branca entre uma generalizao e um relacionamento de
dependncia.

Classe A

Classe B

Realizao - Notao

<<interface>>
Empregado

Empregado_Impl

verificarFicha()
calcularSalrio()

Empregado_Impl

Empregado

Realizao

<<Interface>>

Idado
Mos trarLado()
RolarDado()

Dado
Dado()
MostrarLado()
RolarDado()

Classe Associativa ou
Intermediria
1..*

Artigo

Artigo

Escreve

Autor

1..*

Autor

Classe
Intermediria

Escreve
Classe
Associativa

Representa situaes onde determinados atributos no podem ser colocados em


nenhuma das classes participantes de uma associao, por conter informaes
exclusivas ligao dos objetos das duas classes.

Restries
Scio

Realiza

1..*

PessoaFisica

Locao
1..*

{Um scio s poder realizar uma nova


locao setiver devolvido a locao
anterior}

Possui

ContaComum

ContaComum
Nrconta : Long
Saldo : Double
Dtaber : Date
Tipo : Integer
Dtencer : Date
Situacao : Boolean
Senha : Integer
Abertura(Saldo : Double, Tipo : Integer, Senha : Integer) : Long
Encerramento() : Integer
Saque(Valor : Double) : Integer
Deposito(Nrconta : Long, valor : Double) : Integer
VerSaldo() : Double
...

{ou}
1..*

Possui
PessoaJuridica

O tributo senha
deve conter no
mnimo 4 digitos

Restries
Pessoa

{Separada, Completa}
PessoaFsica

PessoaJuridica

Veiculo

{Sobreposta, Incompleta}
Areo

Aqutico

Esteritipos

Entity

Boundary

Control

Interface

Persistente (criado pelo Usurio) e outros

<<boundary>>

Tela
Tela
<<entity>>

PessoaJuridica
PessoaJuridica
<<control>>

PontoEletrnico

PontoEletrnico
<<Interface>>

Idado
Idado

Encontrando relaes entre as classes


identificadas

Generalizao: verifica-se se h alguma relao um tipo


de entre as classes identificadas.

Associao: verifica-se h a necessidade de um objeto de


uma classe utilizar servios disponibilizados por um objeto
de outra classe ou, simplesmente, conhecer o outro
objeto.

Auto-Associao: verifica-se se existe alguma classe que


necessita ser relacionada a ela mesma.

Encontrando relaes entre as classes


identificadas

Agregao: verifica-se se h alguma relao parte


de entre as classes.

Composio: verifica-se se h alguma relao parte


de forte entre as classes.

Navegao: verifica-se se existem navegaes


desnecessrias entre classes.

Classe
associativa:
verifica-se
se
existem
informaes que precisam estar vinculadas
associao de dois objetos (mas no a um deles em
particular)

Exemplo - Diagrama completo Pedido

<<entity>>
Pedido
-data: date
-status: Integer
-obs: String
-valorTotal: Float

<<entity>>
Cliente
-razaoSocial: String
-cpf: String

+getRazaoSocial()
+setRazaoSocial(razaoSocial: String)

0..*

<<entity>>
Pagamento

+calcImposto()
+calcTotal()
-calcSubTotal()
+setCliente(cliente: Cliente)
+inserirItem(item: ItemPedido)

1..*

-quantia: Float
+getQuantia()

<<boundary>>
FormPedido
1
+criarPedido()
+gravarPedido()

<<entity>>
Produto
+descricao: String

1..*
<<entity>>
ItemPedido

0..*

+qtd: Integer
+setQuantidade(qtd: Integer)
+setProduto(produto: Produto)

<<entity>>
Cartao

<<entity>>
Cheque

+numero: Integer
+tipo: Integer

-banco: Integer

<<entity>>
Dinheiro

Exemplo - Controle de Aplices de


Seguro
Cliente
CPF : Long
Nome : String
Endereco : String
TelCli : String
DataNasc : Date
GenCli : Boolean

Segura

1..*

VeculoSegurado

Parcela

Possui
0..*

Consultar()

Sofre
0..*

1..*

Tem

Pertence

Modelo

Sinistro

Tipo

1..4

Produz

0..*

Dano

1..*

Produz

Marca

Diagramas de objetos

Os diagramas de objetos mostram uma fotografia de um


sistema OO em execuo

So mostrados os objetos, com os valores de seus atributos


e as ligaes (links) entre eles

Os diagramas de objetos so teis para a modelagem de


estruturas de dados complexas, por exemplo

Diagramas de objetos

comum haver centenas ou milhares de objetos em um


sistema em execuo, a maioria deles annimos

Um diagrama de objetos mostra apenas uma parte dos


objetos no sistema

Um diagrama de objetos no mostra a evoluo do sistema


com o tempo

Diagramas de objetos

Diagramas de objetos so estticos

Para mostrar o comportamento de um objeto, use


diagramas de colaborao, diagramas de seqncia, ou
diagramas de estados

comum colocar um diagrama de classes junto com um


diagrama de objetos, para facilitar a identificao dos
objetos

Objetos Simples

: Curso

Bill Clinton

Andr: Professor
: Aluno

Monica: Aluno

codCurso: "IF291"
descrio: "MPS"
codTurma: I7

Fulano :

MultiObjects

Multiobjects so conjuntos de objetos, com um nmero


indeterminado de elementos

So usados, por exemplo, em diagramas de colaborao


para modelar uma mensagem enviada para vrios
objetos ao mesmo tempo

MultiObjects - Exemplos

p 2: P ro fe s s o r

c3: C u rs o

c1: C u rs o
c2: C u rs o

: A lu n o

: A lu n o

Diagramas de Objetos
Curso

Professor
ministra
-matrcula: String
-nome: String

[1..3]

-codDisciplina: String
[1..5] -descrio: String
-codTurma: String

Aluno

* -matrcula: String
-nome: String

[0..10]

-perodo: Integer

p1: Professor
p2: Professor

matricula: "205-6712-09"
nome: "Jaelson Castro"

c1: Curso
: Curso

c2: Curso

: Curso

codCurso: "IF291"
descrio: "MPS"
codTurma: I7

c3: Curso

codCurso: "IF185"
descrio: "AER"
codTurma: I6

: Aluno

: Aluno

: Aluno
: Aluno

: Aluno

:aluno
Bill
matricula: "219846534"
nome: "Nelson Mandella"

:aluno
matricula: "562746134"
nome: "John Major"

: Aluno

Lewinsky

Exerccio

Com o objetivo de aprender a


ferramenta ArgoUML crie os
diagramas de controle de
Locao de revistas e Controle
Bancrio.

Exerccio

Faa o exerccio do livro UML


uma abordagem prtica.

Diagrama de Seqncia objetivos

Um diagrama de seqncia mostra a interao, isto


, uma seqncia de mensagens trocadas entre
vrios objetos num determinado contexto.
Enfatiza a comunicao e passagem de controle
entre objetos ao longo do tempo.
til para representar uma seqncia particular de
funcionamento,
mas
no
muitas
sequncias
alternativas e ciclos nem aes realizadas por um
objeto que no envolvem comunicao com outros
objetos.

Diagrama de
Seqncia

Identifica quais mtodos devem ser disparados entre


os atores e objetos envolvidos e em que ordem.

Baseia-se no diagrama de caso de uso.

H normalmente um diagrama de seqncia para


cada caso de uso.

Diagrama de
Seqncia

Lembrando que um caso de uso, em geral, refere-se a um


processo disparado por um ator.

Um diagrama de seqncia parte da documentao de


um diagrama de caso de uso.

O diagrama de seqncia depende do diagrama de classe.

Diagrama de
Seqncia

Diagrama de seqncia uma excelente forma de


validar o diagrama de classe.

Ao modelar o diagrama de seqncia percebem-se


falhas e a necessidade de se declarar novos mtodos
que no haviam sido imaginados.

Sequenciamento

Quando um objeto envia uma mensagem para outro objeto,


o objeto que recebe a mensagem pode enviar outras
mensagens e assim por diante, formando uma sequncia de
mensagens

O sequenciamento pode ser

procedural, com aninhamento (mensagens sncronas)

ou plano, sem aninhamento (mensagens assncronas)

Diagramas de
Seqncia

Diagramas de Seqncia enfatizam a ordenao das


mensagens trocadas entre os objetos

Um cenrio uma seqncia especfica de aes que


ilustra um comportamento

Diagramas de Seqncia podem modelar apenas um


cenrio ou um conjunto de cenrios

Diagramas de Seqncia podem mostrar decises simples


e iteraes

Diagrama de Seqncia de
Eventos do Sistema

Utilizado para representar um cenrio para um


determinado caso de uso

Mostra os eventos que partem do ator e chegam ao


sistema

Para cada evento recebido o sistema ir executar


uma operao em resposta

Importncia do Diagrama de
Sequncia

Uma das coisas mais difceis de compreender em um


programa orientado a objetos o fluxo global de controle

Importncia do Diagrama de
Sequncia

Projetos podem possuir muitos mtodos em classes


diferentes,
tornando
difcil
o
entendimento
do
comportamento

Importncia do Diagrama de
Sequncia

Voc pode ter que recorrer ao cdigo para entender o


funcionamento, em particular se os desenvolvedores no
tm muita experincia

Importncia do Diagrama de
Sequncia

Os diagramas de sequncia ajudam a entender o


comportamento

Aplicaes do Diagrama de
Sequncia

Podem ser teis em processos concorrentes

Exemplo: Transao Bancria

Transao gera Coordenador de Transao

Coordenador gera dois objetos, cada um responsvel


por uma verificao particular, podendo ser
executados em paralelo

Ao fim da
coordenador

Quando todos os verificadores retornam e so bemsucedidos, o coordenador informa o objeto transao

verificao,

verificador

informa

Recomendaes

Adicionar texto ao lado das chamadas de mensagem,


descrevendo o que est acontecendo

Exige trabalho extra, mas facilita a compreenso

Diagrama de seqncia - atores

Os atores so os mesmos do diagrama de caso de uso e


possuem a mesma representao diferenciando-se por
possurem uma linha de vida.

: Cliente

Diagrama de seqncia objetos

Objetos representam as instncias das classes


envolvidas no processo ilustrado pelo diagrama de
seqncia.

Objetos no diagrama de seqncia possuem a


mesmo notao utilizada no diagrama de objetos,
diferenciando-se por possurem uma linha de vida.

Diagrama de seqncia objetos

Um objeto pode existir desde o incio do processo ou ser


criado durante a execuo do mesmo

: Cliente

Linha de vida

Representa o tempo em que um objeto existe


durante o processo. So representadas por linhas
finas verticais tracejadas partindo do objeto.

Foco de controle ou
Ativao

Indica os perodos em que o objeto est participando


ativamente do processo. So representados dentro
da Linha de Vida de um objeto. representado por
uma linha mais grossa.

Diagrama de
Seqncia

Componentes FOCO DE
CONTROLE/ATIVAO

Mensagens ou
Estmulos

Demonstram a ocorrncia de eventos, que normalmente


foram a chamada de um mtodo em algum dos objetos
envolvidos no processo.

Mensagens ou
Estmulos

Pode ocorrer, no entanto, de uma mensagem


representar a comunicao entre dois atores, neste
caso no disparando mtodos. Possveis mensagens:
Ator para ator
Ator para objeto, gerando um evento que dispara
um mtodo em um objeto.
Objeto para objeto, onde um objeto transmite uma
mensagem para outro objeto em geral solicitando a
execuo de um mtodo.
Um objeto e um ator, isso ocorre quando um objeto
envia uma mensagem de retorno em reposta
chamada de um mtodo solicitado, contendo seus
resultados

Mensagens ou
Estmulos

As mensagens so representadas por uma seta entre


dois componentes, indicando qual componente enviou
a mensagem e qual recebeu.

So representadas na posio horizontal entre as


linhas de vida dos componentes e sua ordem
seqencial demonstrada de cima para baixo.

Mensagens

Definio formal: uma mensagem a especificao de


uma comunicao entre objetos, onde so passadas
informaes, com a esperana de que ocorra alguma
atividade

Na maioria das vezes, uma mensagem resulta na


execuo de uma operao

Mensagens

Identificando mensagens:

Chamada (Call)
Retorno (Return)
Envio (Send)
Criao (Create)
Destruio (Destroy)

Mensagens

Mensagem simple indica uma linha simples de


controle, isto , um objeto envia uma mensagem
para um objeto passivo.

Mensagem synchronous, indica que o processo


ocorre somente quando o cliente envia uma
mensagem para o servidor e este recebe a
mensagem. O cliente envia a mensagem e fica
esperando at que a mensagem seja recebida pelo
servidor.

Na sincronizao balking, o cliente pode enviar


uma mensagem somente se o servidor est pronto
para receb-la, caso contrrio, o cliente abandona
a mensagem.

Mensagens

Na sincronizao timeout, o cliente envia uma


mensagem e fica esperando at que a mensagem
seja recebida pelo servidor, durante um tempo
determinado. O cliente abandona a mensagem se
o servidor no puder trat-la dentro do tempo.
Comunicao asynchronous ocorre quando o
cliente envia uma mensagem para o servidor
processar e continua sua execuo normal sem
esperar o reconhecimento da mensagem pelo
servidor, ficando de prontido para receber a
resposta.
Comunicao procedure call ocorre quando o
cliente chama um procedimento do servidor.
Comunicao return ocorre quando o servidor
responde a uma chamada de procedimento

Tipos de Mensagens
- Notao

Tipos de Mensagens

A seta tambm pode estar numa posio oblqua para


indicar que a mensagem consome tempo.

Representam atrasos de transmisso


desprezveis dinmica do conjunto

EX: informar cdigo a um SGDB

que

no

so

Tipos de Mensagens
- Notao

Mensagem consumindo tempo em atraso.


As duas notaes so possveis.

Retorno de
Mensagens
Mensagem de Sincrona
Retorno ... Linha
tracejada.

Podem retornar
valores ou
status...

Retorno de
Mensagens
Assincrona

Criao e destruio
de objetos

Criao de objeto representada por mensagem


dirigida prpria caixa que representa o objeto (em
vez de ser dirigida linha de vida-foco de controle)

Mensagem de criao pode ter esteretipo


create

Destruio de objeto representada por um X no


fim da linha de vida do objeto

Mensagem de destruio pode ter esteretipo


destroy

Pode ocorrer na recepo de mensagem ou no


retorno de chamada

objeto pode auto destruir-se

Mensagem que dispara um mtodo destrutor elimina um


objeto no mais necessrio.

Mensagens
condicionais,
iteradas
O valor de retorno de uma mensagem sncrona pode ser indicado na
chamada, com atribuio :=, ou na mensagem de retorno
com retorno
Exemplo: ret e
:= msg(args)

Nome ret ser usado em mensagens e condies a seguir

Tambm se escrever ret na mensagem de retorno

Uma mensagem condicional indicada por uma condio de guarda


entre parnteses retos [ ]

Exemplo: [x<0] invert(x,color)

mensagem s enviada se a condio se verificar

Condies permitem mostrar vrias seqncias alternativas num


nico diagrama

Uma mensagem iterada indicada com asterisco *, seguido ou no de


uma frmula de iterao

Exemplo: *[i:=1..n] update(i)

Condio de Guarda

Mensagem com
Condio de
Guarda

Entre colchetes
[]

Condio de Guarda

Mensagem com Condio de Guarda


Disparo de mensagem a vrios objetos (*)

Auto-Chamadas ou Auto-Delegaes

Auto-chamadas so mensagens que um objeto envia


para se mesmo.
: Cliente

fisica1 :
Fisica

: Banco

1: Solicita Abertura de Conta Comum

2: conCPF( )
Auto-Chamada
3: [se Existir] Dados do cliente
4: [Se necessrio] gravar()
5: valCpf( )
6: Cliente Atualizado

7: Pedido Aprovado
8: Fornecer Valor de Depsito e senha

9: Abertura( )

Conta1 :
ContaComum
10: gravar( )

13: Abertura de Conta Concluda

12: Nmero de Conta Gerada

hist1 :
Historico
11: Historico Registrado com
sucesso

Abertura de Conta
: Cliente

fisica1 :
Fisica

: Banco

1: Solicita Abertura de Conta Comum

2: conCPF( )
Auto-Chamada
3: [se Existir] Dados do cliente
4: [Se necessrio] gravar()
5: valCpf( )
6: Cliente Atualizado

7: Pedido Aprovado
8: Fornecer Valor de Depsito e senha

9: Abertura( )

Conta1 :
ContaComum
10: gravar( )

13: Abertura de Conta Concluda

12: Nmero de Conta Gerada

hist1 :
Historico
11: Historico Registrado com
sucesso

Encerramento de
Conta

Diagrama de Seqncia no Rational


Rose

Criando o Diagrama de Seqncia do Caso de Uso Abertura de


Conta Comum

Associando

Aprendendo a Barra de ferramenta

Criando Use Case Controle Bancrio

Concluir Diagrama de Classe Controle Bancrio

Criar Digrama de Seqncia do Caso de Uso Abertura de


Conta Comum

Criar Digrama de Seqncia do Caso de Uso Encerramento


da Conta Comum

Criar Digrama de Seqncia do Caso de Uso Extrato da


Conta Comum

Consultrio
Dentrio
Um dentista quer automatizar o atendimento aos pacientes de seu consultrio.
Quando um paciente deseja marcar uma consulta, verificada a agenda do dentista e
oferecido o primeiro horrio disponvel (data e hora), de acordo com o que o paciente
deseja.
Se o paciente concordar com o horrio, registrado na agenda o nome do paciente e
horrio combinado.
Os pacientes j cadastrados tm a ficha de consulta preenchida automaticamente. Os
pacientes novos devem fornecer seus dados de cadastro: RG, endereo, telefone, data
nascimento, profisso.
A consulta consiste de 2 tipos de servios: de limpeza e restaurao, ou exames para
diagnstico. Na realizao da consulta, o dentista faz o registro do servio efetuado em
detalhes e, se necessrio, o paciente marca uma nova consulta.
O dentista pode pesquisar as fichas de seus pacientes por nome ou data de consultas.
Diariamente, impressa a agenda com 2 dias de antecedncia para que os pacientes
confirmem a consulta. Tambm pode ser impressa a agenda do dia ou da semana.

Substantivos e Atributos dos


Objetos

Atores

Nome
(fonte de informao/solicitao ao sistema)

Paciente

dentista

Objetos
Paciente

(coisas sobre as quais os sistema quer guardar informaes)

Consulta/Ficha de consulta
Agenda
Horrio
Dentista
Servio

RG
Endereo
Telefone
Data nascimento
Profisso
Hora
Data
Tipo de servio

Verbos de ao

Funes do sistema

Mtodos

+ genricos

use case

(paciente) marcar consulta


(sistema) oferecer disponibilidade na
agenda
(paciente) confirmar horrio
(sistema) registrar consulta
(paciente) fornecer dados cadastro
(sistema) preencher ficha de consulta

(dentista) registrar servio efetuado


(dentista) pesquisar ficha de consulta
(sistema) resgatar agenda com 2 dias
(paciente) confirmar consulta
(sistema) resgatar agenda do dia
(sistema) resgatar agenda da semana

Tabela de Eventos
n

descrio

entrada

sada

Use case

Paciente marca consulta

Solicitao
Consulta

Msg1

Marcar consulta

Paciente se cadastra

Dados cadastro

Msg2

Cadastrar paciente

Paciente confirma consulta

Dados confirmao

Msg3

Confirmar consulta

Dentista registra servios efetuados

Descrio servios

Msg4

Registrar servios efetuados

Dentista pesquisa ficha de consulta

Solicitao de ficha

fichas de
consulta

Pesquisar fichas de consulta

hora de imprimir agenda do dia

(08:00 hs)

Agenda dia

Resgatar agenda do dia

hora de resgatar a agenda da semana

(segunda-feira 08:00
hs)

Agenda
semana

Resgatar agenda da semana

hora de resgatar a agenda 2 dias

(08:00 hs)

Agenda 2 dias

Resgatar agenda 2 dias

Msg1 = Consulta marcada


Msg2 = Paciente cadastrado

Msg3 = Consulta confirmada


Msg4 = Servio registrado

Casos de Uso (1)


solicitao consulta

dados confirmao

confirmar consulta

msg3

AtorPaciente

dados cadastro

msg2

cadastrar paciente

marcar consulta
msg1

Casos de Uso (2)

descrio servios

registrar servios
efetuados

solicitao de ficha

AtorDentista
msg4

pesquisar fichas de
consulta

fichas de consulta

Casos de Uso (3)


agenda dia

secretria
(agente)

agenda 2 dias

agenda semana

resgatar agenda do dia resgatar agenda da resgatar agenda 2 dias


semana

OU

resgatar agenda

agenda
secretria
(agente)

resgatar agenda do dia resgatar agenda da resgatar agenda 2 dias


semana

Descrio do caso
de uso (1) dados cadastro
Curso Normal
1. Paciente fornece dados para cadastro;

cadastrar paciente

2. O sistema verifica que o paciente no foi


cadastrado;

msg2

AtorPaciente

3. O sistema adiciona o paciente e emite Msg2 "Cliente


cadastrado."
Curso Alternativo
Caso 2: Paciente j cadastrado
2. O sistema verifica que o paciente j
cadastrado
2.1. O sistema emite a Msg2 "Cliente
cadastrado anteriormente."
2.2. Abandonar o use case.

Descrio do caso
Curso Normal
de
uso
(2)
1. O paciente solicita consulta para um
solicitao consulta

determinado dia;
2. O sistema abre a agenda do dentista e
mostra os horrios de atendimento para o
dia escolhido;
3. O paciente confirma o horrio escolhido
ao sistema;
4. O sistema solicita o nome do paciente;
5. O paciente informa o nome;
6. O sistema verifica que j existe o
cadastro do paciente;
7. O sistema agenda, no horrio e data
escolhidos, a consulta com este paciente;
8. O sistema emite a msg1 "Consulta
Agendada"

marcar consulta

AtorPaciente
msg1

Cursos Alternativos
Caso 2: Paciente deseja escolher horrios de
outro dia
3. O paciente deseja outro horrio
3.1. O sistema retorna ao passo 1;
Caso 3: Paciente ainda no foi cadastrado
6 O sistema verifica que o paciente no
cadastrado
6.1. O sistema inicia o use case cadastrar
paciente;
6.2. O sistema continua com o passo 7

Descrio do caso
de uso (3)
Curso Normal
descrio servios

1. O dentista fornece a solicitao de


registro de servios efetuados;
registrar servios
AtorDentista
2. O sistema solicita a identificao do
efetuados
dentista;
msg4
3. O dentista fornece sua identificao;
4. O sistema localiza a agenda do dentista;
Cursos Alternativos
5. O sistema solicita o horrio que foi
Caso 2: No existe consulta marcada no
realizado a consulta;
6. O dentista fornece o horrio da consulta; horrio fornecido
7.1. O sistema emite a msg4 "Nenhuma
7. O sistema localiza o horrio fornecido e
consulta foi realizada neste horrio."
obtm a consulta neste horrio;
7.2 O caso de uso finalizado.
8. O sistema solicita os dados do servio;
9. O dentista fornece os dados do servio
efetuado;
10. O sistema adiciona este servio
efetuado a consulta.
11. O sistema emite a msg4 "Servio
registrado."

Descrio do caso
de uso (4)
dados confirmao

AtorPaciente

confirmar consulta
msg3

Curso Normal
1. O paciente solicita a confirmao da consulta com o sistema;
2. O sistema verifica se existe uma consulta marcada para este
paciente;
3. O paciente confirma os dados;
3. O sistema altera a situao da consulta para confirmada;
4. O sistema emite a Msg3 "Consulta confirmada".

Classes

Para cada objeto que desejamos guardar informaes no sistema


ser criado uma classe
Analisamos os substantivos para obtermos os atributos das classes
Agenda

Paciente

Nome
RG

Consulta

Exame

Servio

Limpeza/Restaurao

Horrio

Endereo
Telefone
Data nascimento
Profisso

Hora
Data
Tipo de servio

Diagrama de Classes

Atravs da compreenso dos requisitos, criamos


relacionamentos entre as classes

Generalizao: um tipo de

Agregao: faz parte de/ composto por

Referncia: independncia de existncia

Valor: dependncia de existncia

Associao

Diagrama de classes
Paciente
nome
rg
endereo
telefone
data de nascimento
Profisso

consulta

Agenda
ano

0..n

1
formada por
n

Servio
descrio
preo

Limpeza/Restaurao
material usado
dente tratado

Consulta
histrico

realiza
0..n

0..n

Exame
medida preventiva
tipo de exame

marcada em
0..1

1..n

Horrio
data
hora

Diagrama de Seqncia

cadastrar paciente

(curso normal)

: Paciente

: AtorPaciente
dados paciente

cadastrar paciente( )
VerificarPacienteCadastrado()

msg2 "paciente cadastrado anteriormente"

Diagrama de Seqncia

cadastrar

paciente (curso alternativo)

: Paciente

: AtorPaciente
dados paciente

cadastrar paciente( )
VerificarPacienteCadastrado()

msg2 "paciente cadastrado anteriormente"

Diagrama de
Seqncia marcar consulta curso

: AtorPaciente

: Agenda

: Consulta

: Horrio

: Paciente

solicitao de consulta
AbrirAgenda( )
ObterHorariosDisponiveis( )

horrios disponveis

confirmao de horrio

AlterarDisponibilidadeHorrio( )

HorarioPreenchido
SolicitaodeNome

NomePaciente
VerificarPacienteCadastrado()
PacienteCadastrado

RegistarConsulta( )

normal

ConsultaRegistrada

msg1 "Consulta Agendada"

Diagrama de Classes
(atributos e mtodos)
Paciente
nome
rg
endereo
telefone
data de nascimento
Profisso

Agenda
consulta
0..n

VerificarPacienteCadastrado()
AdicionarPaciente()
ObterPaciente()
ObterConsulta()
AdicionarConsulta()
LocalizarPaciente()
CadastrarPaciente()

Servio
descrio
preo
RegistrarServio()
RecuperarServio()

Limpeza/Restaurao
material usado
dente tratado

ano

formada por

n
Horrio

Consulta
realiza
0..n

0..n

AbrirAgenda()
ResgatarAgendaDia()
ResgatarAgenda2Dias()
ResgatarAgendaSemana()
1

histrico

marcada em

RegistarConsulta()
RecuperarHistricoConsulta()

0..1

Exame
medida preventiva
tipo de exame

1..n

data
hora
ObterHorariosDisponiveis()
AlterarDisponibilidadeHorrio()

Pousada
O gerente de uma pousada deseja um sistema para gerenciar as reservas.
Quando um cliente potencial deseja fazer uma reserva, o sistema verifica se existem
quartos disponveis no perodo, e em caso positivo, o sistema solicitar os dados do
cliente (nome, endereo, telefone).
O sistema tambm deve armazenar sobre a reserva a data prevista para entrada, data
prevista para sada, valor do desconto concedido e o nmero de quartos.
Cada quarto possui um preo e uma descrio. No h frigobar. Nem sevios de quarto.
As reservas so garantidas atravs do pagamento de uma diria.
Caso o cliente no efetue este pagamento at trs dias antes da data prevista de
entrada, a reserva cancelada pelo sistema. Um relatrio de reservas canceladas
gerado pelo sistema diariamente. Outros relatrios dirios so o relatrio de reservas
no pagas e o relatrio sobre as reservas a serem efetivadas no dia.
O gerente tambm deseja que o sistema imprima um relatrio de reservas dado um
determinado perodo.

Substantivos
Atributos
Atores
Cliente
Objetos
Cliente
Quarto
Reserva
pagame
nto

Nome
Endereo
Telefone
Nmero
Preo
Descrio
Perodo
Desconto
Situao
Valor
Situao

Verbos de ao

Funes do sistema

(cliente) fazer reserva

Mtodos

+ genricos

use case

(sistema) verificar disponibilidade de quartos


(sistema) solicitar dados do cliente
(sistema) armazenar dados da reserva

(sistema) gerar relatrio de reservas


canceladas diariamente

(cliente) efetuar o pagamento da reserva (sistema) gerar relatrio de reservas no


(sistema) cancelar a reserva

pagas diariamente
(sistema) gerar relatrio de reservas a
serem efetivadas no dia
(gerente) solicitar relatrio de reservas
para um perodo
(sistema) gerar relatrio de reservas para
um perodo

Tabela de Eventos
n

descrio

entrada

sada

Use case

Cliente faz reserva

Solicitao
Reserva

Msg1

Fazer reserva

Cliente paga reserva

Dados Pagamento
Reserva

Msg2

Confirmar reserva

hora de verificar reservas


no pagas

(08:00 hs)

Relatrio de
reservas no pagas

Imprimir Relatrio de
Reservas no Pagas

hora de cancelar reservas


no pagas com datas de
pagamento terminadas

(12:00 hs)

Relatrio de
reservas canceladas

Imprimir Relatrio de
Reservas Canceladas

hora de imprimir reservas


para hoje

(12:00 hs)

Relatrio Reservas
para Hoje

Imprimir Relatrio de
Reservas para Hoje

Gerente consulta reservas


para para um perodo

perodo

Reservas no perodo

Consultar Reservas no
Perodo

Msg1 = Reserva efetuada


Msg2 = Reserva garantida

Caso de Uso (1)


dados pagamento reserva

solicitao reserva

AtorCliente

FazerReserva
msg1

ConfirmarReserva
msg2

Caso de uso (2)


relatrio reservas no pagas

ImprimirRelatrio
ReservasNoPagas

relatrio reservas canceladas

AtorGerente

ImprimirRelatrio
ReservasCanceladas

dados consulta reservas no perodo

ImprimirRelatrioReservasHoje

AtorGerente

relatrio de reservas para hoje

ConsultarReservasPerodo
reservas no perodo

Descrio do caso de
Curso Normal
uso
(1)
1. O cliente solicita uma reserva para um perodo;
solicitao reserva

2. O sistema localiza todos os quartos, verifica quais


quartos esto disponveis no perodo fornecido;
3. O sistema apresenta os quartos disponveis ao cliente;
4. O cliente escolhe os quartos desejados e solicita ao
sistema que os reserve;
5. O sistema calcula o valor do desconto em funo da
quantidade de quartos desejados, apresentando o valor
ao cliente;
6. O cliente fornece seus dados;
7. O sistema cadastra o cliente;

AtorCliente

FazerReserva
msg1

Cursos Alternativos
Caso 2: no existe quarto disponvel no
perodo fornecido pelo cliente

8. O sistema efetiva a reserva para este cliente;

3. O sistema emite a Msg1 "Todos os


quartos esto reservados neste perodo.

9. O sistema emite msg1 "reserva efetuada".

3.1. O caso de uso finalizado.

Descrio do caso de
uso (2)
dados pagamento reserva

AtorCliente

ConfirmarReserva
msg2

Curso Normal
1. O Cliente fornece os dados do pagamento da reserva;
2. O sistema registra o pagamento da reserva;
3. O sistema emite msg2 "Reserva garantida"

Descrio do caso de
uso (3)
relatrio reservas canceladas

AtorGerente

ImprimirRelatrio
ReservasCanceladas

Curso Normal
1. O sistema lista todas as reservas;
2. Para cada reserva:
2.1. o sistema verifica se o pagamento da reserva foi realizado;
2.2. Caso no tenha sido realizado, O sistema verifica se o tempo para garantir a
reserva atravs do pagamento expirou;
2.3. Caso o tempo tenha expirado, o sistema cancela esta reserva e adiciona a reserva
no relatrio.
3. O relatrio de reservas canceladas entregue ao gerente.

Diagrama de Classes
Quarto
preo
descrio
nmero

Reserva
data entrada
data sada
desconto

1..*
1
reserva

garante

0..1
Cliente
nome
endereo
telefone

0..1
faz
1

0..1

Pagamento
valor
situao

Diagrama de Seqncia
fazer reserva (curso normal)
: AtorCliente

: Reserva

: Quarto

solicitao reserva
ListarQuartos( )
nro dos quartos
VerificarDisponibilidade( )
quartos disponveis
quartos selecionados
CalcularDesconto( )
desconto concedido
dados para reserva
CadastrarCliente( )
Cliente cadastrado
FazerReserva( )
msg1"reserva efetuada"

: Cliente

Diagrama de
Seqncia -

fazer reserva (curso

alternativo)
: AtorCliente

: Reserva

: Quarto

solicitao reserva
ListarQuartos( )
nro dos quartos
VerificarDisponibilidade( )

msg1 "Todos os quartos esto reservados neste perodo"

Diagrama de
Seqncia -

confirmar reserva (curso

normal)

: AtorCliente

: Pagamento

dados pagamento reserva


RegistrarPagamento( )
msg2 "Reserva garantida"

Diagrama de
Seqncia

imprimir relatrio reservas

: AtorGerente
canceladas

: Reserva

(curso normal)

: Pagamento

ListarTodasReservas( )
VerificarPagamento( )
pagamento no efetuado

VerificarTempoParaGarantirReservaExpirou( )
"expirou"
CancelarReserva( )
AdicionarReservaRelatrio( )
relatrio de reservas canceladas

Diagrama de Classe
Reserva
Quarto
preo
descrio
nmero

data entrada
data sada
desconto
VerificarDisponibilidade()
CalcularDesconto()
FazerReserva()
ListarTodasReservas()
AdicionarReservaRelatrio()
VerificarTempoParaGarantirReservaExpirou()
CancelarReserva()
1

ListarQuartos()
1..*

reserva

garante

0..1

0..1
Cliente
nome
endereo
telefone
CadastrarCliente()

Pagamento
valor
situao

faz
1

0..1

RegistrarPagamento()
VerificarPagamento()