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

Anlise e Projeto OO

Modelagem de Classes
Prof. David Zanetti
Introduo
Funcionalidades de um Software OO colaboraes (comunicao)
entre objetos.

Essa colaborao pode ser vista sob o aspecto dinmico e sob o


aspecto estrutural esttico.

O modelo de objetos representa o aspecto estrutural e esttico dos


objetos que compem um Software OO.
diagrama de classes
diagrama de objetos
Introduo
Na prtica:
Diagrama de classes mais utilizado.

Evolui durante o desenvolvimento do SSOO.

Trs nveis sucessivos de detalhamento:

Anlise Especificao (Projeto) Implementao.


Modelagem de Classes de Anlise

Modelagem de classes de anlise responde:


Que objetos constituem o sistema em questo?

Quais so as classes candidatas?

Como as classes do sistema esto relacionadas entre si?

Quais so as responsabilidades de cada classe?


Modelo de Classes de Anlise

Representa termos do domnio do negcio.


Dicionrio visual de conceitos e informaes
relevantes ao sistema.
Duas etapas: modelo conceitual (modelo de domnio)
e modelo da aplicao.
Notaes normalmente usados :
Classes e atributos; associaes, composies e
agregaes (com seus adornos); classes de associao;
generalizaes (herana).
Modelo de Anlise: Foco no Problema!

O modelo de anlise no representa


detalhes da soluo do problema.
Venda Anlise
Pagamento data
1 Pago-por 1
quantia hora

Projeto (Especificao)
Venda
Pagamento -data:Date
1 Pago-por 1
-hora:Time
-quantia: Currency
+getTotal():Currency
+getValor(): Currency
Classes
Descrevem objetos atravs de atributos e operaes.
Atributos correspondem s informaes que um objeto armazena.
Operaes correspondem s aes que um objeto sabe realizar.

Notao na UML: caixa com no mximo trs


compartimentos exibidos.
Exemplo (classe ContaBancria)
Associaes

Uma associao representa relacionamentos (ligaes) que so


formados entre objetos durante a execuo do sistema.

Embora as associaes sejam representadas entre classes do


diagrama, tais associaes representam ligaes possveis
entre os objetos das classes envolvidas.
Notao para Associaes

Representadas por uma linha que liga as


classes cujos objetos se relacionam.

Exemplos:
Multiplicidades
Representam a informao dos limites inferior e superior da
quantidade de objetos aos quais outro objeto pode se associar.

Cada associao em um diagrama de classes possui duas


multiplicidades, uma em cada extremo da linha de associao.

Nome Simbologia na UML


Apenas Um 1..1 (ou 1)
Zero ou Muitos 0..* (ou *)
Um ou Muitos 1..*
Zero ou Um 0..1
Intervalo Especfico li..ls
Exemplos (multiplicidade)

Exemplo
Pode haver um cliente que esteja associado a vrios pedidos.
Pode haver um cliente que no esteja associado a pedido algum.
Um pedido est associado a um, e somente um, cliente.

Exemplo
Uma corrida est associada a, no mnimo, dois velocistas
Uma corrida est associada a, no mximo, seis velocistas.
Um velocista pode estar associado a vrias corridas.
Conectividade
A conectividade corresponde ao tipo de associao entre duas
classes: muitos para muitos, um para muitos e um para um.

A conectividade da associao entre duas classes depende dos


smbolos de multiplicidade que so utilizados na associao.

Conectividade Em um extremo No outro extremo


Um para um 0..1 0..1
1 1
Um para muitos 0..1 *
1 1..*
0..*
Muitos para muitos * *
1..* 1..*
0..* 13 0..*
Exemplo (conectividade)
Participao
Caracterstica de associaes que indica a
necessidade (ou no) da existncia desta associao
entre objetos.

Pode ser obrigatria ou opcional.


Se o valor mnimo da multiplicidade de uma associao
igual a 1 (um), significa que a participao obrigatria
Caso contrrio, a participao opcional.
Acessrios para Associaes

Para melhor esclarecer o significado de uma associao no


diagrama de classes, a UML define trs recursos de notao:
Nome da associao: fornece algum significado semntico a
mesma.
Direo de leitura: indica como a associao deve ser lida
Papel: para representar um papel especfico em uma
associao.
Classe associativa

uma classe que est ligada a uma associao, em vez de


estar ligada a outras classes.

normalmente necessria quando duas ou mais classes


esto associadas, e necessrio manter informaes sobre
esta associao.

Uma classe associativa pode estar ligada a associaes de


qualquer tipo de conectividade.

Sinnimo: classe de associao


Notao para Classes Associativas

Semelhante utilizada para classes ordinrias. A diferena que


esta classe ligada a uma associao por uma linha tracejada.

