Você está na página 1de 80

Anlise de Sistemas Orientados a Objetos

Prof. Tiago Eugenio de Melo


tiago@comunidadesol.org

www.tiagodemelo.info
Roteiro
Conceitos de Orientao a Objetos (OO)
Viso Geral da UML
Diagrama de Classes
Diagramas de Casos de Uso

2
Conceitos de Orientao a Objetos
Histrico da OO
SmallTalk foi a primeira linguagem OO desenvolvida no
incio da dcada de 1970.
Outras linguagens:
C++
Object Pascal
Eiffel
Java

3
Conceitos de Orientao a Objetos
Principais conceitos:
Objeto
Classes
Encapsulamento
Herana
Polimorfismo

4
Exerccios
Identifique classes com seus atributos dos seguintes
contextos:
Numa turma de um curso de especializao, temos
disciplinas ministradas em salas diferentes.
Est passando na rede de cinemas ArtFilme o filme
Jogos2, todos os dias, em trs sesses por dia. Aos
sbados e domingos existem em algumas sesses duas
salas de exibio.
Se dois desenvolvedores modelarem uma mesma classe
X para sistemas distintos, obrigatoriamente as classes
tero os mesmos atributos e operaes? Por que?
Qual a diferena entre operaes e mtodos?

5
Viso Geral da UML
Histrico da UML
Evoluo das metodologias de desenvolvimento.
Anlise e projeto estruturado (Yourdon, 1979).
Metodologias OO (Booch, 1991; OMT, Rumbaugh;
Jacobson, 1992).
A UML formada a partir das metodologias desses trs
autores.
O incio da unificao foi em 1994.
A verso inicial foi a 0.9 em 1996.
Em janeiro de 1997 a Rational lanou a verso 1.0 da UML.
Ainda neste ano a proposta foi aceita pela OMG (Object
Management Group).
No ano de 2000 foi lanada a UML 2.0.
6
Viso Geral da UML
O que UML?
Linguagem visual para modelar sistemas de software.
Objetivo da UML?
Simplificar e consolidar mtodos j conhecidos.
Caractersticas?
No proprietria.
Tem propsito geral (especificar, visualizar, construir e
documentar).
independente do processo de desenvolvimento.

7
Viso Geral da UML
Quais so os aspectos abordados pela UML?
Aspectos estticos
Tipos de objetos e relacionamentos entre eles.
Aspectos dinmicos
Evoluo dos objetos no tempo e interao entre eles.
Aspectos do ambiente
Aspectos organizacionais
Particionamento de grandes sistemas.
Representao de decises de implementao.
Implantao do sistema (organizao em tempo de
execuo).

8
Exerccios
O que a UML?
A UML pode ser empregada para documentao de
sistemas?
Quais so os propsitos da UML?

9
Diagrama de Classes
Conceitos Gerais
Visibilidade
Identifica por quem uma propriedade (atributo ou operao)
pode ser utilizada.
Resumo das visibilidades possveis:
+ ou public (pblico)
# ou protected (protegido)
- ou private (privado)
~ ou package (pacote)

Exemplo:

10
Diagrama de Classes
Conceitos Gerais:
Multiplicidade
Indica a faixa de cardinalidade permitida a um elemento, isto
, a quantidade de instncias possveis em um
relacionamento.
As multiplicidades mais comuns so:
0..1 (valor opcional).
1 ou 1..1 (exatamente um).
* ou 0..* (qualquer valor inteiro no-negativo).
1..* (qualquer valor inteiro positivo).

11
Diagrama de Classes
Conceitos Gerais:
Exemplo de multiplicidade

12
Diagrama de Classes
Conceitos Gerais:
Esteretipo
um mecanismo de extensibilidade da UML que representa
uma subclasse de um elemento j existente com o mesmo
formato porm com objetivos diferentes e bem definidos.
usado geralmente quando se deseja distinguir um uso
especfico para elemento.
O esteretipo possui a mesma representao grfica do
elemento, sendo colocado seu nome entre guillemets (<< >>).
Exemplo:

