Vous êtes sur la page 1sur 22

CAPTULO 5: UML e Java

Introduo Diagramas Exemplos

ao UML de classes

em UML e Java

UML: Unified Modelling Language


Linguagem grfica de modelao Diagramas representam modelo simplificado Ferramenta importante de comunicao

14 de Junho de 2013

Programao Orientada por Objectos

Diagramas em UML

Estticos: De classes

De objectos

Casos de Utilizao Sequncia Colaborao Estado Actividade Implementao


14 de Junho de 2013 Programao Orientada por Objectos Pg ina 3

Diagramas de classes

Representam as classes e as relaes (ou associaes) que existem entre essas classes

Vrios diagramas melhor que apenas um: nfase numa parte do modelo (cada tipo de diagrama d-nos uma viso ou perspectiva do sistema
conforme os dados, funes, actividades, eventos, )

Domnio do problema: conceitos - modelo de anlise Domnio da soluo: classes - modelo de desenho Estticos: as relaes entre as classes no se alteram ao longo da

execuo do programa
14 de Junho de 2013 Programao Orientada por Objectos 4

Classes
Lnguagem natural
Empregado

Classe concreta.

Nome comum: humano UML


Humano

Empregado

Empregado {abstract}

Classe abstracta.

Java
public class Humano { // }
Pg ina 5

14 de Junho de 2013

Programao Orientada por Objectos

Caractersticas de uma classe

Conjunto das operaes e dos atributos de uma classe

Empregado
- nome: String - sexo: Sexo + nome(): String + salrio(): double

Empregado

Atributos

- nome: String - sexo: Sexo

Operaes
Empregado
+ nome(): String + salrio(): double

14 de Junho de 2013

Programao Orientada por Objectos

Caractersticas de uma classe

Visibilidade
+, caractersticas pblicas
(visibilidade ao nvel de todas as classes; qualquer classe lhes pode aceder)

#, caractersticas protegidas
(visibilidade ao nvel de todas as classes descendentes da classe e no mbito do package em que a classe est definida)

-, caractersticas privadas
(visibilidade apenas ao nvel da prpria classe mbito da classe)
14 de Junho de 2013 Programao Orientada por Objectos Pg ina 7

Notas, comentrios e restries


Notas
Empregado
Isto uma nota. Classe representando empregados

Restries
{Isto uma restrio.} Racional

- numerador: int - denominador: int

invariant {denominador 0 mdc(numerador, denominador) = 1}

14 de Junho de 2013

Programao Orientada por Objectos

Operaes
Forma
- posio_: Posio

Construtores. Inspectores. Modificadores.

constructor + Forma(in posio: Posio) query + posio(): Posio {isPolymorphic = false}

+ desenha()
update + movePara(in posio: Posio) + nova(inout entrada: CanalDeEntrada): Forma

14 de Junho de 2013

Programao Orientada por Objectos

Atributos

Especificao
nome: tipo nome [multiplicidade]: tipo nome: tipo = valor_inicial

Multiplicidade
n n..m * n..* um nmero fixo n de valores de n a m valores um nmero arbitrrio de valores pelo menos n valores

14 de Junho de 2013

Programao Orientada por Objectos

Pg ina 10

Atributos
PilhaFixa - nmero_de_itens: int = 0 - nmero_mximo_de_itens: int = 100 - itens [nmero_de_itens]: int

14 de Junho de 2013

Programao Orientada por Objectos

Pg ina 11

Relao de generalizao
Forma

uma Forma pode ser um Crculo, um Rectngulo ou uma FormaComposta

Crculo

Rectngulo

FormaComposta

14 de Junho de 2013

Programao Orientada por Objectos

Pg ina 12

Relao de generalizao: exemplos


Lnguagem natural "Um humano um mamfero.", ou "Qualquer humano um mamfero.". UML
Mamfero

Humano

Java
public class Humano extends Mamfero { // }
Pg ina 13

14 de Junho de 2013

Programao Orientada por Objectos

Relao de generalizao: exemplos


Lnguagem natural
"Um hidroavio um avio e tambm um veculo naval.", ou "Qualquer hidroavio um avio e um veculo naval.".

UML
Avio

VeculoNaval

Hidroavio

Java
public class Hidroavio extends Avio implements VeculoNaval { // }
14 de Junho de 2013 Programao Orientada por Objectos Pg ina 14

Relaes de associao

Agregao
Relao (o todo) composto por um ou mais (partes) Os tempos de vida dos objectos envolvidos podem estar relacionados
(um todo engloba ou constitudo por uma ou mais partes)

Composio
uma agregao mais forte Implica o controlo do tempo de vida de um objecto por outro
(se a parte deixar de existir o todo tambm deixa de existir)

Associao simples
No h conceito de posse Os tempos de vida dos objectos ligados entre si so independentes
14 de Junho de 2013 Programao Orientada por Objectos 15

Associao simples
Empregado
Chefe

Empregado

empregados *

chefe Chefia 0..1

Chefe

14 de Junho de 2013

Programao Orientada por Objectos

16

Associaes e outras

Empregado
1 empregado pode ser (ou no) chefe; 1 chefe tambm, sempre, 1 empregado

- empregado *

Chefia

Chefe

- chefe 0..1

1 empregado pode ter (ou no) 1 chefe; 1 chefe pode chefiar (entre 0, se no tiver subordinados, e) muitos empregados

14 de Junho de 2013

Programao Orientada por Objectos

Pg ina 17

Associao simples
Lnguagem natural
"Qualquer empregado chefiado por no mximo um chefe."

UML
Empregado
ChefiadoPor
- chefe 0..1 Chefe

Java
public abstract class Empregado { // private Chefe chefe; }

14 de Junho de 2013

Programao Orientada por Objectos

Pg ina 18

Agregao

Especificada por losango vazio

Empresa 0..1

- frota *

Veculo

14 de Junho de 2013

Programao Orientada por Objectos

Pg ina 19

Agregao
Lnguagem natural
"Uma empresa possui um nmero arbitrrio de veculos."

UML
Empresa 0..1 - frota *

Veculo

Java
public class Empresa { // private List Veculo; }

14 de Junho de 2013

Programao Orientada por Objectos

20

Composio

Especificada por losango preenchido


Lnguagem natural

"Um humano composto por uma cabea e dois braos."

UML
Humano 1 Brao 2 Cabea

Java
public class Humano { // private Cabea cabea; private Brao brao_esquerdo; private Brao brao_direito; }
14 de Junho de 2013 Programao Orientada por Objectos Pg ina 21

FIM DA MATRIA

14 de Junho de 2013

Programao Orientada por Objectos

22