Vous êtes sur la page 1sur 96

UML

http://www.uml.org/#UML2.0
Aula de Luiz Eduardo Guarino de Vasconcelos
Objetivos
Histria
Tecnologia OO
UML
Pacotes
Diagrama de Classe
Atributos
Mtodos
Visibilidade
Histria
60, 70
COBOL, FORTRAN, C
Mtodos de Anlise e Projeto Estruturado
80 incio 90s
Smalltalk, ADA, C++, Object Pascal
Gerao dos mtodos OO
90: Incio de atrao por OO
Java, UML, Unified Process
Proliferao de Mtodos de Desenvolvimento OO
Tecnologia OO
Mais do que um Modo de Programar
Modo de pensar abstrato sobre um domnio de
problemas
usa conceitos do mundo real ao invs de
conceitos computacionais
Baseada em construes chamadas objetos,
proporciona um paradigma evolucionrio para:
criar modelos do mundo real em computador
usar estes modelos para simular o mundo real
Transio difcil para algumas pessoas
Como surgiu OO?
94: Parceria de metodologistas:
Booch (Booch Method) e Rumbaugh (OMT)
Busca de Unified Method (UM)
95: Rational compra Objective Systems de
Jacobson (Objectory OOSE)
parceria Booch/Rumbaugh estendida com
Jacobson
Unified Modeling Language (UML) ao invs de
UM)
98: Reengenharia de livros, mtodos e cases
OO para incluir UML
O que UML?
um padro aberto
verso 1.1 aprovada pelo OMG (Object
Management Group) em Novembro de 1997
verso 1.3 aprovada em Junho de 1999
1.4, 2.0, 2.2 (2009), 2.4 (Mar 2011)
Suporta todo o ciclo de vida do software
modelagem do negcio (processos e objetos do
negcio)
modelagem de requisitos alocados ao software
modelagem da soluo de software
Parceiros da UML
Rational Software
Corporation
HewlettPackard
Ilogix
IBM
ICON Computing
Intellicorp
MCI Systemhouse
Microsoft
ObjecTime
Oracle
Platinum Technology
Taskon
Texas
Instruments/Sterling
Software
Unisys
Modelos e Diagramas
Modelos
Diagramas de Casos de Uso
Diagramas de Classes
Diagramas de Objetos
Diagramas de Componentes
Diagramas de Distribuio
Diagramas de Sequncia
Diagramas de Colaborao
Diagramas de Estados
Diagramas de Atividades
http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML
UML
DIAGRAMA DE CASO
DE USO
Aula de Luiz Eduardo Guarino de Vasconcelos
Diagramas de Caso de Uso
Facilitam o entendimento de um sistema
mostrando a sua viso externa
So usados para modelar o contexto de um
sistema, subsistema ou classe
Uma das maneiras mais comuns de
documentar os requisitos do sistema (as
funcionalidades)
Delimitam o Sistema
Definem a funcionalidade do sistema
Representa os requisitos funcionais do
sistema
Utilidade dos Casos de Uso
Equipe de clientes (validao)
aprovam o que o sistema dever fazer
entendem o que o sistema dever fazer
Equipe de desenvolvedores
Ponto de partida para refinar requisitos de
software.
Podem seguir um desenvolvimento dirigido a
casos de uso.
Designer (projetista): encontrar classes
Testadores: usam como base para casos de
teste
Atores
Exemplos
Constituem as entidades do ambiente do
sistema
So pessoas ou outros subsistemas que
interagem com o sistema em desenvolvimento
Cargos (Empregado, Cliente, Gerente, Almoxarife,
Vendedor, etc);
Organizaes (Empresa Fornecedora, Agncia de
Impostos, Administradora de Cartes, etc);
Outros sistemas (Sistema de Cobrana, Sistema de
Estoque de Produtos, etc).
Equipamentos (Leitora de Cdigo de Barras,
Sensor, etc.)
Atores
Um ator algum ou algum outro sistema que
deve interagir com o sistema em
desenvolvimento
Especializao
possvel definir tipos gerais de atores e
especializ-los usando o relacionamento de
especializao
Encontrando Atores
Podem ser identificados pelas seguintes questes:
Quem usar a funcionalidade principal do sistema (atores
primrios)?
Quem precisar do auxlio do sistema para fazer suas tarefas
dirias?
Quem precisar manter, administrar, conservar o sistema
funcionando (atores secundrios)?
Que dispositivos de hardware o sistema precisa para funcionar?
Com que outros sistemas o sistema precisa interagir?
Quem ou o que tem interesse nos resultados que o sistema
produz?
No considere apenas os usurios que usam o sistema
diretamente, mas todos os outros que precisam dos servios do
sistema
Casos de Uso
Atores so examinados para determinar as
suas necessidades (funcionalidades)
Gerente de Campanha - adiciona um novo cliente
Funcionrio de Contato - Altera um contato do
cliente
Contador - Registra o pagamento do cliente
Casos de Uso
Definio
Uma unidade coerente de funcionalidade
provida por um classificador (um sistema,
subsistema ou classe) manifestado por uma
sequncia de mensagens trocadas entre o
sistema e um ou mais usurios externos
(representados como atores), junto com as
aes executadas pelo sistema.
Casos de Uso
Descrio UC
Pode ser numa forma resumida ou numa
forma mais detalhada na qual a interao
entre o ator e o caso de uso descrita passo
a passo.
Descreve interaes assim como o usurio
v, e no uma definio de processos
internos do sistema ou algum tipo de
especificao de programa. Sob ponto de
vista do ator.
Um documento com o fluxo de eventos
criado para cada caso de uso
Exemplo de descrio contnua
Este caso de uso inicia quando o Cliente chega
ao caixa eletrnico e insere seu carto. O
Sistema requisita a senha do Cliente. Aps o
Cliente fornecer sua senha e esta ser validada,
o Sistema exibe as opes de operaes
possveis. O Cliente opta por realizar um saque.
Ento o Sistema requisita o total a ser sacado.
O Cliente fornece o valor que deseja sacar. O
Sistema fornece a quantia desejada e imprime o
recibo para o Cliente. O Cliente retira a quantia
e o recibo, e o caso de uso termina.
Exemplo de descrio
numerada
1) Cliente insere seu carto no caixa eletrnico.
2) Sistema apresenta solicitao de senha.
3) Cliente digita senha.
4) Sistema valida a senha e exibe menu de operaes
disponveis.
5) Cliente indica que deseja realizar um saque.
6) Sistema requisita o valor da quantia a ser sacada.
7) Cliente fornece o valor da quantia que deseja sacar.
8) Sistema fornece a quantia desejada e imprime o
recibo para o Cliente
9) Cliente retira a quantia e o recibo, e o caso de uso
termina.
Exemplo de descrio tabular
Caso de Uso detalhado
Contedo
Nome
Descrio
Identificador
Importncia
Sumrio
Fluxo Principal
Fluxos
Alternativos
Fluxos de
Exceo
Ps-condies
Ator Primrio
Atores Secundrios
Pr-condies
Regras do Negcio
Histrico
Notas de
Implementao
Exemplo - Descrio Textual
CSU001 Atualizar informaes do
Professor
Caso de Uso detalhado
Dicas para documentar
Comece o nome do caso de uso com um verbo no
infinitivo. O nome deve representar o que o UC faz.
Tente descrever os passos sempre na forma sujeito +
predicado. Ou seja, deixe explcito quem o agente
da ao
No descreva como o sistema realiza internamente
um passo de um caso de uso.
Foque no objetivo desse ator. Exemplos: Registrar
Pedido, Abrir Ordem de Produo, Manter Referncia,
Alugar Filme...
Tente manter a descrio de cada caso de uso no nvel
mais simples possvel...
Diagrama de Caso de Uso
Uma associao entre um ator e um use case indica
que h uma comunicao, possivelmente com envio e
recepo de mensagens
So criados para visualizar as relaes entre os atores
e os Casos de Uso
Permite dar uma viso global e de alto nvel do
sistema.
Exemplo 1
Exemplo 2
Exerccio 1
O sistema para a Locadora de Veculos consiste na
automatizao do processo de locao e
gerenciamento de veculos (areos, terrestres e
martimos), bem como do controle de itens que podem
ser adicionados ao aluguel, tais como combustvel,
seguro (danos materiais) e condutor do veculo. O
sistema deve permitir que consultas sejam realizadas.
Tudo isto deve estar disponvel ao gerente. O sistema
deve emitir diversos tipos de relatrios, possibilitando
um melhor gerenciamento dos aluguis. O
administrador da empresa deve ter acesso a tudo
disponvel ao gerente e aos relatrios. Os usurios
podem se cadastrar no site, realizar consultas a
veculos disponveis, realizar reservas e entrar em
contato com a Locadora.
Os problemas a serem solucionados compreendem a
correta venda de bilhetes, gerao de relatrios de
estatsticas e de receita (total da venda dos bilhetes).
Deve permitir a criao de promoes para
determinados dias e sesses. Deve permitir, para
determinados usurios, a realizao de incluso,
alterao e excluso de preos, filmes em cada sala,
perodo de validade dos preos, horrios de sesses
e outros. O software precisa prover o controle de
permisses para os diversos tipos de usurios
(gerentes, etc). Deve permitir a busca por filmes de
maneira on-line por vrios atributos diferentes, tais
como nome, atores, palavras-chave dentre outros.
Exerccio 2
Encontrando Casos de Uso
Faa as seguintes perguntas para cada ator
Que funes o ator requer do sistema? O que
o ator precisa fazer?
O ator precisa ler, criar, destruir, modificar, ou
armazenar alguns tipos de informaes no
sistema?
O ator tem que ser notificado sobre eventos
no sistema? Ou o ator precisa notificar o
sistema sobre alguma coisa? O que estes
eventos representam em termos de
funcionalidade?
Encontrando Casos de Uso
Faa as seguintes perguntas para cada ator
(cont.)
O trabalho dirio do ator poderia ser
simplificado ou feito com mais eficincia
atravs de novas funes no sistema? Quais?
Sem considerar os atores atuais
Quais entradas/sadas o sistema precisa ? De
onde as entradas vm e para onde as sadas
vo?
Quais so os maiores problemas com a
implementao atual do sistema?
Organizando Casos de Uso
Generalizao
Incluso
Extenso
Caso de Uso
Generalizao
Relaciona um Use Case especializado a um
mais geral . O UC filho:
Herda os atributos, operaes e sequncias de
comportamento dos pais
Pode adicionar e redefinir o comportamento do pai
Pode substituir o pai em qualquer lugar que ele
aparece
Os UCs Checar password e Scan de retina
ambos servem para validar o usurio.
Identificar um use case abstrato Validar usurio
para realizar esta validao.
Caso de Uso
Generalizao
Caso de Uso
Incluso
O use case base incorpora explicitamente o
comportamento de outro use case no local
especificado na base.
O use case includo nunca estar sozinho,
somente ser instanciado de um use case
base que o incluir.
Usado para evitar a descrio do mesmo fluxo
de eventos vrias vezes.
Caso de Uso
Incluso
Caso de Uso
Incluso
Use Case: Sesso de
ATM
Mostre anncio do dia
Include Identificar
Cliente
Include Validar Conta
Imprimir cabealho do
recibo
Log out
UC Incluso: Identificar
Cliente
Pegue o nome do cliente
Include Verificar Identidade
if falha de verificao then
abort a sesso
Else obtenha nmero da
conta do cliente
UC Incluso: Validar Conta
Estabelea conexo com
banco de dados de contas
Obtenha status e limite da
conta
Caso de Uso
Extenso
Usado para:
Para modelar partes opcionais de use
cases
Para modelar cursos alternativos e/ou
complexos que raramente ocorrem (e.g.
Entrega Urgente)
Caso de Uso
Extenso
Use Case Fazer Pedido
Fluxo principal de eventos:
include (Validar usurio).
Receber do usurio os itens
do pedido (set prioridade).
Submeter o pedido para
processamento.
Documentao Associada
O modelo de casos de uso exige do desenvolvedor o
entendimento de como os agentes externos interagem
com o sistema.
MCU corresponde somente aos requisitos funcionais.
Outros tipos de requisitos (desempenho, interface,
segurana, regras do negcio, etc.) tambm devem ser
identificados e modelados.
Esses outros requisitos fazem parte da documentao
associada ao MCU.
Dois itens importantes dessa documentao associada
so o modelo de regras do negcio e os requisitos
de desempenho
Exemplos de Regras de
Negcio
O valor total de um pedido igual soma dos
totais dos itens do pedido acrescido de 10%
de taxa de entrega.
Um professor s pode estar lecionando
disciplinas para as quais esteja habilitado.
Um cliente de uma das agncias do banco
no pode retirar mais do que R$ 1.000 por dia
de sua conta. Aps as 18:00h, esse limite cai
para R$ 100,00.
Os pedidos para um cliente especial devem
ser pagos antecipadamente.
Regras do Negcio
Possvel formato para documentao de uma
regra de negcio no MRN.
Requisitos de Desempenho
Conexo de casos de uso a requisitos de
desempenho.
Modelando o DCU
Em sistemas complexos, representar todos UCs
do sistema em um nico DCU talvez o torne um
tanto ilegvel.
Alternativa: criar vrios diagramas (de acordo
com as necessidades de visualizao) e
agrup-los em pacotes.
Todos os casos de uso para um ator;
Todos os casos de uso a serem implementados em
um ciclo de desenvolvimento.
Todos os casos de uso de uma rea (departamento,
seo) especfica da empresa.
Modelando o DCU
Modelando o Contexto do
Sistema
Identifique os atores que cercam o sistema
? Quais grupos precisam de ajuda do sistema
para executarem suas tarefas
? Quais os grupos necessrios para executar
as funes do sistema
? Quais grupos interagem com hardware
externo ou outros sistemas de software
? Quais grupos executam funes
secundrias de administrao e manuteno
Modelando o Contexto do
Sistema
? Organize os atores que so similares em
uma hierarquia de generalizao /
especializao.
? Use os atores no diagrama de use cases e
especifique os caminhos de comunicao
entre atores e use cases do sistema.
Modelando Requisitos do
Sistema
Estabelea o contexto do sistema atravs da
identificao dos atores que o cercam
Para cada ator, considere o comportamento que eles
esperam e requerem que o sistema produza
D um nome aos comportamentos comuns (Caso de
Uso)
Fatore comportamentos comuns em novos use cases
que sero usados por outros
Fatore comportamento variante em novos use cases
que estendem a fluxo principal de eventos
Modele os use cases, atores e seus relacionamentos
atravs de diagramas de use case
Resumo da Notao
Exerccio 1
O sistema para a Locadora de Veculos consiste na
automatizao do processo de locao e
gerenciamento de veculos (areos, terrestres e
martimos), bem como do controle de itens que podem
ser adicionados ao aluguel, tais como combustvel,
seguro (danos materiais) e condutor do veculo. O
sistema deve permitir que consultas sejam realizadas.
Tudo isto deve estar disponvel ao gerente. O sistema
deve emitir diversos tipos de relatrios, possibilitando
um melhor gerenciamento dos aluguis. O
administrador da empresa deve ter acesso a tudo
disponvel ao gerente e aos relatrios. Os usurios
podem se cadastrar no site, realizar consultas a
veculos disponveis, realizar reservas e entrar em
contato com a Locadora.
Os problemas a serem solucionados compreendem a
correta venda de bilhetes, gerao de relatrios de
estatsticas e de receita (total da venda dos bilhetes).
Deve permitir a criao de promoes para
determinados dias e sesses. Deve permitir, para
determinados usurios, a realizao de incluso,
alterao e excluso de preos, filmes em cada sala,
perodo de validade dos preos, horrios de sesses
e outros. O software precisa prover o controle de
permisses para os diversos tipos de usurios
(gerentes, etc). Deve permitir a busca por filmes de
maneira on-line por vrios atributos diferentes, tais
como nome, atores, palavras-chave dentre outros.
Exerccio 2
Exerccio 1
Construa um modelo de casos de uso para a
seguinte situao fictcia: "Estamos criando
um servio de entregas. Nossos clientes
podem nos requisitar a entrega de volumes.
Alguns volumes so considerados de maior
valor por nossos clientes, e, portanto, eles
querem ter tais volumes segurados durante o
transporte. Contratamos uma companhia de
seguro para segurar volumes de valor".
Exerccio 2
Uma loja de Cds possui discos para venda e
locao. Um cliente pode comprar ou locar uma
quantidade ilimitada de discos. Para locar
obrigatrio que o cliente esteja cadastrado na
loja. A loja possui um funcionrio cuja funo
atender os clientes durante a venda e locao
dos discos. Suas principais tarefas so: conferir
o pagamento efetuado pelos clientes; emitir
recibo de venda(emisso obrigatria) e locao
(emisso obrigatria); ao final do dia, anotar em
uma caderneta o valor de cada venda.
Exerccio 3
O vendedor de uma loja de eletrodomsticos,
ao efetuar uma venda, encaminha o cliente para
o caixa para a realizao do pagamento do
eletrodomstico adquirido. Independentemente
da forma de pagamento, o caixa deve verificar,
se o cliente no consta do SPC. Aps ter
recebido o pagamento do cliente, o caixa deve
emitir a nota fiscal ao consumidor. efetuada a
baixa no estoque ao final do dia. No final do
ms o vendedor deve emitir um relatrio de
vendas realizadas para o gerente da loja .
Exerccio 4
Uma prefeitura municipal, atravs do Secretrio Municipal de
Sade, cadastra todos os mdicos que se dispe a trabalhar no
servio pblico de sade do municpio. A prefeitura possui diversas
unidades de atendimento (hospitais, postos de sade, ambulatrios
mdicos, etc) e o Secretrio Municipal de Sade tambm mantm o
cadastro destas unidades. Os cidados que desejam ter acesso ao
atendimento do sistema pblico do municpio so cadastrados,
pelos funcionrios das unidades de atendimento, previamente ou
no momento de algum atendimento. O cidado pode agendar
consultas mdicas em qualquer unidade de atendimento, atravs
dos funcionrios da unidade de atendimento. Mensalmente, o
Secretrio Municipal de Sade estabelece uma escala de mdicos
para cada unidade de atendimento. A qualquer momento, o
Secretrio Municipal de Sade pode extrair relatrios com
indicadores do funcionamento do sistema. Diariamente, os
funcionrios das unidades de atendimento listam as consultas
mdicas agendadas para cada mdico, para acompanhamento.
Exerccio 5
Uma empresa de organizao de eventos gerencia seus
compromissos da forma descrita a seguir. Os clientes so
cadastrados pelos representantes da empresa, juntamente com o
evento que deseja que seja organizado. Se um cliente j existir no
momento de cadastrar um evento, verificado se seus dados esto
atualizados e, se no estiver, as alteraes de cadastro so
realizadas. Uma vez definido o evento, inicia-se um processo de
divulgao do evento, pelo representante da empresa, aos
potenciais participantes do evento, atravs de mala direta,
utilizando-se um banco de dados. A qualquer momento,o
representante da empresa pode acrescentar nomes neste banco de
dados. O representante da empresa tambm pode emitir relatrios
de providncias a serem tomadas, a medida em que se aproxima o
evento. Aps a realizao do evento, o representante faz o
balano, para sua apurao de custos e lucro.
UML
DIAGRAMA DE CLASSE
Aula de Luiz Eduardo Guarino de Vasconcelos
Diagrama de Classe
Um diagrama de classes serve para modelar o
vocabulrio de um sistema, do ponto de vista
do utilizador/problema ou do
implementador/soluo
Ponto de vista do utilizador/problema na fase
de captura e anlise de requisitos, em paralelo
com a identificao dos casos de utilizao
Vocabulrio do implementador/soluo na fase
de projeto
Construdo e refinado ao longo das vrias
fases do desenvolvimento do software
Objetivos
Tambm serve para:
Especificar colaboraes (no mbito de um caso
de utilizao ou mecanismo)
Especificar esquemas lgicos de bases de dados
Especificar vises (estrutura de dados de
formulrios, relatrios, etc.)
Modelos de objetos de domnio, negcio,
anlise e design
Pacotes
Organiza as classes de objetos em grupos.
Melhorar a organizao do sistema
subsistemas
Estrutura hieraquicamente o projeto
Estrutura fisica dos arquivos do projeto
Nomenclatura
Minsculo
Endereos de web
Pacotes
br.edu.fatec.academico
br.com.uol.internet
org.kernel.drives
Pacotes
br.edu.fatec.academico
graduacao
posgraduacao
Mundo Real x Computacional
No desenvolvimento de software orientado por
objetos, procura-se imitar no computador o
mundo real visto como um conjunto de objetos
que interagem entre si
Muitos objetos computacionais so imagens
de objetos do mundo real
Exemplos de objetos do mundo real:
o Sr. Joo
a aula de ES no dia 11/10/2000 s 11 horas
Objetos
Um objeto algo com fronteiras bem definidas, relevante para o
problema em causa, com estado, modelado por valores de
atributos (tamanho, forma, peso, etc.) e por ligaes que num
dado momento tem com outros objetos
Comportamento
um objeto exibe comportamentos invocveis (por resposta a
chamadas de operaes) ou reativos (por resposta a eventos)
Identidade
no espao: possvel distinguir dois objetos mesmo que tenham
o mesmo estado
no tempo: possvel saber que se trata do mesmo objeto
mesmo que o seu estado mude
Classes
Uma classe um descritor de um conjunto de
objetos que partilham as mesmas
propriedades (semntica, atributos, operaes
e relaes)
Um objeto de uma classe uma instncia da
classe
A extenso de uma classe o conjunto de
instncias da classe
Classes
Em UML, uma classe representada por um
retngulo com o nome da classe
Habitualmente escreve-se o nome da classe
no singular (nome de uma instncia), com a 1
letra em maiscula
Aluno Triangulo
Disciplina
Equacao2Grau
ItemAgenda
Atributos
O estado de um objeto dados por valores de atributos (e
por ligaes que tem com outros objetos)
Todos os objetos de uma classe so caracterizadas pelos
mesmos atributos (ou variveis de instncia)
o mesmo atributo pode ter valores diferentes de objeto
para objeto
Atributos so definidos ao nvel da classe, enquanto que os
valores dos atributos so definidos ao nvel do objeto
Exemplos:
uma pessoa (classe) tem os atributos nome, data de
nascimento e peso
Joo (objeto) uma pessoa com nome Joo Silva, data
de nascimento 18/3/1973 e peso 68 Kg
Atributos
Atributos so listados num compartimento de atributos
(opcional) a seguir ao compartimento com o nome da
classe
Uma classe no deve ter dois atributos com o mesmo
nome
Os nomes dos tipos no esto pr-definidos em UML,
podendo-se usar os da linguagem de implementao
Pessoa
nome: string
altura: int
peso: double = 75
compartimento de atributos
nome do atributo
tipo de dados
valor inicial por default
classe
Exemplo
Nome do atributo em minsculo e a primeira
letra da concatenao de palavra em
maiscula
Expressao2Grau
a: double
b: double
c: double
Triangulo
ladoA: double
ladoB: double
ladoC: double
anguloAB: double
anguloBC: double
anguloCA: double
Atributos estticos
Atributo esttico: tem um nico valor para
todas as instncias (objetos) da classe
valor est definido ao nvel da classe e no ao
nvel das instncias
Sublinha o atributo esttico
Prova
inicio: Date
termino: Date
nota: Real
Operaes (Mtodos)
Comportamento invocvel de objetos
modelado por operaes
uma operao algo que se pode pedir para
fazer a um objeto de uma classe
objetos da mesma classe tm as mesmas
operaes
Operaes so definidos ao nvel da classe,
enquanto que a invocao de uma operao
definida ao nvel do objeto
Operaes (Mtodos)
Princpio do encapsulamento: acesso
e alterao do estado interno do objeto
(valores de atributos e ligaes)
controlado por operaes (Padro
POJO - POCO)
Nas classes que representam objetos
do mundo real mais comum definir
responsabilidades em vez de
operaes
Nome do atributo em minsculo e a
primeira letra da concatenao de
palavra em maiscula
Mtodo Construtor e Destrutor
Pessoa
nome: string
endereco: string
Pessoa()
getNome(): string
setNome (v:string): void
getEndereco(): string
setEndereco(v:string):
void
~Pessoa()
Exemplo
Circulo
centroX: double
centroY: double
raio: double
getCentroX(): double
setCentroX (v:double): void
getCentroY(): double
setCentroY (v:double): void
getRaio(): double
setRaio(v:double): void
area(): double
perimetro(): double
Aluno
nome: string
prova: double
trabalho: double
getNome(): string
setNome (v:string): void
getProva(): double
setProva (v:double): void
getTrabalho(): double
setTrabalho(v:double): void
media(): double
aprovado(): boolean
Mtodos estticos
Operao esttica: no invocada para um
objeto especfico da classe
No tem uma instncia da classe para invocar o
mtodo.
Sublinha o mtodo esttico
Triangulo
ladoA: double
ladoB: double
ladoC: double
hipPitagoras(catA: double, catB: double): double
Visibilidade de atributos e
operaes
Princpio do encapsulamento: esconder todos
os detalhes de implementao que no
interessam aos clientes (utilizadores) da classe
permite alterar representao do estado sem afetar
clientes
permite validar alteraes de estado
Visibilidade
+ (public) : visvel por todos
- (private) : visvel s por operaes da prpria classe
# (protected): visvel por operaes da prpria classe e
descendentes (subclasses)
Exemplo
Circulo
-centroX: double
-centroY: double
-raio: double
+getCentroX(): double
+setCentroX (v:double): void
+getCentroY(): double
+setCentroY (v:double): void
+getRaio(): double
+setRaio(v:double): void
+area(): double
+perimetro(): double
Aluno
-nome: string
-prova: double
-trabalho: double
+getNome(): string
+setNome (v:string): void
+getProva(): double
+setProva (v:double): void
+getTrabalho(): double
+setTrabalho(v:double): void
+media(): double
+aprovado(): boolean
UML
DIAGRAMA DE CLASSE
RELACIONAMENTO
Aula de Luiz Eduardo Guarino de Vasconcelos
Objetivos
Generalizao
Associao
Agregao
Composio
Dependncia
Generalizao
Relao semntica is a ( um / uma)
um aluno uma pessoa
Relao de herana nas propriedades
A subclasse herda as propriedades (atributos,
operaes e relaes) da superclasse, podendo
acrescentar outras
Pessoa
Aluno
generalizao
super-clase
especializao
sub-classe
As 3 facetas da generalizao
Substitutabilidade
onde se espera um objeto da superclasse pode-se passar
um objeto duma subclasse
Herana de interface
a subclasse herda as assinaturas (e significados) das
operaes da superclasse
Herana ou overriding de implementao
a subclasse pode herdar as implementaes das
operaes da superclasse, mas tambm pode ter novas
implementaes de algumas dessas operaes
quando em UML se repete numa subclasse a assinatura
de uma operao da superclasse, quer dizer que tem uma
nova implementao na subclasse
Hierarquia das classes
Na super classe da hierarquia colocam-se as
propriedades que so comuns a todas as suas
subclasses
Evita-se redundncia, promove-se
reutilizao! Poligono
centroX: int
centroY: int
Triangulo
base: int
altura: int
Quadrado
lado: int
Poligono
centroX: int
centroY: int
Triangulo
base: int
altura: int
Quadrado
lado: int
Herana simples / mltipla
Herana Simples quando uma subclasse
possui apenas uma superclasse
Herana Mltipla quando uma subclasse
possui mais de uma superclasse
Pessoa
Aluno Professor
AlunoFuncionario
Aluno Funcionario
simples
mltipla
Classes e operaes abstratas
Classe abstrata: classe que no pode ter instncias
diretas. As instncias somente pelas subclasses
concretas
Operao abstrata: operao com implementao a
definir nas subclasses. Uma classe com operaes
abstratas tem de ser abstrata
Notao : nome em itlico
Poligono
centroX: int
centroY: int
area(): double
Triangulo
base: int
altura: int
area(): double
Quadrado
lado: int
area(): double
Associao
Uma associao uma relao entre objetos das
classes participantes (um objeto de cada classe em
cada ligao)
Essa ligao uma instncia de uma associao
Implementado atravs de uma referncia entre os
objetos relacionados
Pode haver mais do que uma associao (com nomes
diferentes) entre o mesmo par de classes
Papis nos extremos da associao podem ter
indicao de visibilidade (pblica, privada, etc.)
Participante-1 Participante-2
Papel-1
Papel-2
Cardinal-2
Nome da associao
Cardinal-1
Nome da Associao
A indicao do nome opcional
O nome indicado no meio da linha que une
as classes participantes
Pode-se indicar o sentido em que se l o
nome da associao
Empresa Pessoa
Pessoa Carro
empregador empregado
pessoa carros
1
*
Trabalha para
Emprega
comprado
compra
Multiplicidade de Associaes
Acesso a Multiplicidade
Departamento
-nome: string
-sigla: string
+getNome(): string
+setNome (v:string): void
+getSigla(): string
+setSigla (v:string): void
+addFunc(v:Funcionario):bool
+iteratorFunc():Iterator<Funcionario>
+removeFunc(idx:int): Funcionario
+sizeOfFunc(): int
Funcionario
-nome: string
-rg: string
+getNome(): string
+setNome (v:string): void
+getRg(): string
+setRg(v:string): void
+getDepartamento(): Departamento
+setDepartamento(v:Departamento): void
func
1
*
dep
Associao reflexiva
Pode- se associar uma classe com ela prpria
(em papis diferentes)
Pessoa
pai me
filho
filho
0..1
*
*
1
Associaes bidirecionais /
unidirecional
As associaes so classificadas quanto
navegabilidade em:
Bidirecional ambos objetos possuem
referncia.
Unidirecional deve ser armazenada em
uma varivel de instncia na classe de origem
da associao e seu tipo deve ser a classe de
destino.
Classe 1 Classe 2
bidirecional
Classe 3 Classe 4
unidirecional
Exemplos
bidirecional
unidirecional
Aluno
nome: string
endereco: string
Disciplina
nome: string
sigla: string
alunos disciplinas
* *
Cliente
nome: string
endereco: string
Fita
titulo: string
genero: string
clientes fitas
* *
A classe Cliente recebe a Lista de Fitas e a classe Fita no recebe nada
Agregao
Associao com o significado contm ( constitudo por)
/ faz parte de (part of)
Relao de incluso nas instncias das classes
Hierarquias de objetos.
Exemplo:
Casa
Cmodo
Uma casa contm vrios cmodos
Um cmodo faz parte de uma casa
*
1
Quando a Casa for eliminada, os cmodos tambm
devem ser eliminados atravs da classe Casa
Exemplos
bidirecional
unidirecional
Instituto
nome: string
endereco: string
Departamento
nome: string
sigla: string
instituto
departamentos
1
*
Horta
local: string
Legume
nome: string
peso: double
horta
legumes
* *
Quando Instituto for eliminado, os Departamentos tambm devem
ser eliminados atravs da classe Instituto. O mesmo vale para a
relao Horta e Legume abaixo
Composio
Forma mais forte de agregao aplicvel
quando:
existe um forte grau de pertence das partes ao
todo
cada parte s pode fazer parte de um todo
o topo e as partes tm tempo de vida coincidente,
ou, pelo menos, as partes nascem e morrem
dentro de um todo
a eliminao do todo propaga-se para as partes,
em cascata
Notao: losango cheio
A Classe com a agregao cria, acessa e
Exemplos
bidirecional
unidirecional
Carro
placa: string
modelo: string
Motor
serie: int
potencia: double
carro
motor
1 1
Livro
titulo: string
Capitulo
titulo: string
genero: string
livro
capitulos
1
*
Classe Carro cria Motor no construtor, destri Motor no destrutor e
acessa Motor no programa principal via um Mtodo na classe Carro
Dependncia
Relao de uso entre dois elementos (classes,
componentes, etc.), em que uma mudana na
especificao do elemento usado pode afetar o
elemento utilizador
Exemplo tpico: classe1 que depende de outra classe2
porque usa operaes ou definies da classe2
teis para gesto de dependncias
Construtor alterado. Ex.: Cliente s pode existir se
Servidor existir. Assim, Cliente recebe Servidor no
construtor alterado
Cliente Servidor
Exemplos
Para que um Estado exista necessrio que um Pas exista antes,
desta forma, Estado deve receber no construtor a instncia de
Pais.
Funcionario
Departamento
Estado
Pais