13
Diagrama de Classes
Conceitos Gerais:
Notas
um smbolo grfico contendo informao textual.
Exemplo:

14
Diagrama de Classes
Conceitos Gerais:
Restries (constraints)
As restries podem aparecer em diversos elementos da
UML.
Uma restrio mostrada como um texto entre chaves.
Exemplo:
{valor>1000,00}

15
Diagrama de Classes
Criando Diagramas de Classe
Exemplo

16
Diagrama de Classes
Criando Diagramas de Classe
Atributos
Alm do nome e do tipo, podemos tambm definir o valor
inicial, a visibilidade e outras caractersticas dos atributos.
O tipo do atributo pode corresponder ao nome de uma classe
ou ser um tipo dependente da linguagem de programao
adotada.
Exemplo de um atributo com valor inicial igual a HP e com
escopo esttico.

17
Diagrama de Classes
Criando Diagramas de Classe
Atributos
Um atributo tambm pode ser derivado. Este representado
atravs de uma barra (/) frente do nome.
Exemplo:

18
Diagrama de Classes
Criando Diagramas de Classe
Operaes
Assim como os atributos, a modelagem das operaes no se
limitam a seu nome e parmetros.
A visibilidade pode ser representada pelas palavras-chaves
public, protected ou private.
A lista de parmetros corresponde a uma lista separada por
vrgula, conforme o padro:
escopo-parmetro nome: tipo = valor-default
O escopo do parmetro pode assumir os valores:
in: o parmetro apenas de entrada, no aceitando
modificaes.
out: o parmetro apenas de sada, no aceitando leitura.
inout: o parmetro de entrada e sada. Aceita leitura e
modificao.
19
Diagrama de Classes
Criando Diagramas de Classe
Operaes
O parmetro tambm pode ter um valor-default.
necessrio indicar se haver ou no retorno da funo.
A operao ainda pode ser ou no abstrata. Para indicar que
a operao abstrata, esta deve ser marcada como {abstract}
ou a assinatura da operao em itlico.
Exemplo:

20
Diagrama de Classes
Relacionamentos
As classes dentro do contexto da modelagem de um
sistema, na sua maioria, no trabalham sozinhas.
No diagrama de classes temos os relacionamentos de
associao, generalizao e especializao.
Como variao do relacionamento de associao, ainda
possvel modelar relacionamentos de agregao e
composio.

21
Diagrama de Classes
Relacionamentos
Associao
um relacionamento que conecta duas (binria) ou mais
classes (n-ria), demonstrando a colaborao entre as
instncias de classe.
Exemplos de associao binria

22
Diagrama de Classes
Relacionamentos
Associao
Exemplo de associao ternria

23
Diagrama de Classes
Relacionamentos
Associao (adornos)
Nome da associao
Multiplicidade
Papel (role)
Navegabilidade
Qualificador

24
Diagrama de Classes
Relacionamentos
Generalizao
Exemplo:

25
Diagrama de Classes
Relacionamentos
Generalizao
Restries:
Sobreposio (overlapping).
Disjuno (disjoint).
Completo (complete).
Incompleto (incomplete).

26
Diagrama de Classes
Relacionamentos
Generalizao
Exemplo de uso de polimorfismo

27
Diagrama de Classes
Relacionamentos
Dependncia
Indica que uma mudana na interface de uma delas pode
causar mudanas na outra.
Por exemplo, troca de mensagens entre classes.
Exemplo:

28
Diagrama de Classes
Relacionamentos
Agregao
A agregao corresponde a um caso particular da associao,
utilizada para expressar um relacionamento todo-parte.
Exemplo:

29
Diagrama de Classes
Relacionamentos
Composio
uma variao da agregao.
A diferena com a agregao consiste no fato de que a classe
parte pertence s e somente classe todo, em um
determinado momento, no podendo fazer parte de outro
relacionamento de composio.
A classe composta responsvel pela criao e destruio de
suas partes.
Exemplo:

30
Diagrama de Classes
Outros conceitos
Enumerao
usada como tipo de dados nos diagramas de classes e
pode ser modelada separadamente como uma classe
esteriotipada como <<enumeration>>.
Exemplo:

31
Diagrama de Classes
Outros conceitos
Classe de associao
Representa uma associao que possui propriedades de
classes como atributos, operaes e outras associaes.
Ela possui elementos prprios.
Exemplo:

32
Diagrama de Classes
Classes abstratas
uma classe que no possui instncias diretas, apenas
suas classes descendentes.
Classes abstratas organizam caractersticas comuns a
diversas classes.
Exemplo:

33
Diagrama de Classes
Interface
Uma interface possui apenas operaes.
O relacionamento entre interface e classe feita atravs da
realizao.
Exemplo:

34
Diagrama de Classes
Utilitrio
um agrupador de variveis e procedimento globais
representados na forma de uma classe.
um recurso utilizado para fins de implementao, fazendo
com que variveis e procedimentos globais sejam
enxergados como atributos e operaes de uma classe.
Exemplo:

35
Exerccios
Qual a diferena entre composio e agregao? D um
exemplo.
O que caracteriza uma classe de associao? D um
exemplo.
Qual a diferena entre classes abstratas e interfaces?

36
Casos de Uso
O diagrama de casos de uso empregado para
representao e levantamento dos requisitos do usurio.
O levantamento de requisitos uma parte inicial do
desenvolvimento e ter influncia sobre todas as demais
etapas.

37
Casos de Uso
O que um caso de uso?
Descreve uma sequncia de aes que representam um
cenrio principal (perfeito) e cenrios alternativos, com o
objetivo de demonstrar o comportamento de um sistema (ou
parte dele), atravs de interaes com atores.
Exemplo:
Cenrio para emitir saldo em um terminal de caixa
eletrnico.
Cenrio principal e cenrio alternativo.
O caso de uso deve ser totalmente compreensvel tanto
para a equipe de desenvolvimento quanto para os clientes
que detm o conhecimento do sistema.

38
Casos de Uso
As aes dos casos de uso so mantidas pelos atores.
Um ator representa um conjunto de papis exercido por
um usurio do sistema ao interagir com um determinado
caso de uso.

39
Casos de Uso
Caso de Uso: Reserva em um Restaurante
Cenrio Principal
O cliente informa ao atendente a data da reserva, que
repassada ao sistema.
O sistema mostra o mapa do salo do restaurante,
indicando as mesas j reservadas e as que esto livres. O
sistema calcula e exibe o nmero de reservas ainda
disponveis.
Um ou vrios lugares disponveis (so) escolhido (s) para
reserva.
Um sistema solicita o CPF do cliente, para identificao do
mesmo no sistema. O sistema pesquisa o cliente e mostra
nome e telefones do contrato, para confirmao.
Aps confirmao, a reserva efetuada em nome do
cliente. 40
Casos de Uso
Cenrios Alternativos
Alternativa: Data no disponvel para reserva
O sistema verifica se para a data informada possvel efetuar
reservas. Caso negativo, uma nova data deve ser solicitada.
Alternativa: Reservas esgotadas
O sistema verifica se para o dia informado, as reservas esto
esgotadas. O sistema deve possibilitar que seja informada
nova data ou que se encerre a solicitao de reserva.
Alternativa: Cliente no cadastrado
Se o cliente no for cadastrado: Extend Cadastrar Cliente de
Reserva.

41
Casos de Uso
Relacionamento entre casos de uso e atores
Entre casos de uso:
Generalizao.
Extenso.
Incluso.
Entre relacionamentos de atores:
Generalizao.
Entre relacionamentos entre atores e casos de uso:
Associao.