Exemplo: para cada par de objetos [pessoa, empresa], h duas


informaes associadas: salrio e data de contratao.
Associaes reflexivas

Associao entre objetos que pertencem a uma mesma classe.


No indica que um objeto se associa a ele prprio.

A definio de papis importante para evitar ambigidades.


Cada objeto tem um papel distinto na associao.
Agregaes e Composies

Relao todo-parte entre dois objetos indica que um


dos objetos est contido no outro.

Podemos tambm dizer que um objeto contm o outro.

Dois tipos de relacionamentos todo-parte:


Agregao
Composio
Agregaes e Composies

Caractersticas:
So assimtricas, no sentido de que, se um objeto A parte de
um objeto B, o objeto B no pode ser parte do objeto A.
Propagam comportamento, no sentido de que um
comportamento que se aplica a um todo automaticamente se
aplica s suas partes.
As partes so normalmente criadas e destrudas pelo todo. Na
classe do objeto todo, so definidas operaes para adicionar e
remover as partes
Agregaes e Composies

Se uma das perguntas a seguir for respondida


com um sim, provavelmente h uma
agregao onde X todo e Y parte.
X tem um ou mais Y?

Y parte de X?
Exemplos

23
Agregao X Composio

Distino entre associao e agregao


geralmente semntica.

Uma agregao uma soma de todas as partes.

Uma composio apropriada quando cada parte


possuda por um nico objeto e a parte no
possui uma vida independente do seu dono.
Generalizaes e Especializaes

Classes podem ser organizada hierarquicamente.

Esse o chamado relacionamento de herana.


relacionamento de generalizao/especializao

Uma hierarquia em OO significa que classes especializadas herdam as


caractersticas e comportamento das classes genricas

Propriedades:
Assimetria: Se A herda de B, ento B no pode herdar de A
Transitividade: Uma classe em uma hierarquia herda propriedades e relacionamentos de
todos os seus ancestrais
Generalizaes e Especializaes
Herana de Associaes

No somente atributos e operaes, mas tambm


associaes so herdadas pelas subclasses.
No exemplo abaixo, cada subclasse est associada a
Pedido, por herana.
Refinamento do Modelo

Critrios a avaliar na criao de subclasses:


A subclasse tem atributos adicionais.

A subclasse tem associaes.

A subclasse manipulada (ou reage) de forma


diferente da superclasse.
Tipos de herana
Com relao quantidade de superclasses que certa classe pode ter.
herana mltipla

herana simples

Com relao forma de reutilizao envolvida.


Na herana de implementao, uma classe reusa alguma implementao de
um ancestral.

Na herana de interface, uma classe reusa a interface (conjunto das


assinaturas de operaes) de um ancestral e se compromete a implementar
essa interface.
Classes Abstratas
Classes que no geram instncias diretas.

Utilizadas para organizar e simplificar uma hierarquia de


generalizao.
Propriedades comuns a diversas classes podem ser organizadas e
definidas em uma classe abstrata a partir da qual as primeiras herdam.

Subclasses de uma classe abstrata tambm podem ser abstratas,


mas a hierarquia deve terminar em uma ou mais classes concretas.
Notao para classes abstratas

Representada com o seu nome em itlico.


Interfaces
Compreende um conjunto de assinaturas de operaes
correspondentes aos servios dos quais a classe do objeto
cliente faz uso.

Uma interface pode ser interpretada como um contrato de


comportamento entre um objeto cliente e eventuais
objetos fornecedores de um determinado servio.
Interfaces
Interfaces so utilizadas com os seguintes objetivos:
Capturar semelhanas entre classes no relacionadas sem
forar relacionamentos entre elas.
Declarar operaes que uma ou mais classes devem
implementar.
Revelar as operaes de um objeto, sem revelar a sua classe.
Facilitar o desacoplamento entre elementos de um sistema.
Interfaces (cont)

Notaes para representar interfaces na UML:


Diagrama de objetos
Diagrama de objetos
Pode ser visto com uma instncia de diagramas de classes

Representa uma fotografia do sistema em um certo momento.


exibe as ligaes formadas entre objetos conforme estes interagem e
os valores dos seus atributos.

Formato Exemplo
nomeClasse Pedido

nomeObjeto: NomeClasse umPedido: Pedido


Exemplo

produto20 : Produto
nome = "Caderno M"
descrio = "Caderno em espiral tamanho mdio"
preoUnitrio = 4,50
desconto = 15
item1 : ItemPedido
quantidade = 6
Pedido1 : Pedido produto12 : Produto
dataItemPedido
Produto
=Pedido
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 20 cm"
preoUnitrio = 2,35
desconto = 10
Exemplo

Joo : Empregado Rafaela : Empregado