42
Casos de Uso
Associao
Representa a interao do ator com o caso de uso, ou seja,
a comunicao entre atores e casos de uso, por meio do
envio e recebimento de mensagens.
As associaes so sempre binrias.
Exemplo:
O ator Correntista envia e recebe mensagens do Caso de Uso
CalcularEmprstimoPessoal, por um relacionamento de
associao.

43
Casos de Uso
Generalizao
Ocorre entre casos de uso ou entre atores.
considerado quando temos dois elementos semelhantes,
mas com um deles realizando algo a mais.
Exemplo:
Podemos criar um ator genrico Aluno e especializ-lo nos
atores Aluno Matriculado e Aluno Ouvinte.

44
Casos de Uso
Extenso (Extend)
Um relacionamento de extenso entre casos de uso indica
que um deles ter ser procedimento acrescido, em um
ponto de extenso, de outro caso de uso, identificado como
base.

45
Casos de Uso
Incluso (Include)
Indica que um deles ter seu procedimento copiado num
local especificado no outro caso de uso, identificado como
base.

46
Casos de Uso
Modelando requisitos com casos de uso
comum empregar os casos de uso na primeira etapa do
desenvolvimento de software.
Todos os casos de uso possuem nomes que o identificam e
diferenciam dos demais.
Normalmente so breves expresses representando a
essncia do que voc est modelando.

47
Casos de Uso
Criando diagramas de casos de uso
Os diagramas de casos de uso so usados para expressar
a fronteira do sistema, e/ou modelar os requisitos do
mesmo.
No obrigatria a construo de diagramas de casos de
uso.

48
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
O caso de uso representado por uma elipse contendo o seu
nome.
Exemplo:

49
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
O cone esteretipo padro para um ator a figura de um
stick man, contendo seu nome abaixo da figura.
Outra representao consiste num retngulo de classe, com o
esteretipo <<actor>>.
Exemplo:

50
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
A representao grfica de uma associao corresponde a
uma linha slida, ligando o caso de uso ao ator e vice-versa.
Exemplo:

51
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
Um relacionamento de incluso representado graficamente
por uma seta tracejada com a ponta aberta, que parte do caso
de uso base e contm o esteretipo <<include>>.
Exemplo:

52
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
Um relacionamento de extenso representado graficamente
por uma seta tracejada com a ponta aberta, que parte do caso
de uso estendido e contm o esteretipo <<extend>>.
Exemplo:

53
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
Um relacionamento de generalizao representado
graficamente pela seta de generalizao, que corresponde a
uma linha slida com uma nica fechada, mas no preenchida
em uma das pontas.
Exemplo:

54
Casos de Uso
Criando diagramas de casos de uso
Representao grfica:
O diagrama de caso de uso pode mostrar ainda a fronteira do
sistema que representada como um retngulo envolvendo
os casos de uso.
Exemplo:

55
Casos de Uso
Criando diagramas de casos de uso
Auxlio de pacotes
Em sistemas de mdia/alta complexidade comum termos
dezenas de caso de uso.
Nesse caso, a representao de todos eles em um nico
diagrama uma tarefa impossvel.
A fim de minimizar a visualizao e, principalmente, organizar
esses casos de uso considerando uma mesma abordagem
conceitual, podemos trabalhar com pacotes.

56
Casos de Uso
A importncia dos prottipos
Uso atual de ferramentas RAD.

57
Exerccios
O que voc entende por requisitos?
Quais so os tipos de requisitos?
Qual a diferena entre extenso e incluso nos casos de
uso?
Os atores dos casos representam pessoas? Explique a
sua resposta.
O que voc entende por fronteira do sistema?
Qual a vantagem no uso dos prottipos no
desenvolvimento de software?