Antnio : Empregado
Aline
Empregado
: Empregado
Jos : Empregado Lucas : Empregado

Maria : Empregado
Tcnicas para identificao de
classes
Identificao de Classes

Apesar de todas as vantagens que a OO pode trazer


ao desenvolvimento de software, um problema
fundamental ainda persiste: identificar corretamente
e completamente objetos (classes), atributos e
operaes.
Tcnicas de Identificao

Tcnicas usadas para identificar classes:


Categorias de Conceitos

Anlise Textual de Abbott (Abbot Textual Analysis)

Anlise de Casos de Uso

Padres de Anlise (Analisys Patterns)

Identificao Dirigida a Responsabilidades


Categorias de Conceitos
Estratgia: usar uma lista de conceitos comuns.
Conceitos concretos. Por exemplo, edifcios, carros, salas de aula, etc.

Papis desempenhados por seres humanos. Por exemplo, professores, alunos, empregados,
clientes, etc.

Eventos, ou seja, ocorrncias em uma data e em uma hora particulares. Por exemplo,
reunies, pedidos, aterrisagens, aulas, etc.

Lugares: reas reservadas para pessoas ou coisas. Por exemplo: escritrios, filiais, locais de
pouso, salas de aula, etc.

Organizaes: colees de pessoas ou de recursos. Por exemplo: departamentos, projetos,


campanhas, turmas, etc.

Conceitos abstratos: princpios ou idias no tangveis. Por exemplo: reservas, vendas,


inscries, etc.
Anlise Textual de Abbott
Estratgia: identificar termos da narrativa de casos de uso e documento de requisitos
que podem sugerir classes, atributos, operaes.

Neste tcnica, so utilizadas diversas fontes de informao sobre o sistema:


documento e requisitos, modelos do negcio, glossrios, conhecimento sobre o
domnio, etc.

Para cada um desses documentos, os nomes (substantivos e adjetivos) que


aparecem no mesmo so destacados. (So tambm consideradas locues
equivalentes a substantivos.)

Aps isso, os sinnimos so removidos (permanecem os nomes mais significativos


para o domnio do negcio em questo).
Anlise Textual de Abbott

Cada termo remanescente se encaixa em uma das situaes a seguir:


O termo se torna uma classe (ou seja, so classes candidatas);

O termo se torna um atributo;

O termo no tem relevncia alguma com ao SSOO.

Identificao de operaes e de associaes.


Verbos de ao (e.g., calcular, confirmar, cancelar, comprar, fechar, estimar, depositar,
sacar, etc.) so operaes em potencial.

Verbos com sentido de ter so potenciais agregaes ou composies.

Verbos com sentido de ser so generalizaes em potencial.

Demais verbos so associaes em potencial.


Anlise de Casos de Uso
Tambm chamada de identificao dirigida por casos de uso, e um caso
particular da ATA.

Tcnica preconizada pelo Processo Unificado.

Faz-se a leitura de cada caso de uso buscando potenciais classes

Categorizao BCE: agrupamento de objetos


Objetos de Entidade : esteretipo <<entity>>

Objetos de Fronteira : esteretipo <<boundary>>

Objetos de Controle : esteretipo <<control>>


Objetos de Entidade

Repositrio para informaes e as regras de negcio manipuladas pelo


sistema.
Representam conceitos do domnio do negcio.

Caractersticas
Normalmente armazenam informaes persistentes.
Vrias instncias da mesma entidade existindo no sistema.
Participam de vrios casos de uso e tm ciclo de vida longo.

Exemplo:
Um objeto Pedido participa dos casos de uso Realizar Pedido e Atualizar Estoque.
Este objeto pode existir por diversos anos ou mesmo tanto quanto o prprio sistema.
Objetos de Fronteira
Realizam a comunicao do sistema com os atores.
traduzem os eventos gerados por um ator em eventos relevantes ao sistema eventos de
sistema.

tambm so responsveis por apresentar os resultados de uma interao dos objetos em algo
inteligvel pelo ator.

Existem para que o sistema se comunique com o mundo exterior.


Por conseqncia, so altamente dependentes do ambiente.

H dois tipos principais de objetos de fronteira:


Os que se comunicam com o usurio (atores humanos): relatrios, pginas HTML, interfaces
grfica desktop, etc.

Os que se comunicam com atores no-humanos (outros sistemas ou dispositivos): protocolos de


comunicao.
Objetos de Controle
So a ponte de comunicao entre objetos de fronteira e objetos de
entidade.

Responsveis por controlar a lgica de execuo correspondente a um caso


de uso.

Decidem o que o sistema deve fazer quando um evento de sistema ocorre.


Eles realizam o controle do processamento

Agem como gerentes (coordenadores, controladores) dos outros objetos para a


realizao de um caso de uso.