58
Diagrama de Objetos
Diagrama de objetos consiste numa instncia do diagrama
de classes, no qual para cada classe temos um objeto em
um determinado ponto do tempo.
Representa uma fotografia do sistema em determinado
momento.
O diagrama de objetos pode ser empregado para:
Facilitar a modelagem de estruturas complexas de dados.
Auxiliar o desenvolvedor no momento de identificar
problemas na execuo de uma aplicao.
A representao grfica de um objeto similar de uma
classe, pois consiste num retngulo com um ou dois
compartimentos.
Exemplo:
59
Diagrama de Objetos
As instncias das classes, chamadas de objetos, so
representadas como classes, s que com o nome do
objeto sublinhado.

60
Diagrama de Objetos
No primeiro caso, temos
um objeto especfico do
mundo real, representando
o objeto Joo, da classe
Pessoa.
Tambm possvel usar a
forma abreviada :nome da
classe sem o nome do
objeto. Esta forma
conhecida como objeto
annimo (isto usado
quando todos os objetos
da classe tm o mesmo
comportamento).

61
Diagrama de Objetos
Comparao entre os diagramas de classes e de objetos

62
Diagrama de Objetos
Comparao entre os diagramas de classes e de objetos

63
Diagrama de Objetos
Exemplo de diagrama de objetos.
produto20: Produto
nome ="Caderno M"
descrio ="Caderno em espiral tamanho mdio"
preoUnitrio =4,50
desconto =15
item1 : ItemPedido
quantidade =6
Pedido1: Pedido produto12: Produto
dataIte
=Produto
mPe
Pe dido
dido
13/ 09/ 2002 nome ="Caneta ESF"
hora =10:00am item2 : ItemPedido descrio ="Caneta esferogrfica 5mm"
quantidade =20 preoUnitrio =1,20
desconto =2

item3 : ItemPedido produto07 : Produto


quantidade =1 nome ="Esquadro"
descrio ="Esquadro de acrlico 20cm"
preoUnitrio =2,35
desconto =10

64
Diagrama de Objetos
possvel tambm representar os atributos.
A notao nome_do_atributo: tipo = valor
Atributos cujos valores no sejam relevantes para a
modelagem podem ser omitidos.
O relacionamento entre objetos feito atravs de links.
Um link uma instncia de uma associao.

65
Diagrama de Objetos
Exemplo:

66
Exerccios
Qual a importncia do diagrama de objetos na anlise
de sistemas?
possvel representar as operaes das classes nos
diagramas de objetos? Justifique a sua resposta.
Desenhe um diagrama de objetos para uma classe
chamada Aluno.

67
Diagrama de Pacotes
Os pacotes so empregados para organizar seus
elementos de modelagem em conjuntos maiores que
possam ser manipulados como grupos.
Os pacotes bem estruturados so fracamente acoplados
em forte coeso, com acesso altamente controlado ao
contedo do pacote.
O uso de pacotes favorece a modularidade.
Um diagrama de pacotes mostra pacotes e relaes entre
estes.

68
Diagrama de Pacotes
A notao de pacote em UML uma pasta com o nome
no interior ou na aba.
No caso de um pacote dentro de outro, pode ser
representado pelo nome completo do pacote contido que
inclui o nome do seu contenedor.

nome do
pacote

Client
Client Sensors::Vision

69
Diagrama de Pacotes
Existem os seguintes tipos de pacotes:
Pacotes de classes (pacotes lgicos) em diagramas de
classes.
Pacotes de componentes em diagrama de componentes.
Pacotes de ns em diagramas de distribuio.
Pacotes de casos de utilizao em diagramas de casos de
utilizao.

70
Diagrama de Pacotes
Pacotes lgicos
Um pacote lgico (ou mdulo lgico) um agrupamento
lgico de classes e relaes entre essas classes.
Corresponde ao conceito de packageem Java ou de
namespace em C++.
Um pacote lgico pode estar distribudo em vrios arquivos.
Os diagramas de pacotes lgicos so empregados para
modelar a arquitetura lgica de um sistema de software
(organizao em mdulos lgicos e especificao de
interfaces e dependncia entre mdulos).

71
Diagrama de Pacotes
Contedo de pacote
Uma vez que representa um agrupamento, um pacote
formado por diversos elementos: classes, interfaces,
componentes, ns, colaboraes, casos de uso, diagramas
e at outros pacotes.
Esses elementos podem ser indicados no interior do pacote,
na forma de uma lista de nomes ou diagrama.

Client Client
+ OrderForm + OrderForm
+ TrackingForm - Order
- Order + TrackingForm

72
Diagrama de Pacotes
A visibilidade dos elementos contidos num pacote:
Pode-se indicar a visibilidade dos elementos:
+ (pblico) : visvel por todos que importam ou acedem ao
pacote (nomes sem :: no 1 caso, com :: no 2 caso)
# (protegido): visvel s pelos pacotes-filhos (por relao de
generalizao - ver adiante)
- (privado): visvel s por outros elementos do pacote

73
Diagrama de Pacotes
Dependncia entre pacotes
Dependncia simples: uma alterao no pacote de destino
afeta o pacote de origem (dependente) (informao til para
controle de informaes).
Dependncia com esteretipo <<access>>: o pacote de
origem (dependente) acessa a elementos exportados pelo
pacote de destino (precisa de :: nos nomes).
Dependncia com esteretipo <<import>>: o pacote de
origem (dependente) importa os elementos exportados pelo
pacote de destino (no precisa de :: nos nomes).

Client GUI
+ OrderForm + Window
+ TrackingForm + Form
import
- Order # EventHandler

74
Diagrama de Pacotes
Generalizao de pacotes
Usada para especificar famlias de pacotes relacionados por
herana
GUI
+ Window
+ Form
# EventHandler
herda sem
alterao (default)
WindowsGUI
substitui + GUI::Window
(overrides) o + Form MacGUI
elemento Form de # GUI::EventHandler
GUI +VBForm
adicionado
herda os elementos pblicos e protegidos de
GUI
75
Diagrama de Pacotes
system - pacote que representa o sistema completo que est a
ser modelado (incluindo todos os modelos e elementos dos modelos)
subsystem - pacote que representa uma parte independente de
sistema completo que est a ser modelado; corresponde
normalmente a um corte "vertical"
facade (fachada) - pacote que constitui uma vista sobre outro
pacote (no acrescenta funcionalidades, apenas apresenta de forma
diferente)
framework (infra-estrutura aplicacional) - pacote que representa
um conjunto de classes abstractas e concretas concebido para ser
estendido, implementando a funcionalidade tpica de um determinado
domnio de aplicao
stub - pacote que serve como proxy para o contedo pblico de
outro pacote
layer - pacote que representa uma camada horizontal de um
sistema

76
Diagrama de Pacotes
Composio de pacotes
Sub-pacotes podem ser indicados dentro do pacote-dono ou
com relaes de composio.

system
Retail Enterprise System

subsystem subsystem subsystem


Customer In Store Warehouse
Service Management Management
subsystem subsystem subsystem

Neste exemplo segue-se uma diviso vertical, por subsistemas!

77
Diagrama de Pacotes
Composio de pacotes

system
Retail Enterprise
System
layer
Graphical User Interface
Retail Enterprise System - GUI

layer
Retail Enterprise System - BL Business Logic

layer
Database
Retail Enterprise System - DB

Neste exemplo segue-se uma diviso horizontal, por camadas!

78
Exerccios
Qual a diferena entre pacotes e classes?
Qual a importncia do uso dos diagramas de pacotes?

79
Referncias
Booch, Grady & Rumbaugh, James & Jacobson, Ivar.
UML Guia do Usurio. Rio de Janeiro: Campus, 2000.
Melo, Ana Cristina. Desenvolvendo Aplicaes com
UML 2.0. Rio de Janeiro: Brasport, 2004.

80

Você também pode gostar